@toolbox-web/grid-angular 0.12.1 → 0.13.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 +98 -0
- package/fesm2022/toolbox-web-grid-angular-features-export.mjs +16 -1
- package/fesm2022/toolbox-web-grid-angular-features-export.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs +16 -1
- package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-print.mjs +16 -1
- package/fesm2022/toolbox-web-grid-angular-features-print.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-selection.mjs +35 -1
- package/fesm2022/toolbox-web-grid-angular-features-selection.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs +63 -5
- package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular.mjs +899 -7
- package/fesm2022/toolbox-web-grid-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/types/toolbox-web-grid-angular-features-undo-redo.d.ts +24 -4
- package/types/toolbox-web-grid-angular-features-undo-redo.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular.d.ts +563 -9
- package/types/toolbox-web-grid-angular.d.ts.map +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Type, EnvironmentInjector, ApplicationRef, ViewContainerRef, InjectionToken, EnvironmentProviders, Signal, TemplateRef, EventEmitter, OnInit, OnDestroy, AfterContentInit } from '@angular/core';
|
|
3
|
-
import { GridConfig as GridConfig$1, ColumnConfig as ColumnConfig$1, FrameworkAdapter, TypeDefault as TypeDefault$1, ColumnViewRenderer, ColumnEditorSpec, GridIcons, DataGridElement, ExpandCollapseAnimation, CellClickDetail, RowClickDetail, CellActivateDetail, CellChangeDetail, SortChangeDetail, ColumnResizeDetail, GridColumnState } from '@toolbox-web/grid';
|
|
3
|
+
import { GridConfig as GridConfig$1, ColumnConfig as ColumnConfig$1, FrameworkAdapter, TypeDefault as TypeDefault$1, ColumnViewRenderer, ColumnEditorSpec, GridIcons, DataGridElement, ExpandCollapseAnimation, FitMode, CellClickDetail, RowClickDetail, CellActivateDetail, CellChangeDetail, SortChangeDetail, ColumnResizeDetail, GridColumnState } from '@toolbox-web/grid';
|
|
4
4
|
import { FilterPanelRenderer, FilterPanelParams } from '@toolbox-web/grid/plugins/filtering';
|
|
5
|
-
import { AbstractControl,
|
|
5
|
+
import { AbstractControl, ControlValueAccessor, FormGroup, FormArray } from '@angular/forms';
|
|
6
6
|
import { EditingConfig, ChangedRowsResetDetail } from '@toolbox-web/grid/plugins/editing';
|
|
7
7
|
import { SelectionConfig, ClipboardConfig, ContextMenuConfig, MultiSortConfig, FilterConfig, ReorderConfig, VisibilityConfig, GroupingColumnsConfig, ColumnVirtualizationConfig, RowReorderConfig, GroupingRowsConfig, PinnedRowsConfig, TreeConfig, MasterDetailConfig, ResponsivePluginConfig, UndoRedoConfig, ExportConfig, PrintConfig, PivotConfig, ServerSideConfig, FilterChangeDetail, ColumnMoveDetail, ColumnVisibilityDetail, SelectionChangeDetail, RowMoveDetail, GroupToggleDetail, TreeExpandDetail, DetailExpandDetail, ResponsiveChangeDetail, CopyDetail, PasteDetail, UndoRedoDetail, ExportCompleteDetail, PrintStartDetail, PrintCompleteDetail } from '@toolbox-web/grid/all';
|
|
8
8
|
|
|
@@ -989,6 +989,99 @@ declare function createPluginFromFeature<TConfig = unknown>(name: FeatureName, c
|
|
|
989
989
|
*/
|
|
990
990
|
declare function clearFeatureRegistry(): void;
|
|
991
991
|
|
|
992
|
+
/**
|
|
993
|
+
* Base class for Angular filter panel components.
|
|
994
|
+
*
|
|
995
|
+
* Provides a ready-made `params` input and common lifecycle helpers
|
|
996
|
+
* (`applyAndClose`, `clearAndClose`) so consumers only need to implement
|
|
997
|
+
* their filter logic in `applyFilter()`.
|
|
998
|
+
*
|
|
999
|
+
* ## Usage
|
|
1000
|
+
*
|
|
1001
|
+
* ```typescript
|
|
1002
|
+
* import { Component } from '@angular/core';
|
|
1003
|
+
* import { BaseFilterPanel } from '@toolbox-web/grid-angular';
|
|
1004
|
+
*
|
|
1005
|
+
* @Component({
|
|
1006
|
+
* selector: 'app-text-filter',
|
|
1007
|
+
* template: `
|
|
1008
|
+
* <input #input (keydown.enter)="applyAndClose()" />
|
|
1009
|
+
* <button (click)="applyAndClose()">Apply</button>
|
|
1010
|
+
* <button (click)="clearAndClose()">Clear</button>
|
|
1011
|
+
* `
|
|
1012
|
+
* })
|
|
1013
|
+
* export class TextFilterComponent extends BaseFilterPanel {
|
|
1014
|
+
* @ViewChild('input') input!: ElementRef<HTMLInputElement>;
|
|
1015
|
+
*
|
|
1016
|
+
* applyFilter(): void {
|
|
1017
|
+
* this.params().applyTextFilter('contains', this.input.nativeElement.value);
|
|
1018
|
+
* }
|
|
1019
|
+
* }
|
|
1020
|
+
* ```
|
|
1021
|
+
*
|
|
1022
|
+
* ## Template Syntax
|
|
1023
|
+
*
|
|
1024
|
+
* The grid's filtering plugin will mount this component and provide `params`
|
|
1025
|
+
* automatically. No manual wiring is required:
|
|
1026
|
+
*
|
|
1027
|
+
* ```typescript
|
|
1028
|
+
* gridConfig = {
|
|
1029
|
+
* columns: [
|
|
1030
|
+
* { field: 'name', filterable: true, filterPanel: TextFilterComponent },
|
|
1031
|
+
* ],
|
|
1032
|
+
* };
|
|
1033
|
+
* ```
|
|
1034
|
+
*
|
|
1035
|
+
* @typeParam TRow - The row data type (available via `params().column`)
|
|
1036
|
+
*/
|
|
1037
|
+
declare abstract class BaseFilterPanel implements FilterPanel {
|
|
1038
|
+
/**
|
|
1039
|
+
* Filter panel parameters injected by the grid's filtering plugin.
|
|
1040
|
+
*
|
|
1041
|
+
* Provides access to:
|
|
1042
|
+
* - `field` — the column field name
|
|
1043
|
+
* - `column` — full column configuration
|
|
1044
|
+
* - `uniqueValues` — distinct values in the column
|
|
1045
|
+
* - `excludedValues` — currently excluded values (set filter)
|
|
1046
|
+
* - `searchText` — current search text
|
|
1047
|
+
* - `applySetFilter(excluded)` — apply a set-based (include/exclude) filter
|
|
1048
|
+
* - `applyTextFilter(operator, value, valueTo?)` — apply a text/number filter
|
|
1049
|
+
* - `clearFilter()` — clear the filter for this column
|
|
1050
|
+
* - `closePanel()` — close the filter panel
|
|
1051
|
+
*/
|
|
1052
|
+
readonly params: _angular_core.InputSignal<FilterPanelParams>;
|
|
1053
|
+
/**
|
|
1054
|
+
* Implement this to apply your filter logic.
|
|
1055
|
+
*
|
|
1056
|
+
* Called by {@link applyAndClose} before closing the panel.
|
|
1057
|
+
* Use `this.params()` to access the filter API.
|
|
1058
|
+
*
|
|
1059
|
+
* @example
|
|
1060
|
+
* ```typescript
|
|
1061
|
+
* applyFilter(): void {
|
|
1062
|
+
* this.params().applyTextFilter('contains', this.searchText);
|
|
1063
|
+
* }
|
|
1064
|
+
* ```
|
|
1065
|
+
*/
|
|
1066
|
+
abstract applyFilter(): void;
|
|
1067
|
+
/**
|
|
1068
|
+
* Apply the filter then close the panel.
|
|
1069
|
+
*
|
|
1070
|
+
* Calls {@link applyFilter} followed by `params().closePanel()`.
|
|
1071
|
+
* Bind this to your "Apply" button or Enter key handler.
|
|
1072
|
+
*/
|
|
1073
|
+
applyAndClose(): void;
|
|
1074
|
+
/**
|
|
1075
|
+
* Clear the filter then close the panel.
|
|
1076
|
+
*
|
|
1077
|
+
* Calls `params().clearFilter()` followed by `params().closePanel()`.
|
|
1078
|
+
* Bind this to your "Clear" / "Reset" button.
|
|
1079
|
+
*/
|
|
1080
|
+
clearAndClose(): void;
|
|
1081
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseFilterPanel, never>;
|
|
1082
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseFilterPanel, never, never, { "params": { "alias": "params"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
992
1085
|
/**
|
|
993
1086
|
* Base class for grid cell editors.
|
|
994
1087
|
*
|
|
@@ -1160,6 +1253,329 @@ declare abstract class BaseGridEditor<TRow = unknown, TValue = unknown> {
|
|
|
1160
1253
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseGridEditor<any, any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "row": { "alias": "row"; "required": false; "isSignal": true; }; "column": { "alias": "column"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; }, { "commit": "commit"; "cancel": "cancel"; }, never, never, true, never>;
|
|
1161
1254
|
}
|
|
1162
1255
|
|
|
1256
|
+
/**
|
|
1257
|
+
* Base class for grid editors that also work as Angular form controls.
|
|
1258
|
+
*
|
|
1259
|
+
* Combines `BaseGridEditor` with `ControlValueAccessor` so the same component
|
|
1260
|
+
* can be used inside a `<tbw-grid>` **and** in a standalone `<form>`.
|
|
1261
|
+
*
|
|
1262
|
+
* ## What it provides
|
|
1263
|
+
*
|
|
1264
|
+
* | Member | Purpose |
|
|
1265
|
+
* |--------|---------|
|
|
1266
|
+
* | `cvaValue` | Signal holding the value written by the form control |
|
|
1267
|
+
* | `disabledState` | Signal tracking `setDisabledState` calls |
|
|
1268
|
+
* | `displayValue` | Computed that prefers grid value (`currentValue`) and falls back to `cvaValue` |
|
|
1269
|
+
* | `commitBoth(v)` | Commits via both CVA `onChange` and grid `commitValue` |
|
|
1270
|
+
* | `writeValue` / `registerOn*` / `setDisabledState` | Full CVA implementation |
|
|
1271
|
+
*
|
|
1272
|
+
* ## Usage
|
|
1273
|
+
*
|
|
1274
|
+
* ```typescript
|
|
1275
|
+
* import { Component, forwardRef } from '@angular/core';
|
|
1276
|
+
* import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
1277
|
+
* import { BaseGridEditorCVA } from '@toolbox-web/grid-angular';
|
|
1278
|
+
*
|
|
1279
|
+
* @Component({
|
|
1280
|
+
* selector: 'app-date-picker',
|
|
1281
|
+
* providers: [{
|
|
1282
|
+
* provide: NG_VALUE_ACCESSOR,
|
|
1283
|
+
* useExisting: forwardRef(() => DatePickerComponent),
|
|
1284
|
+
* multi: true,
|
|
1285
|
+
* }],
|
|
1286
|
+
* template: `
|
|
1287
|
+
* <input
|
|
1288
|
+
* type="date"
|
|
1289
|
+
* [value]="displayValue()"
|
|
1290
|
+
* [disabled]="disabledState()"
|
|
1291
|
+
* (change)="commitBoth($event.target.value)"
|
|
1292
|
+
* (keydown.escape)="cancelEdit()"
|
|
1293
|
+
* />
|
|
1294
|
+
* `
|
|
1295
|
+
* })
|
|
1296
|
+
* export class DatePickerComponent extends BaseGridEditorCVA<MyRow, string> {}
|
|
1297
|
+
* ```
|
|
1298
|
+
*
|
|
1299
|
+
* > **Note:** Subclasses must still provide `NG_VALUE_ACCESSOR` themselves
|
|
1300
|
+
* > because `forwardRef(() => ConcreteClass)` must reference the concrete
|
|
1301
|
+
* > component — this is an Angular limitation.
|
|
1302
|
+
*
|
|
1303
|
+
* @typeParam TRow - The row data type
|
|
1304
|
+
* @typeParam TValue - The cell/control value type
|
|
1305
|
+
*/
|
|
1306
|
+
declare abstract class BaseGridEditorCVA<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> implements ControlValueAccessor {
|
|
1307
|
+
/** Internal onChange callback registered by the form control. */
|
|
1308
|
+
private _onChange;
|
|
1309
|
+
/** Internal onTouched callback registered by the form control. */
|
|
1310
|
+
private _onTouched;
|
|
1311
|
+
/**
|
|
1312
|
+
* Signal holding the value written by the form control via `writeValue()`.
|
|
1313
|
+
* Updated when the form control pushes a new value (e.g. `patchValue`, `setValue`).
|
|
1314
|
+
*/
|
|
1315
|
+
protected readonly cvaValue: _angular_core.WritableSignal<TValue | null>;
|
|
1316
|
+
/**
|
|
1317
|
+
* Signal tracking the disabled state set by the form control.
|
|
1318
|
+
* Updated when `setDisabledState()` is called by Angular's forms module.
|
|
1319
|
+
*/
|
|
1320
|
+
readonly disabledState: _angular_core.WritableSignal<boolean>;
|
|
1321
|
+
/**
|
|
1322
|
+
* Resolved display value.
|
|
1323
|
+
*
|
|
1324
|
+
* Prefers `currentValue()` (grid context — from `control.value` or `value` input)
|
|
1325
|
+
* and falls back to `cvaValue()` (standalone form context — from `writeValue`).
|
|
1326
|
+
*
|
|
1327
|
+
* Use this in your template instead of reading `currentValue()` directly
|
|
1328
|
+
* so the component works in both grid and standalone form contexts.
|
|
1329
|
+
*/
|
|
1330
|
+
readonly displayValue: _angular_core.Signal<TValue | null>;
|
|
1331
|
+
/**
|
|
1332
|
+
* Called by Angular forms when the form control value changes programmatically.
|
|
1333
|
+
*/
|
|
1334
|
+
writeValue(value: TValue | null): void;
|
|
1335
|
+
/**
|
|
1336
|
+
* Called by Angular forms to register a change callback.
|
|
1337
|
+
*/
|
|
1338
|
+
registerOnChange(fn: (value: TValue | null) => void): void;
|
|
1339
|
+
/**
|
|
1340
|
+
* Called by Angular forms to register a touched callback.
|
|
1341
|
+
*/
|
|
1342
|
+
registerOnTouched(fn: () => void): void;
|
|
1343
|
+
/**
|
|
1344
|
+
* Called by Angular forms to set the disabled state.
|
|
1345
|
+
*/
|
|
1346
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1347
|
+
/**
|
|
1348
|
+
* Commit a value through both the CVA (form control) and the grid.
|
|
1349
|
+
*
|
|
1350
|
+
* - Calls the CVA `onChange` callback (updates the form control)
|
|
1351
|
+
* - Marks the control as touched
|
|
1352
|
+
* - Calls `commitValue()` (emits grid commit event + DOM `CustomEvent`)
|
|
1353
|
+
*
|
|
1354
|
+
* Use this instead of `commitValue()` when your editor doubles as a form control.
|
|
1355
|
+
*
|
|
1356
|
+
* @param value - The new value to commit
|
|
1357
|
+
*/
|
|
1358
|
+
protected commitBoth(value: TValue | null): void;
|
|
1359
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseGridEditorCVA<any, any>, never>;
|
|
1360
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseGridEditorCVA<any, any>, never, never, {}, {}, never, never, true, never>;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* Position of the overlay panel relative to its anchor cell.
|
|
1365
|
+
*
|
|
1366
|
+
* - `'below'` — panel appears below the cell, left-aligned (default)
|
|
1367
|
+
* - `'above'` — panel appears above the cell, left-aligned
|
|
1368
|
+
* - `'below-right'` — panel appears below the cell, right-aligned
|
|
1369
|
+
* - `'over-left'` — panel covers the cell, left-aligned
|
|
1370
|
+
*/
|
|
1371
|
+
type OverlayPosition = 'below' | 'above' | 'below-right' | 'over-left';
|
|
1372
|
+
/**
|
|
1373
|
+
* Base class for grid editors that display a floating overlay panel.
|
|
1374
|
+
*
|
|
1375
|
+
* Provides infrastructure for:
|
|
1376
|
+
* - **Overlay positioning** — CSS Anchor Positioning with JS fallback
|
|
1377
|
+
* - **Focus gating** — in row editing mode, the panel only opens for the focused cell
|
|
1378
|
+
* - **Click-outside detection** — closes the panel when clicking outside
|
|
1379
|
+
* - **MutationObserver** — detects cell focus changes (row editing mode)
|
|
1380
|
+
* - **Escape handling** — closes the panel and returns focus to the inline input
|
|
1381
|
+
* - **Synthetic Tab dispatch** — advances grid focus after overlay close
|
|
1382
|
+
* - **Automatic teardown** — removes the panel from `<body>` and cleans up listeners
|
|
1383
|
+
*
|
|
1384
|
+
* ## Usage
|
|
1385
|
+
*
|
|
1386
|
+
* ```typescript
|
|
1387
|
+
* import { Component, ViewChild, ElementRef } from '@angular/core';
|
|
1388
|
+
* import { BaseOverlayEditor } from '@toolbox-web/grid-angular';
|
|
1389
|
+
*
|
|
1390
|
+
* @Component({
|
|
1391
|
+
* selector: 'app-date-editor',
|
|
1392
|
+
* template: `
|
|
1393
|
+
* <input
|
|
1394
|
+
* #inlineInput
|
|
1395
|
+
* readonly
|
|
1396
|
+
* [value]="currentValue()"
|
|
1397
|
+
* (click)="onInlineClick()"
|
|
1398
|
+
* (keydown)="onInlineKeydown($event)"
|
|
1399
|
+
* />
|
|
1400
|
+
* <div #panel class="tbw-overlay-panel" style="width: 280px;">
|
|
1401
|
+
* <!-- your date picker UI here -->
|
|
1402
|
+
* <div class="actions">
|
|
1403
|
+
* <button (click)="selectAndClose(selectedDate)">OK</button>
|
|
1404
|
+
* <button (click)="hideOverlay()">Cancel</button>
|
|
1405
|
+
* </div>
|
|
1406
|
+
* </div>
|
|
1407
|
+
* `
|
|
1408
|
+
* })
|
|
1409
|
+
* export class DateEditorComponent extends BaseOverlayEditor<MyRow, string> {
|
|
1410
|
+
* @ViewChild('panel') panelRef!: ElementRef<HTMLElement>;
|
|
1411
|
+
* @ViewChild('inlineInput') inputRef!: ElementRef<HTMLInputElement>;
|
|
1412
|
+
*
|
|
1413
|
+
* protected override overlayPosition = 'below' as const;
|
|
1414
|
+
*
|
|
1415
|
+
* ngAfterViewInit(): void {
|
|
1416
|
+
* this.initOverlay(this.panelRef.nativeElement);
|
|
1417
|
+
* if (this.isCellFocused()) this.showOverlay();
|
|
1418
|
+
* }
|
|
1419
|
+
*
|
|
1420
|
+
* protected getInlineInput(): HTMLInputElement | null {
|
|
1421
|
+
* return this.inputRef?.nativeElement ?? null;
|
|
1422
|
+
* }
|
|
1423
|
+
*
|
|
1424
|
+
* protected onOverlayOutsideClick(): void {
|
|
1425
|
+
* this.hideOverlay();
|
|
1426
|
+
* }
|
|
1427
|
+
*
|
|
1428
|
+
* selectAndClose(date: string): void {
|
|
1429
|
+
* this.commitValue(date);
|
|
1430
|
+
* this.hideOverlay();
|
|
1431
|
+
* }
|
|
1432
|
+
* }
|
|
1433
|
+
* ```
|
|
1434
|
+
*
|
|
1435
|
+
* @typeParam TRow - The row data type
|
|
1436
|
+
* @typeParam TValue - The cell value type
|
|
1437
|
+
*/
|
|
1438
|
+
declare abstract class BaseOverlayEditor<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> {
|
|
1439
|
+
private readonly _elementRef;
|
|
1440
|
+
private readonly _overlayDestroyRef;
|
|
1441
|
+
/**
|
|
1442
|
+
* Position of the overlay panel relative to the anchor cell.
|
|
1443
|
+
* Override in subclasses to change the default position.
|
|
1444
|
+
*
|
|
1445
|
+
* @default 'below'
|
|
1446
|
+
*/
|
|
1447
|
+
protected overlayPosition: OverlayPosition;
|
|
1448
|
+
/** The overlay panel element (set via `initOverlay()`). */
|
|
1449
|
+
private _panel;
|
|
1450
|
+
/** Whether the overlay is currently visible. */
|
|
1451
|
+
private _isOpen;
|
|
1452
|
+
/** Unique anchor ID for CSS Anchor Positioning. */
|
|
1453
|
+
private _anchorId;
|
|
1454
|
+
/** Whether the browser supports CSS Anchor Positioning. */
|
|
1455
|
+
private _supportsAnchor;
|
|
1456
|
+
/** AbortController for all overlay-related listeners. */
|
|
1457
|
+
private _abortCtrl;
|
|
1458
|
+
/** MutationObserver watching cell focus class changes. */
|
|
1459
|
+
private _focusObserver;
|
|
1460
|
+
constructor();
|
|
1461
|
+
/**
|
|
1462
|
+
* Initialise the overlay with the panel element.
|
|
1463
|
+
*
|
|
1464
|
+
* Call this in `ngAfterViewInit` with your `@ViewChild` panel reference.
|
|
1465
|
+
* The panel is moved to `<body>` and hidden until {@link showOverlay} is called.
|
|
1466
|
+
*
|
|
1467
|
+
* @param panel - The overlay panel DOM element
|
|
1468
|
+
*/
|
|
1469
|
+
protected initOverlay(panel: HTMLElement): void;
|
|
1470
|
+
/**
|
|
1471
|
+
* Show the overlay panel.
|
|
1472
|
+
*
|
|
1473
|
+
* If CSS Anchor Positioning is not supported, falls back to JS-based
|
|
1474
|
+
* positioning using `getBoundingClientRect()`.
|
|
1475
|
+
*/
|
|
1476
|
+
protected showOverlay(): void;
|
|
1477
|
+
/**
|
|
1478
|
+
* Hide the overlay panel.
|
|
1479
|
+
*
|
|
1480
|
+
* @param suppressTabAdvance - When `true`, skip synthetic Tab dispatch
|
|
1481
|
+
* (useful when hiding is triggered by an external focus change).
|
|
1482
|
+
*/
|
|
1483
|
+
protected hideOverlay(suppressTabAdvance?: boolean): void;
|
|
1484
|
+
/**
|
|
1485
|
+
* Close and immediately re-open the overlay.
|
|
1486
|
+
* Useful after the panel content changes size and needs repositioning.
|
|
1487
|
+
*/
|
|
1488
|
+
protected reopenOverlay(): void;
|
|
1489
|
+
/**
|
|
1490
|
+
* Remove the overlay from the DOM and clean up all listeners.
|
|
1491
|
+
*
|
|
1492
|
+
* Called automatically on `DestroyRef.onDestroy`. Can also be called
|
|
1493
|
+
* manually if the editor needs early cleanup.
|
|
1494
|
+
*/
|
|
1495
|
+
protected teardownOverlay(): void;
|
|
1496
|
+
/**
|
|
1497
|
+
* Override in `edit-close` handler to also hide the overlay.
|
|
1498
|
+
* This is called automatically by `BaseGridEditor` when the grid
|
|
1499
|
+
* ends the editing session.
|
|
1500
|
+
*/
|
|
1501
|
+
protected onEditClose(): void;
|
|
1502
|
+
/**
|
|
1503
|
+
* Keydown handler for the inline readonly input.
|
|
1504
|
+
*
|
|
1505
|
+
* - **Enter / Space / ArrowDown / F2** → open overlay
|
|
1506
|
+
* - **Escape** → calls {@link handleEscape}
|
|
1507
|
+
*
|
|
1508
|
+
* Bind this to `(keydown)` on your inline input element.
|
|
1509
|
+
*/
|
|
1510
|
+
onInlineKeydown(event: KeyboardEvent): void;
|
|
1511
|
+
/**
|
|
1512
|
+
* Click handler for the inline input.
|
|
1513
|
+
* Opens the overlay and calls {@link onOverlayOpened}.
|
|
1514
|
+
*
|
|
1515
|
+
* Bind this to `(click)` on your inline input element.
|
|
1516
|
+
*/
|
|
1517
|
+
onInlineClick(): void;
|
|
1518
|
+
/**
|
|
1519
|
+
* Handle Escape key press.
|
|
1520
|
+
*
|
|
1521
|
+
* If the overlay is open, closes it and returns focus to the inline input.
|
|
1522
|
+
* If the overlay is already closed, cancels the edit entirely.
|
|
1523
|
+
*/
|
|
1524
|
+
protected handleEscape(event: Event): void;
|
|
1525
|
+
/**
|
|
1526
|
+
* Dispatch a synthetic Tab key event to advance grid focus.
|
|
1527
|
+
*
|
|
1528
|
+
* Call this after committing a value and closing the overlay so the
|
|
1529
|
+
* grid moves focus to the next cell.
|
|
1530
|
+
*
|
|
1531
|
+
* @param backward - When `true`, dispatch Shift+Tab to move backwards.
|
|
1532
|
+
*/
|
|
1533
|
+
protected advanceGridFocus(backward?: boolean): void;
|
|
1534
|
+
/**
|
|
1535
|
+
* Return the inline input element, if any.
|
|
1536
|
+
*
|
|
1537
|
+
* Used by overlay infrastructure to return focus after hiding.
|
|
1538
|
+
* Return `null` if there is no inline input.
|
|
1539
|
+
*/
|
|
1540
|
+
protected abstract getInlineInput(): HTMLInputElement | null;
|
|
1541
|
+
/**
|
|
1542
|
+
* Called when a pointerdown event occurs outside the overlay panel
|
|
1543
|
+
* and outside the editor's host element.
|
|
1544
|
+
*
|
|
1545
|
+
* Typically, subclasses call `hideOverlay()` here.
|
|
1546
|
+
*/
|
|
1547
|
+
protected abstract onOverlayOutsideClick(): void;
|
|
1548
|
+
/**
|
|
1549
|
+
* Called after the overlay is shown.
|
|
1550
|
+
*
|
|
1551
|
+
* Override to focus an element inside the panel, start animations, etc.
|
|
1552
|
+
* Default implementation is a no-op.
|
|
1553
|
+
*/
|
|
1554
|
+
protected onOverlayOpened(): void;
|
|
1555
|
+
/** Find the parent cell element for this editor. */
|
|
1556
|
+
private _getCell;
|
|
1557
|
+
/**
|
|
1558
|
+
* JS fallback positioning for browsers without CSS Anchor Positioning.
|
|
1559
|
+
* Uses `getBoundingClientRect()` with viewport overflow detection.
|
|
1560
|
+
*/
|
|
1561
|
+
private _positionWithJs;
|
|
1562
|
+
/**
|
|
1563
|
+
* Document pointerdown handler for click-outside detection.
|
|
1564
|
+
* Fires `onOverlayOutsideClick()` if the click is outside the panel
|
|
1565
|
+
* and outside the editor's host element.
|
|
1566
|
+
*/
|
|
1567
|
+
private _onDocumentPointerDown;
|
|
1568
|
+
/**
|
|
1569
|
+
* Set up a MutationObserver on the parent cell to watch for
|
|
1570
|
+
* `cell-focus` class changes. This handles row-editing mode where
|
|
1571
|
+
* all editors exist simultaneously but only the focused cell's
|
|
1572
|
+
* editor should have its overlay visible.
|
|
1573
|
+
*/
|
|
1574
|
+
private _setupFocusObserver;
|
|
1575
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseOverlayEditor<any, any>, never>;
|
|
1576
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseOverlayEditor<any, any>, never, never, {}, {}, never, never, true, never>;
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1163
1579
|
/**
|
|
1164
1580
|
* Context object passed to the cell editor template.
|
|
1165
1581
|
* Contains the cell value, row data, column configuration, and commit/cancel functions.
|
|
@@ -1350,6 +1766,39 @@ declare class GridColumnView {
|
|
|
1350
1766
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridColumnView, "tbw-grid-column-view", never, {}, {}, ["template"], never, true, never>;
|
|
1351
1767
|
}
|
|
1352
1768
|
|
|
1769
|
+
/**
|
|
1770
|
+
* Directive that registers `<tbw-grid-column>` as a known Angular element.
|
|
1771
|
+
*
|
|
1772
|
+
* This directive exists so that Angular's template compiler recognises
|
|
1773
|
+
* `<tbw-grid-column>` without requiring `CUSTOM_ELEMENTS_SCHEMA`.
|
|
1774
|
+
* The underlying web component reads its attributes (`field`, `header`,
|
|
1775
|
+
* `type`, `width`, etc.) directly from the DOM, so no `@Input()` forwarding
|
|
1776
|
+
* is needed — Angular's standard property/attribute binding handles it.
|
|
1777
|
+
*
|
|
1778
|
+
* ## Usage
|
|
1779
|
+
*
|
|
1780
|
+
* ```typescript
|
|
1781
|
+
* import { Component } from '@angular/core';
|
|
1782
|
+
* import { Grid, TbwGridColumn, TbwRenderer } from '@toolbox-web/grid-angular';
|
|
1783
|
+
*
|
|
1784
|
+
* @Component({
|
|
1785
|
+
* imports: [Grid, TbwGridColumn, TbwRenderer],
|
|
1786
|
+
* template: `
|
|
1787
|
+
* <tbw-grid [rows]="rows" [gridConfig]="config">
|
|
1788
|
+
* <tbw-grid-column field="status">
|
|
1789
|
+
* <app-status-badge *tbwRenderer="let value" [value]="value" />
|
|
1790
|
+
* </tbw-grid-column>
|
|
1791
|
+
* </tbw-grid>
|
|
1792
|
+
* `
|
|
1793
|
+
* })
|
|
1794
|
+
* export class MyComponent { }
|
|
1795
|
+
* ```
|
|
1796
|
+
*/
|
|
1797
|
+
declare class TbwGridColumn {
|
|
1798
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridColumn, never>;
|
|
1799
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TbwGridColumn, "tbw-grid-column", never, {}, {}, never, never, true, never>;
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1353
1802
|
/**
|
|
1354
1803
|
* Context object passed to the detail renderer template.
|
|
1355
1804
|
* Contains the row data for the expanded detail view.
|
|
@@ -1571,6 +2020,36 @@ declare class GridFormArray implements OnInit, OnDestroy {
|
|
|
1571
2020
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridFormArray, "tbw-grid[formArray]", never, { "formArray": { "alias": "formArray"; "required": true; "isSignal": true; }; "syncValidation": { "alias": "syncValidation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1572
2021
|
}
|
|
1573
2022
|
|
|
2023
|
+
/**
|
|
2024
|
+
* Directive that registers `<tbw-grid-header>` as a known Angular element.
|
|
2025
|
+
*
|
|
2026
|
+
* This directive exists so that Angular's template compiler recognises
|
|
2027
|
+
* `<tbw-grid-header>` without requiring `CUSTOM_ELEMENTS_SCHEMA`.
|
|
2028
|
+
* The grid's `config-manager` reads attributes like `title` directly
|
|
2029
|
+
* from the DOM element.
|
|
2030
|
+
*
|
|
2031
|
+
* ## Usage
|
|
2032
|
+
*
|
|
2033
|
+
* ```typescript
|
|
2034
|
+
* import { Component } from '@angular/core';
|
|
2035
|
+
* import { Grid, TbwGridHeader } from '@toolbox-web/grid-angular';
|
|
2036
|
+
*
|
|
2037
|
+
* @Component({
|
|
2038
|
+
* imports: [Grid, TbwGridHeader],
|
|
2039
|
+
* template: `
|
|
2040
|
+
* <tbw-grid [rows]="rows" [gridConfig]="config">
|
|
2041
|
+
* <tbw-grid-header title="My Grid Title"></tbw-grid-header>
|
|
2042
|
+
* </tbw-grid>
|
|
2043
|
+
* `
|
|
2044
|
+
* })
|
|
2045
|
+
* export class MyComponent { }
|
|
2046
|
+
* ```
|
|
2047
|
+
*/
|
|
2048
|
+
declare class TbwGridHeader {
|
|
2049
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridHeader, never>;
|
|
2050
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TbwGridHeader, "tbw-grid-header", never, {}, {}, never, never, true, never>;
|
|
2051
|
+
}
|
|
2052
|
+
|
|
1574
2053
|
/**
|
|
1575
2054
|
* Gets the FormArrayContext from a grid element, if present.
|
|
1576
2055
|
* @internal
|
|
@@ -1836,6 +2315,37 @@ declare class GridResponsiveCard<TRow = unknown> {
|
|
|
1836
2315
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridResponsiveCard<any>, "tbw-grid-responsive-card", never, {}, {}, ["template"], never, true, never>;
|
|
1837
2316
|
}
|
|
1838
2317
|
|
|
2318
|
+
/**
|
|
2319
|
+
* Directive that registers `<tbw-grid-tool-buttons>` as a known Angular element.
|
|
2320
|
+
*
|
|
2321
|
+
* This directive exists so that Angular's template compiler recognises
|
|
2322
|
+
* `<tbw-grid-tool-buttons>` without requiring `CUSTOM_ELEMENTS_SCHEMA`.
|
|
2323
|
+
* The grid's shell reads toolbar buttons directly from the DOM.
|
|
2324
|
+
*
|
|
2325
|
+
* ## Usage
|
|
2326
|
+
*
|
|
2327
|
+
* ```typescript
|
|
2328
|
+
* import { Component } from '@angular/core';
|
|
2329
|
+
* import { Grid, TbwGridToolButtons } from '@toolbox-web/grid-angular';
|
|
2330
|
+
*
|
|
2331
|
+
* @Component({
|
|
2332
|
+
* imports: [Grid, TbwGridToolButtons],
|
|
2333
|
+
* template: `
|
|
2334
|
+
* <tbw-grid [rows]="rows" [gridConfig]="config">
|
|
2335
|
+
* <tbw-grid-tool-buttons>
|
|
2336
|
+
* <button (click)="doSomething()">Action</button>
|
|
2337
|
+
* </tbw-grid-tool-buttons>
|
|
2338
|
+
* </tbw-grid>
|
|
2339
|
+
* `
|
|
2340
|
+
* })
|
|
2341
|
+
* export class MyComponent { }
|
|
2342
|
+
* ```
|
|
2343
|
+
*/
|
|
2344
|
+
declare class TbwGridToolButtons {
|
|
2345
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridToolButtons, never>;
|
|
2346
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TbwGridToolButtons, "tbw-grid-tool-buttons", never, {}, {}, never, never, true, never>;
|
|
2347
|
+
}
|
|
2348
|
+
|
|
1839
2349
|
/**
|
|
1840
2350
|
* Context object passed to the tool panel template.
|
|
1841
2351
|
* Provides access to grid-related information for the panel content.
|
|
@@ -1962,13 +2472,12 @@ interface RowCommitEvent<TRow = unknown> {
|
|
|
1962
2472
|
* ## Usage
|
|
1963
2473
|
*
|
|
1964
2474
|
* ```typescript
|
|
1965
|
-
* import { Component
|
|
2475
|
+
* import { Component } from '@angular/core';
|
|
1966
2476
|
* import { Grid } from '@toolbox-web/grid-angular';
|
|
1967
2477
|
*
|
|
1968
2478
|
* @Component({
|
|
1969
2479
|
* selector: 'app-root',
|
|
1970
2480
|
* imports: [Grid],
|
|
1971
|
-
* schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
1972
2481
|
* template: `
|
|
1973
2482
|
* <tbw-grid [rows]="rows" [gridConfig]="config" [customStyles]="myStyles">
|
|
1974
2483
|
* <!-- column templates -->
|
|
@@ -2103,6 +2612,51 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
|
|
|
2103
2612
|
* ```
|
|
2104
2613
|
*/
|
|
2105
2614
|
loading: _angular_core.InputSignal<boolean | undefined>;
|
|
2615
|
+
/**
|
|
2616
|
+
* The data rows to display in the grid.
|
|
2617
|
+
*
|
|
2618
|
+
* Accepts an array of data objects. Each object represents one row.
|
|
2619
|
+
* The grid reads property values for each column's `field` from these objects.
|
|
2620
|
+
*
|
|
2621
|
+
* @example
|
|
2622
|
+
* ```html
|
|
2623
|
+
* <tbw-grid [rows]="employees()" [gridConfig]="config" />
|
|
2624
|
+
* ```
|
|
2625
|
+
*/
|
|
2626
|
+
rows: _angular_core.InputSignal<any[] | undefined>;
|
|
2627
|
+
/**
|
|
2628
|
+
* Column configuration array.
|
|
2629
|
+
*
|
|
2630
|
+
* Shorthand for setting columns without wrapping them in a full `gridConfig`.
|
|
2631
|
+
* If both `columns` and `gridConfig.columns` are set, `columns` takes precedence
|
|
2632
|
+
* (see configuration precedence system).
|
|
2633
|
+
*
|
|
2634
|
+
* @example
|
|
2635
|
+
* ```html
|
|
2636
|
+
* <tbw-grid [rows]="data" [columns]="[
|
|
2637
|
+
* { field: 'id', header: 'ID', pinned: 'left', width: 80 },
|
|
2638
|
+
* { field: 'name', header: 'Name' },
|
|
2639
|
+
* { field: 'email', header: 'Email' }
|
|
2640
|
+
* ]" />
|
|
2641
|
+
* ```
|
|
2642
|
+
*/
|
|
2643
|
+
columns: _angular_core.InputSignal<ColumnConfig<any>[] | undefined>;
|
|
2644
|
+
/**
|
|
2645
|
+
* Column sizing strategy.
|
|
2646
|
+
*
|
|
2647
|
+
* - `'stretch'` (default) — columns stretch to fill available width
|
|
2648
|
+
* - `'fixed'` — columns use their declared widths; enables horizontal scrolling
|
|
2649
|
+
* - `'auto-fit'` — columns auto-size to content, then stretch to fill
|
|
2650
|
+
*
|
|
2651
|
+
* @default 'stretch'
|
|
2652
|
+
*
|
|
2653
|
+
* @example
|
|
2654
|
+
* ```html
|
|
2655
|
+
* <tbw-grid [rows]="data" fitMode="fixed" />
|
|
2656
|
+
* <tbw-grid [rows]="data" [fitMode]="dynamicMode()" />
|
|
2657
|
+
* ```
|
|
2658
|
+
*/
|
|
2659
|
+
fitMode: _angular_core.InputSignal<FitMode | undefined>;
|
|
2106
2660
|
/**
|
|
2107
2661
|
* Grid configuration object with optional Angular-specific extensions.
|
|
2108
2662
|
*
|
|
@@ -2314,9 +2868,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
|
|
|
2314
2868
|
* @example
|
|
2315
2869
|
* ```html
|
|
2316
2870
|
* <tbw-grid [pinnedColumns]="true" [columns]="[
|
|
2317
|
-
* { field: 'id',
|
|
2871
|
+
* { field: 'id', pinned: 'left' },
|
|
2318
2872
|
* { field: 'name' },
|
|
2319
|
-
* { field: 'actions',
|
|
2873
|
+
* { field: 'actions', pinned: 'right' }
|
|
2320
2874
|
* ]" />
|
|
2321
2875
|
* ```
|
|
2322
2876
|
*/
|
|
@@ -2781,7 +3335,7 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
|
|
|
2781
3335
|
private configureResponsiveCard;
|
|
2782
3336
|
ngOnDestroy(): void;
|
|
2783
3337
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Grid, never>;
|
|
2784
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Grid, "tbw-grid", never, { "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "gridConfig": { "alias": "gridConfig"; "required": false; "isSignal": true; }; "angularConfig": { "alias": "angularConfig"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "editing": { "alias": "editing"; "required": false; "isSignal": true; }; "clipboard": { "alias": "clipboard"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "filtering": { "alias": "filtering"; "required": false; "isSignal": true; }; "reorder": { "alias": "reorder"; "required": false; "isSignal": true; }; "visibility": { "alias": "visibility"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "groupingColumns": { "alias": "groupingColumns"; "required": false; "isSignal": true; }; "columnVirtualization": { "alias": "columnVirtualization"; "required": false; "isSignal": true; }; "rowReorder": { "alias": "rowReorder"; "required": false; "isSignal": true; }; "groupingRows": { "alias": "groupingRows"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "undoRedo": { "alias": "undoRedo"; "required": false; "isSignal": true; }; "exportFeature": { "alias": "export"; "required": false; "isSignal": true; }; "print": { "alias": "print"; "required": false; "isSignal": true; }; "pivot": { "alias": "pivot"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; }, { "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"; }, never, never, true, never>;
|
|
3338
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Grid, "tbw-grid", never, { "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "fitMode": { "alias": "fitMode"; "required": false; "isSignal": true; }; "gridConfig": { "alias": "gridConfig"; "required": false; "isSignal": true; }; "angularConfig": { "alias": "angularConfig"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "editing": { "alias": "editing"; "required": false; "isSignal": true; }; "clipboard": { "alias": "clipboard"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "filtering": { "alias": "filtering"; "required": false; "isSignal": true; }; "reorder": { "alias": "reorder"; "required": false; "isSignal": true; }; "visibility": { "alias": "visibility"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "groupingColumns": { "alias": "groupingColumns"; "required": false; "isSignal": true; }; "columnVirtualization": { "alias": "columnVirtualization"; "required": false; "isSignal": true; }; "rowReorder": { "alias": "rowReorder"; "required": false; "isSignal": true; }; "groupingRows": { "alias": "groupingRows"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "undoRedo": { "alias": "undoRedo"; "required": false; "isSignal": true; }; "exportFeature": { "alias": "export"; "required": false; "isSignal": true; }; "print": { "alias": "print"; "required": false; "isSignal": true; }; "pivot": { "alias": "pivot"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; }, { "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"; }, never, never, true, never>;
|
|
2785
3339
|
}
|
|
2786
3340
|
|
|
2787
3341
|
/**
|
|
@@ -2950,6 +3504,6 @@ declare class TbwEditor implements OnDestroy {
|
|
|
2950
3504
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TbwEditor, "[tbwEditor]", never, {}, {}, never, never, true, never>;
|
|
2951
3505
|
}
|
|
2952
3506
|
|
|
2953
|
-
export { AngularGridAdapter, BaseGridEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridTypeRegistry, TbwEditor as TbwCellEditor, TbwRenderer as TbwCellView, TbwEditor, TbwRenderer, clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getFormArrayContext, getLazyFormContext, getRegisteredFeatures, injectGrid, isComponentClass, isFeatureRegistered, provideGridIcons, provideGridTypeDefaults, registerFeature };
|
|
2954
|
-
export type { AngularCellEditor, AngularCellRenderer, AngularColumnConfig, AngularGridConfig, AngularTypeDefault, CellCommitEvent, CellEditor, CellRenderer, ColumnConfig, ExportMethods, FeatureName, FilterPanel, FormArrayContext, GridCellContext, GridConfig, GridDetailContext, GridEditorContext, GridResponsiveCardContext, GridToolPanelContext, InjectGridReturn, LazyFormFactory, PluginFactory, RowCommitEvent, RowFormChangeEvent, SelectionMethods, StructuralCellContext, StructuralEditorContext, TypeDefault, TypeDefaultRegistration };
|
|
3507
|
+
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, clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getFormArrayContext, getLazyFormContext, getRegisteredFeatures, injectGrid, isComponentClass, isFeatureRegistered, provideGridIcons, provideGridTypeDefaults, registerFeature };
|
|
3508
|
+
export type { AngularCellEditor, AngularCellRenderer, AngularColumnConfig, AngularGridConfig, AngularTypeDefault, CellCommitEvent, CellEditor, CellRenderer, ColumnConfig, ExportMethods, FeatureName, FilterPanel, FormArrayContext, GridCellContext, GridConfig, GridDetailContext, GridEditorContext, GridResponsiveCardContext, GridToolPanelContext, InjectGridReturn, LazyFormFactory, OverlayPosition, PluginFactory, RowCommitEvent, RowFormChangeEvent, SelectionMethods, StructuralCellContext, StructuralEditorContext, TypeDefault, TypeDefaultRegistration };
|
|
2955
3509
|
//# sourceMappingURL=toolbox-web-grid-angular.d.ts.map
|