@cauca-911/datagrid 22.1.5 → 22.2.1

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/package.json CHANGED
@@ -1,12 +1,26 @@
1
1
  {
2
2
  "name": "@cauca-911/datagrid",
3
- "version": "22.1.5",
3
+ "version": "22.2.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.1.0",
6
6
  "@angular/core": ">=22.1.0",
7
7
  "@angular/material": ">=22.1.0",
8
8
  "@cauca-911/material": ">=22.0.0",
9
- "odata-data-source": ">=16.4.0"
9
+ "odata-data-source": ">=16.4.0",
10
+ "exceljs": ">=4.4.0",
11
+ "jspdf": ">=4.2.0",
12
+ "jspdf-autotable": ">=5.0.0"
13
+ },
14
+ "peerDependenciesMeta": {
15
+ "exceljs": {
16
+ "optional": true
17
+ },
18
+ "jspdf": {
19
+ "optional": true
20
+ },
21
+ "jspdf-autotable": {
22
+ "optional": true
23
+ }
10
24
  },
11
25
  "dependencies": {
12
26
  "tslib": ">=2.6.2"
@@ -24,6 +24,7 @@ declare class DataGridRowDropEvent {
24
24
  });
25
25
  }
26
26
 
27
+ type ExportCell = string | number | boolean | Date | null;
27
28
  declare abstract class BaseGridColumnComponent implements OnDestroy, OnInit {
28
29
  table: MatTable<unknown>;
29
30
  readonly prop: _angular_core.InputSignal<string>;
@@ -32,6 +33,7 @@ declare abstract class BaseGridColumnComponent implements OnDestroy, OnInit {
32
33
  readonly isInColumnChooser: _angular_core.InputSignal<boolean>;
33
34
  readonly width: _angular_core.InputSignal<string>;
34
35
  readonly showToolTip: _angular_core.InputSignal<boolean>;
36
+ readonly exportable: _angular_core.InputSignal<boolean>;
35
37
  ariaHidden: true;
36
38
  classes: 'column-template cdk-visually-hidden';
37
39
  columnDef: MatColumnDef;
@@ -43,10 +45,14 @@ declare abstract class BaseGridColumnComponent implements OnDestroy, OnInit {
43
45
  ngOnInit(): void;
44
46
  ngOnDestroy(): void;
45
47
  capitalize(value: string): string;
48
+ getExportValue(row: Record<string, unknown>): ExportCell;
49
+ getExportHeader(): string;
46
50
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseGridColumnComponent, [{ optional: true; }]>;
47
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseGridColumnComponent, "ng-component", never, { "prop": { "alias": "prop"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "isInColumnChooser": { "alias": "isInColumnChooser"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showToolTip": { "alias": "showToolTip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
51
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseGridColumnComponent, "ng-component", never, { "prop": { "alias": "prop"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "isInColumnChooser": { "alias": "isInColumnChooser"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showToolTip": { "alias": "showToolTip"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
48
52
  }
49
53
 
54
+ type GridExportFormat = 'excel' | 'pdf';
55
+
50
56
  declare class DataGridHeaderComponent implements OnInit, OnDestroy {
51
57
  filterControl: FormControl<string>;
52
58
  /** Written from the debounced valueChanges subscription and by OdataGridComponent when it
@@ -55,12 +61,14 @@ declare class DataGridHeaderComponent implements OnInit, OnDestroy {
55
61
  readonly showClearButton: _angular_core.WritableSignal<boolean>;
56
62
  readonly showAddButton: _angular_core.InputSignal<boolean>;
57
63
  readonly showRefreshButton: _angular_core.InputSignal<boolean>;
64
+ readonly showExportButton: _angular_core.InputSignal<boolean>;
58
65
  readonly addButtonLabel: _angular_core.InputSignal<string>;
59
66
  readonly searchPlaceholder: _angular_core.InputSignal<string>;
60
67
  readonly disableAddButton: _angular_core.InputSignal<boolean>;
61
68
  readonly filterChange: _angular_core.OutputEmitterRef<string>;
62
69
  readonly addButtonClick: _angular_core.OutputEmitterRef<void>;
63
70
  readonly refreshRequest: _angular_core.OutputEmitterRef<void>;
71
+ readonly exportRequest: _angular_core.OutputEmitterRef<GridExportFormat>;
64
72
  protected _onDestroy: Subject<void>;
65
73
  ngOnInit(): void;
66
74
  ngOnDestroy(): void;
@@ -68,7 +76,7 @@ declare class DataGridHeaderComponent implements OnInit, OnDestroy {
68
76
  clearSearchValue(): void;
69
77
  onAddButtonClick(): void;
70
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataGridHeaderComponent, never>;
71
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataGridHeaderComponent, "cauca-data-grid-header", never, { "showAddButton": { "alias": "showAddButton"; "required": false; "isSignal": true; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; "isSignal": true; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "disableAddButton": { "alias": "disableAddButton"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; "addButtonClick": "addButtonClick"; "refreshRequest": "refreshRequest"; }, never, ["[filterRow]"], true, never>;
79
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataGridHeaderComponent, "cauca-data-grid-header", never, { "showAddButton": { "alias": "showAddButton"; "required": false; "isSignal": true; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; "isSignal": true; }; "showExportButton": { "alias": "showExportButton"; "required": false; "isSignal": true; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "disableAddButton": { "alias": "disableAddButton"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; "addButtonClick": "addButtonClick"; "refreshRequest": "refreshRequest"; "exportRequest": "exportRequest"; }, never, ["[filterRow]"], true, never>;
72
80
  }
73
81
 
74
82
  declare enum Density {
@@ -109,6 +117,9 @@ declare abstract class BaseDataGridComponent implements AfterContentInit {
109
117
  readonly showPaginator: _angular_core.InputSignal<boolean>;
110
118
  readonly hidePageSize: _angular_core.InputSignal<boolean>;
111
119
  readonly showExpandButton: _angular_core.InputSignal<boolean>;
120
+ readonly allowExport: _angular_core.InputSignal<boolean>;
121
+ readonly exportFileName: _angular_core.InputSignal<string>;
122
+ readonly exportRows: _angular_core.InputSignal<() => Promise<unknown[]>>;
112
123
  readonly addButtonClick: _angular_core.OutputEmitterRef<void>;
113
124
  expandedElement: _angular_core.WritableSignal<any>;
114
125
  header: DataGridHeaderComponent;
@@ -129,6 +140,7 @@ declare abstract class BaseDataGridComponent implements AfterContentInit {
129
140
  readonly allDisplayedColumns: _angular_core.WritableSignal<string[]>;
130
141
  preference: Preference;
131
142
  protected sort: MatSort;
143
+ private readonly exportService;
132
144
  get density(): typeof Density;
133
145
  constructor(translateService: TranslateService, preferenceService: BasePreferenceService);
134
146
  ngAfterContentInit(): void;
@@ -137,9 +149,11 @@ declare abstract class BaseDataGridComponent implements AfterContentInit {
137
149
  renderRows(): void;
138
150
  onDensityChanged(density: Density): void;
139
151
  abstract getData(): unknown[];
152
+ protected abstract getExportSourceRows(): unknown[];
140
153
  protected abstract setUpFilterPredicate(): void;
141
154
  protected abstract setUpSort(sort: MatSort): void;
142
155
  protected abstract forceReloadFilter(): void;
156
+ protected onExportRequest(format: GridExportFormat): Promise<void>;
143
157
  /** The set of columns to render, before the user's own column selection is applied. */
144
158
  protected computeDisplayedColumns(): string[];
145
159
  protected setUpPaginator(_paginator: MatPaginator, _showPaginator: boolean): void;
@@ -147,7 +161,7 @@ declare abstract class BaseDataGridComponent implements AfterContentInit {
147
161
  protected applyColumns(): void;
148
162
  private removeMandatoryColumns;
149
163
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseDataGridComponent, never>;
150
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseDataGridComponent, "ng-component", never, { "resourceName": { "alias": "resourceName"; "required": true; "isSignal": true; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; "isSignal": true; }; "showAddButton": { "alias": "showAddButton"; "required": false; "isSignal": true; }; "disableAddButton": { "alias": "disableAddButton"; "required": false; "isSignal": true; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchableColumns": { "alias": "searchableColumns"; "required": false; "isSignal": true; }; "showTableOptions": { "alias": "showTableOptions"; "required": false; "isSignal": true; }; "showColumnViewer": { "alias": "showColumnViewer"; "required": false; "isSignal": true; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; "showExpandButton": { "alias": "showExpandButton"; "required": false; "isSignal": true; }; }, { "addButtonClick": "addButtonClick"; }, ["headerRowDef", "footerRowDef", "noDataRow", "regularColumns", "columnDefs", "rowDefs"], never, true, never>;
164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseDataGridComponent, "ng-component", never, { "resourceName": { "alias": "resourceName"; "required": true; "isSignal": true; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; "isSignal": true; }; "showAddButton": { "alias": "showAddButton"; "required": false; "isSignal": true; }; "disableAddButton": { "alias": "disableAddButton"; "required": false; "isSignal": true; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchableColumns": { "alias": "searchableColumns"; "required": false; "isSignal": true; }; "showTableOptions": { "alias": "showTableOptions"; "required": false; "isSignal": true; }; "showColumnViewer": { "alias": "showColumnViewer"; "required": false; "isSignal": true; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; "showExpandButton": { "alias": "showExpandButton"; "required": false; "isSignal": true; }; "allowExport": { "alias": "allowExport"; "required": false; "isSignal": true; }; "exportFileName": { "alias": "exportFileName"; "required": false; "isSignal": true; }; "exportRows": { "alias": "exportRows"; "required": false; "isSignal": true; }; }, { "addButtonClick": "addButtonClick"; }, ["headerRowDef", "footerRowDef", "noDataRow", "regularColumns", "columnDefs", "rowDefs"], never, true, never>;
151
165
  }
152
166
 
153
167
  declare class DataGridComponent extends BaseDataGridComponent implements AfterContentInit, AfterViewInit {
@@ -175,6 +189,7 @@ declare class DataGridComponent extends BaseDataGridComponent implements AfterCo
175
189
  getFilteredData(): unknown[];
176
190
  refreshDisplayedColumns(columns: string[]): void;
177
191
  rowDropped(event: CdkDragDrop<unknown>): void;
192
+ protected getExportSourceRows(): unknown[];
178
193
  protected setUpPaginator(paginator: MatPaginator, showPaginator: boolean): void;
179
194
  protected computeDisplayedColumns(): string[];
180
195
  protected onColumnsChanged(columns: string[]): void;
@@ -267,9 +282,11 @@ declare class OdataGridComponent extends BaseDataGridComponent implements OnDest
267
282
  refreshFilter(): void;
268
283
  setUpFilterPredicate(): void;
269
284
  setUpSort(sort: MatSort): void;
285
+ protected getExportSourceRows(): unknown[];
270
286
  protected forceReloadFilter(): void;
271
287
  protected computeDisplayedColumns(): string[];
272
288
  protected onColumnsChanged(columns: string[]): void;
289
+ private applyFilterValue;
273
290
  /** `expand` is a grid-owned column, not part of the caller's list. */
274
291
  private decorateColumns;
275
292
  private canPersistState;
@@ -329,6 +346,23 @@ declare class GridStateRestorationService {
329
346
  */
330
347
  declare function provideGridStateRestoration(): EnvironmentProviders;
331
348
 
349
+ interface ExportMatrix {
350
+ headers: string[];
351
+ rows: ExportCell[][];
352
+ }
353
+ declare const GRID_OWNED_COLUMNS: readonly string[];
354
+ declare function buildExportMatrix(columnOrder: readonly string[], columns: readonly BaseGridColumnComponent[], rows: readonly Record<string, unknown>[]): ExportMatrix;
355
+
356
+ declare class GridExportService {
357
+ private readonly locale;
358
+ toExcel(matrix: ExportMatrix, fileName: string): Promise<void>;
359
+ toPdf(matrix: ExportMatrix, fileName: string): Promise<void>;
360
+ private stringify;
361
+ private download;
362
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridExportService, never>;
363
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<GridExportService>;
364
+ }
365
+
332
366
  declare class ColorDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit {
333
367
  readonly odata: OdataGridComponent;
334
368
  readonly grid: DataGridComponent;
@@ -427,6 +461,7 @@ declare class DateGridColumnComponent extends BaseGridColumnComponent implements
427
461
  maxDate: _angular_core.InputSignal<Date>;
428
462
  minDate: _angular_core.InputSignal<Date>;
429
463
  constructor(odata: OdataGridComponent, grid: DataGridComponent);
464
+ getExportValue(row: Record<string, unknown>): ExportCell;
430
465
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateGridColumnComponent, [{ optional: true; }, { optional: true; }]>;
431
466
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateGridColumnComponent, "cauca-date-grid-column", never, { "showWithTime": { "alias": "showWithTime"; "required": false; "isSignal": true; }; "showSecond": { "alias": "showSecond"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
432
467
  }
@@ -450,6 +485,7 @@ declare class SortableDataGridColumnComponent extends BaseGridColumnComponent im
450
485
  isInitialized: boolean;
451
486
  private readonly grid;
452
487
  constructor(odata: OdataGridComponent, grid: DataGridComponent);
488
+ getExportValue(row: Record<string, unknown>): ExportCell;
453
489
  calculateSummary(): string;
454
490
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SortableDataGridColumnComponent, [{ optional: true; }, { optional: true; }]>;
455
491
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SortableDataGridColumnComponent, "cauca-sortable-data-grid-column", never, { "summaryType": { "alias": "summaryType"; "required": false; "isSignal": true; }; "summaryLabel": { "alias": "summaryLabel"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "sortProp": { "alias": "sortProp"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -459,7 +495,9 @@ declare class TranslationGridColumnComponent extends BaseGridColumnComponent imp
459
495
  readonly odata: OdataGridComponent;
460
496
  readonly grid: DataGridComponent;
461
497
  readonly prefix: _angular_core.InputSignal<string>;
498
+ private readonly translateService;
462
499
  constructor(odata: OdataGridComponent, grid: DataGridComponent);
500
+ getExportValue(row: Record<string, unknown>): ExportCell;
463
501
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranslationGridColumnComponent, [{ optional: true; }, { optional: true; }]>;
464
502
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TranslationGridColumnComponent, "cauca-translation-grid-column", never, { "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
465
503
  }
@@ -468,6 +506,7 @@ declare class TimeSpanDataGridColumnComponent extends BaseGridColumnComponent {
468
506
  readonly odata: OdataGridComponent;
469
507
  readonly grid: DataGridComponent;
470
508
  constructor(odata: OdataGridComponent, grid: DataGridComponent);
509
+ getExportValue(row: Record<string, unknown>): ExportCell;
471
510
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeSpanDataGridColumnComponent, [{ optional: true; }, { optional: true; }]>;
472
511
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeSpanDataGridColumnComponent, "cauca-time-span-data-grid-column", never, {}, {}, never, never, true, never>;
473
512
  }
@@ -479,5 +518,5 @@ interface CaucaGridOptions {
479
518
  declare const PREFERENCE_SERVICE_TOKEN: InjectionToken<BasePreferenceService>;
480
519
  declare function provideCaucaGrid(options?: CaucaGridOptions): (Provider | EnvironmentProviders);
481
520
 
482
- export { BaseGridColumnComponent, ColorDataGridColumnComponent, DataGridCheckColumnComponent, DataGridColumnComponent, DataGridCommandIconColumnComponent, DataGridCommandsColumnComponent, DataGridComponent, DataGridHeaderComponent, DataGridIconColumnComponent, DataGridMenuColumnComponent, DataGridRowDropEvent, DateGridColumnComponent, Density, GridConfiguration, GridStateRestorationService, OdataGridComponent, OdataListingService, PREFERENCE_SERVICE_TOKEN, Preference, SortableDataGridCheckColumnComponent, SortableDataGridColumnComponent, TimeSpanDataGridColumnComponent, TranslationGridColumnComponent, emptyQueryParams, fromQueryParams, paramsEqual, provideCaucaGrid, provideGridStateRestoration, toQueryParams };
483
- export type { BasePreferenceService, CaucaGridOptions, GridUrlState, Paginator, Sort };
521
+ export { BaseGridColumnComponent, ColorDataGridColumnComponent, DataGridCheckColumnComponent, DataGridColumnComponent, DataGridCommandIconColumnComponent, DataGridCommandsColumnComponent, DataGridComponent, DataGridHeaderComponent, DataGridIconColumnComponent, DataGridMenuColumnComponent, DataGridRowDropEvent, DateGridColumnComponent, Density, GRID_OWNED_COLUMNS, GridConfiguration, GridExportService, GridStateRestorationService, OdataGridComponent, OdataListingService, PREFERENCE_SERVICE_TOKEN, Preference, SortableDataGridCheckColumnComponent, SortableDataGridColumnComponent, TimeSpanDataGridColumnComponent, TranslationGridColumnComponent, buildExportMatrix, emptyQueryParams, fromQueryParams, paramsEqual, provideCaucaGrid, provideGridStateRestoration, toQueryParams };
522
+ export type { BasePreferenceService, CaucaGridOptions, ExportCell, ExportMatrix, GridUrlState, Paginator, Sort };