ng-firebase-table-kxp 1.2.0 → 1.2.2

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.
Files changed (48) hide show
  1. package/{fesm2020 → fesm2022}/ng-firebase-table-kxp.mjs +2762 -2744
  2. package/fesm2022/ng-firebase-table-kxp.mjs.map +1 -0
  3. package/index.d.ts +665 -5
  4. package/package.json +3 -11
  5. package/esm2020/lib/components/table/table.component.mjs +0 -710
  6. package/esm2020/lib/components/table-tabs/table-tabs.component.mjs +0 -73
  7. package/esm2020/lib/components/table-tooltip/table-tooltip.component.mjs +0 -34
  8. package/esm2020/lib/ng-firebase-table-kxp.component.mjs +0 -11
  9. package/esm2020/lib/ng-firebase-table-kxp.module.mjs +0 -98
  10. package/esm2020/lib/ng-firebase-table-kxp.service.mjs +0 -14
  11. package/esm2020/lib/services/filter.service.mjs +0 -416
  12. package/esm2020/lib/services/pagination.service.mjs +0 -115
  13. package/esm2020/lib/services/table.service.mjs +0 -1140
  14. package/esm2020/lib/services/tooltip.service.mjs +0 -141
  15. package/esm2020/lib/types/Table.mjs +0 -9
  16. package/esm2020/lib/utils/table.utils.mjs +0 -75
  17. package/esm2020/ng-firebase-table-kxp.mjs +0 -5
  18. package/esm2020/public-api.mjs +0 -22
  19. package/fesm2015/ng-firebase-table-kxp.mjs +0 -2869
  20. package/fesm2015/ng-firebase-table-kxp.mjs.map +0 -1
  21. package/fesm2020/ng-firebase-table-kxp.mjs.map +0 -1
  22. package/lib/components/table/table.component.d.ts +0 -132
  23. package/lib/components/table/table.component.d.ts.map +0 -1
  24. package/lib/components/table-tabs/table-tabs.component.d.ts +0 -34
  25. package/lib/components/table-tabs/table-tabs.component.d.ts.map +0 -1
  26. package/lib/components/table-tooltip/table-tooltip.component.d.ts +0 -18
  27. package/lib/components/table-tooltip/table-tooltip.component.d.ts.map +0 -1
  28. package/lib/ng-firebase-table-kxp.component.d.ts +0 -5
  29. package/lib/ng-firebase-table-kxp.component.d.ts.map +0 -1
  30. package/lib/ng-firebase-table-kxp.module.d.ts +0 -23
  31. package/lib/ng-firebase-table-kxp.module.d.ts.map +0 -1
  32. package/lib/ng-firebase-table-kxp.service.d.ts +0 -6
  33. package/lib/ng-firebase-table-kxp.service.d.ts.map +0 -1
  34. package/lib/services/filter.service.d.ts +0 -88
  35. package/lib/services/filter.service.d.ts.map +0 -1
  36. package/lib/services/pagination.service.d.ts +0 -34
  37. package/lib/services/pagination.service.d.ts.map +0 -1
  38. package/lib/services/table.service.d.ts +0 -80
  39. package/lib/services/table.service.d.ts.map +0 -1
  40. package/lib/services/tooltip.service.d.ts +0 -73
  41. package/lib/services/tooltip.service.d.ts.map +0 -1
  42. package/lib/types/Table.d.ts +0 -162
  43. package/lib/types/Table.d.ts.map +0 -1
  44. package/lib/utils/table.utils.d.ts +0 -25
  45. package/lib/utils/table.utils.d.ts.map +0 -1
  46. package/ng-firebase-table-kxp.d.ts.map +0 -1
  47. package/public-api.d.ts +0 -12
  48. package/public-api.d.ts.map +0 -1
package/index.d.ts CHANGED
@@ -1,5 +1,665 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="ng-firebase-table-kxp" />
5
- export * from './public-api';
1
+ import * as i0 from '@angular/core';
2
+ import { PipeTransform, OnInit, AfterViewInit, OnChanges, OnDestroy, ElementRef, ChangeDetectorRef, SimpleChanges, EventEmitter } from '@angular/core';
3
+ import { CollectionReference, DocumentReference, QueryDocumentSnapshot, AngularFirestore } from '@angular/fire/compat/firestore';
4
+ import firebase from 'firebase/compat';
5
+ import { OrderByDirection } from 'firebase/firestore';
6
+ import * as i9 from '@angular/material/paginator';
7
+ import { PageEvent, MatPaginator } from '@angular/material/paginator';
8
+ import * as i10 from '@angular/material/sort';
9
+ import { MatSort } from '@angular/material/sort';
10
+ import * as i8 from '@angular/material/table';
11
+ import { MatTableDataSource } from '@angular/material/table';
12
+ import * as i7 from '@angular/router';
13
+ import { Router } from '@angular/router';
14
+ import firebase$1 from 'firebase/compat/app';
15
+ import * as i17 from '@angular/material/dialog';
16
+ import { MatDialog } from '@angular/material/dialog';
17
+ import { ToastrService } from 'ngx-toastr';
18
+ import * as i6 from '@angular/forms';
19
+ import { ValidatorFn, FormGroup, FormArray, FormControl } from '@angular/forms';
20
+ import { BehaviorSubject } from 'rxjs';
21
+ import * as i5 from '@angular/common';
22
+ import * as i11 from '@angular/material/form-field';
23
+ import * as i12 from '@angular/material/input';
24
+ import * as i13 from '@angular/material/select';
25
+ import * as i14 from '@angular/material/tooltip';
26
+ import * as i15 from '@angular/material/progress-spinner';
27
+ import * as i16 from '@angular/material/icon';
28
+
29
+ declare class NgFirebaseTableKxpComponent {
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgFirebaseTableKxpComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgFirebaseTableKxpComponent, "lib-ng-firebase-table-kxp", never, {}, {}, never, never, false, never>;
32
+ }
33
+
34
+ import WhereFilterOp$1 = firebase.firestore.WhereFilterOp;
35
+
36
+ declare const TABLE_DEFAULTS: {
37
+ SORT_FIELD: string;
38
+ SORT_ORDER: "desc";
39
+ PAGE_SIZE: number;
40
+ DEBOUNCE_TIME_MS: number;
41
+ DEFAULT_BG_COLOR: string;
42
+ DEFAULT_TEXT_COLOR: string;
43
+ };
44
+ interface TableData {
45
+ displayedColumns: Column[];
46
+ filterableOptions?: FilterableOption[];
47
+ collectionRef: CollectionReference<unknown>;
48
+ collection: string;
49
+ name: string;
50
+ totalRef?: {
51
+ ref: DocumentReference<unknown>;
52
+ field: string;
53
+ }[];
54
+ download: boolean;
55
+ pagination: boolean;
56
+ isNotClickable?: boolean;
57
+ url?: string;
58
+ sortBy?: {
59
+ field: string;
60
+ order: OrderByDirection;
61
+ };
62
+ conditions?: {
63
+ operator: WhereFilterOp$1;
64
+ firestoreProperty: string;
65
+ dashProperty: string | string[];
66
+ }[];
67
+ filterFn?: (item: any) => boolean;
68
+ color?: {
69
+ bg: string;
70
+ text: string;
71
+ };
72
+ showSimpleSearch?: boolean;
73
+ actionButton?: {
74
+ label: string;
75
+ routerLink: string;
76
+ icon?: string;
77
+ colorClass?: string;
78
+ method?: (row: any, event?: any) => any;
79
+ condition?: (row?: any) => boolean;
80
+ };
81
+ tabs?: Tab;
82
+ }
83
+ interface Tab {
84
+ method: (tab: any, event?: any) => any;
85
+ tabsData: TabData[];
86
+ }
87
+ interface TabData {
88
+ label: string;
89
+ counter?: number;
90
+ counterClass?: string;
91
+ }
92
+ interface Column {
93
+ property: string;
94
+ title?: string;
95
+ charLimit?: number;
96
+ pipe?: PipeTransform;
97
+ iconClass?: {
98
+ text?: string;
99
+ class?: string;
100
+ condition?: (row: any) => any;
101
+ buttonMethod?: (row: any, event?: any) => any;
102
+ }[];
103
+ isSortable?: boolean;
104
+ isFilterable?: boolean;
105
+ isFilterableByDate?: boolean;
106
+ hasLink?: boolean | string;
107
+ hasDownload?: boolean | string;
108
+ relation?: {
109
+ targetedCollection: string;
110
+ sourceProperty: string;
111
+ targetedProperty: string;
112
+ };
113
+ queryLength?: {
114
+ collection: string;
115
+ property: string;
116
+ operator: WhereFilterOp$1;
117
+ value: string;
118
+ };
119
+ image?: Image;
120
+ method?: (row: any, event?: any) => any;
121
+ filterPredicates?: string[];
122
+ calculateValue?: (row: any) => any;
123
+ arrayField?: string;
124
+ tooltip?: {
125
+ color: string;
126
+ text: string;
127
+ };
128
+ }
129
+ interface Image {
130
+ class: string;
131
+ path?: string;
132
+ url?: boolean;
133
+ default?: string;
134
+ }
135
+ interface FilterableOption {
136
+ title: string;
137
+ items: {
138
+ property: string;
139
+ value: string | boolean;
140
+ label: string;
141
+ }[];
142
+ }
143
+ interface Pagination {
144
+ batchSize: number;
145
+ collection: string;
146
+ doc?: {
147
+ firstDoc: QueryDocumentSnapshot<any> | null;
148
+ lastDoc: QueryDocumentSnapshot<any> | null;
149
+ };
150
+ navigation: 'reload' | 'forward' | 'backward';
151
+ arrange: Arrange;
152
+ conditions?: Condition[];
153
+ filterFn?: (item: any) => boolean;
154
+ size?: number;
155
+ clientPageIndex?: number;
156
+ }
157
+ interface Condition {
158
+ operator: WhereFilterOp$1;
159
+ firestoreProperty: string;
160
+ dashProperty: string | string[];
161
+ }
162
+ interface Arrange {
163
+ filters: {
164
+ arrange: 'ascending' | 'descending' | 'filter' | 'filterByDate' | 'equals' | '';
165
+ filter?: {
166
+ property: string;
167
+ filtering: string;
168
+ } | null;
169
+ dateFilter?: {
170
+ initial: Date;
171
+ final: Date;
172
+ };
173
+ }[];
174
+ sortBy: {
175
+ field: string;
176
+ order: OrderByDirection;
177
+ };
178
+ elementId?: {
179
+ property: string;
180
+ value: string;
181
+ };
182
+ }
183
+ type DropdownItem = Column & {
184
+ arrange: 'filter' | 'filterByDate' | 'equals' | 'ascending' | 'descending';
185
+ title: string;
186
+ icon?: string;
187
+ };
188
+ interface FilterSelectItem {
189
+ property: string;
190
+ value: string | boolean;
191
+ label: string;
192
+ }
193
+
194
+ interface PaginationResult {
195
+ items: Array<Record<string, unknown> & {
196
+ id: string;
197
+ }>;
198
+ filterLength: number | null;
199
+ firstDoc: firebase$1.firestore.QueryDocumentSnapshot<unknown> | null;
200
+ lastDoc: firebase$1.firestore.QueryDocumentSnapshot<unknown> | null;
201
+ hasNextPage: boolean;
202
+ hasPreviousPage?: boolean;
203
+ currentClientPageIndex?: number;
204
+ totalPages?: number;
205
+ }
206
+ declare class TableService {
207
+ private ngFire;
208
+ private dialog;
209
+ private toastr;
210
+ constructor(ngFire: AngularFirestore, dialog: MatDialog, toastr: ToastrService);
211
+ getItems(collection: CollectionReference<unknown>): Promise<Array<Record<string, unknown> & {
212
+ id: string;
213
+ }>>;
214
+ private executeQuery;
215
+ applyFilters(query: firebase$1.firestore.Query<unknown>, arrange: Arrange, conditions: Condition[] | undefined): firebase$1.firestore.Query<unknown>;
216
+ private getIdFilter;
217
+ private getDocumentById;
218
+ private searchByIdPartial;
219
+ private shouldUseClientSideFallback;
220
+ getPaginated(params: Pagination): Promise<PaginationResult>;
221
+ executeClientSideQuery(params: Pagination): Promise<PaginationResult>;
222
+ getItemsData(collection: string, arrange: Arrange, conditions?: Condition[] | undefined): Promise<Array<Record<string, unknown> & {
223
+ id: string;
224
+ }>>;
225
+ operators: {
226
+ '==': (a: unknown, b: unknown) => boolean;
227
+ '!=': (a: unknown, b: unknown) => boolean;
228
+ '>': (a: unknown, b: unknown) => boolean;
229
+ '<': (a: unknown, b: unknown) => boolean;
230
+ '>=': (a: unknown, b: unknown) => boolean;
231
+ '<=': (a: unknown, b: unknown) => boolean;
232
+ in: (a: unknown, b: unknown) => boolean;
233
+ 'not-in': (a: unknown, b: unknown) => boolean;
234
+ 'array-contains': (a: unknown, b: unknown) => boolean;
235
+ 'array-contains-any': (a: unknown, b: unknown) => boolean;
236
+ includes: (a: unknown, b: unknown) => boolean;
237
+ };
238
+ deleteIndex(id: string, col: string): Promise<boolean>;
239
+ reindex(index: number, col: string, batch: firebase$1.firestore.WriteBatch): Promise<void>;
240
+ dateFormatValidator(): ValidatorFn;
241
+ updateIndex(index: number, id: string, col: string): Promise<void>;
242
+ /**
243
+ * Extrai o link de criação de índice da mensagem de erro do Firestore
244
+ */
245
+ private extractIndexLink;
246
+ /**
247
+ * Rastreia índices ausentes ao usar fallback preventivo
248
+ */
249
+ private trackMissingIndexPreventive;
250
+ /**
251
+ * Gera uma assinatura única para uma query
252
+ */
253
+ private generateQuerySignature;
254
+ /**
255
+ * Gera instruções claras para criar o índice manualmente
256
+ */
257
+ private generateIndexInstructions;
258
+ /**
259
+ * Gera um link de índice baseado na estrutura da query
260
+ */
261
+ private generateIndexLink;
262
+ private trackMissingIndex;
263
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableService, [{ optional: true; }, { optional: true; }, { optional: true; }]>;
264
+ static ɵprov: i0.ɵɵInjectableDeclaration<TableService>;
265
+ }
266
+
267
+ interface FilterConfig {
268
+ selectFilter: any;
269
+ typeFilter?: string;
270
+ selectItem?: any[];
271
+ initialDate?: string;
272
+ finalDate?: string;
273
+ }
274
+ interface DateFiltersByProperty {
275
+ [property: string]: Array<{
276
+ initial: Date;
277
+ final: Date;
278
+ }>;
279
+ }
280
+ interface ProcessedFilter {
281
+ group: FormGroup;
282
+ selectedFilter: any;
283
+ arrange: string;
284
+ }
285
+ declare class FilterService {
286
+ private tableService;
287
+ constructor(tableService: TableService);
288
+ /**
289
+ * Cria um novo FormGroup para um filtro
290
+ */
291
+ createFilterGroup(): FormGroup;
292
+ /**
293
+ * Adiciona um novo filtro ao FormArray
294
+ */
295
+ addFilter(filtersForm: FormArray, isPaginated: boolean, filterData?: FilterConfig): void;
296
+ /**
297
+ * Verifica se há um filtro de data ativo
298
+ */
299
+ hasActiveDateFilter(filtersForm: FormArray): boolean;
300
+ /**
301
+ * Retorna as opções de filtro disponíveis
302
+ */
303
+ getAvailableFilterOptions(dropdownItems: any[], isPaginated: boolean, filtersForm: FormArray): any[];
304
+ /**
305
+ * Remove um filtro do FormArray
306
+ */
307
+ removeFilter(filtersForm: FormArray, index: number): void;
308
+ /**
309
+ * Remove todos os filtros do FormArray
310
+ */
311
+ removeAllFilters(filtersForm: FormArray): void;
312
+ /**
313
+ * Aplica máscara de data (DD/MM/AAAA)
314
+ */
315
+ applyDateMask(event: any, controlName: 'initialDate' | 'finalDate', filterGroup: FormGroup): void;
316
+ /**
317
+ * Aplica filtros client-side aos itens
318
+ */
319
+ applyClientSideFilters<T = any>(items: T[], filtersForm: FormArray, sortBy: {
320
+ field: string;
321
+ order: OrderByDirection;
322
+ }): T[];
323
+ /**
324
+ * Constrói o objeto Arrange a partir dos filtros ativos
325
+ */
326
+ buildArrangeFromFilters(filtersForm: FormArray, sortBy: {
327
+ field: string;
328
+ order: OrderByDirection;
329
+ }): Arrange;
330
+ /**
331
+ * Extrai filtros ativos para paginação
332
+ */
333
+ extractActiveFilters(filtersForm: FormArray): any[];
334
+ /**
335
+ * Inicializa os dropdownItems baseado nas colunas
336
+ */
337
+ initializeDropdownItems(displayedColumns: Column[]): {
338
+ dropdownItems: any[];
339
+ sortableDropdownItems: any[];
340
+ hasFilterableColumn: boolean;
341
+ hasSortableColumn: boolean;
342
+ };
343
+ /**
344
+ * Adiciona opções de filtro customizadas
345
+ */
346
+ addFilterableOptions(dropdownItems: any[], filterableOptions: any[]): any[];
347
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterService, never>;
348
+ static ɵprov: i0.ɵɵInjectableDeclaration<FilterService>;
349
+ }
350
+
351
+ interface TooltipState {
352
+ hoveredCell: {
353
+ row: any;
354
+ col: any;
355
+ } | null;
356
+ showTooltip: boolean;
357
+ tooltipContent: string;
358
+ tooltipPosition: {
359
+ x: number;
360
+ y: number;
361
+ };
362
+ tooltipBgColor: string;
363
+ tooltipBgStyle: {
364
+ [key: string]: string;
365
+ } | null;
366
+ tooltipTextColor: string;
367
+ tooltipTextStyle: {
368
+ [key: string]: string;
369
+ } | null;
370
+ }
371
+ interface TooltipConfig {
372
+ color?: string;
373
+ text?: string;
374
+ }
375
+ declare class TooltipService {
376
+ private tooltipTimeout;
377
+ /**
378
+ * Cria um estado inicial para o tooltip
379
+ */
380
+ createInitialState(): TooltipState;
381
+ /**
382
+ * Processa as cores do tooltip
383
+ */
384
+ processTooltipColors(config?: TooltipConfig): {
385
+ bgColor: string;
386
+ bgStyle: {
387
+ [key: string]: string;
388
+ } | null;
389
+ textColor: string;
390
+ textStyle: {
391
+ [key: string]: string;
392
+ } | null;
393
+ };
394
+ /**
395
+ * Manipula o evento de mouse enter na célula
396
+ */
397
+ handleMouseEnter(event: MouseEvent, row: any, col: Column, getDisplayValue: (col: Column, row: any, withinLimit: boolean) => string, onShow: (state: Partial<TooltipState>) => void): void;
398
+ /**
399
+ * Manipula o evento de mouse leave na célula
400
+ */
401
+ handleMouseLeave(onHide: (state: TooltipState) => void): void;
402
+ /**
403
+ * Manipula o movimento do mouse
404
+ */
405
+ handleMouseMove(event: MouseEvent, showTooltip: boolean, onMove: (position: {
406
+ x: number;
407
+ y: number;
408
+ }) => void): void;
409
+ /**
410
+ * Combina estilos do tooltip para aplicação
411
+ */
412
+ getTooltipStyles(state: TooltipState): {
413
+ [key: string]: string;
414
+ };
415
+ /**
416
+ * Limpa recursos ao destruir
417
+ */
418
+ destroy(): void;
419
+ static ɵfac: i0.ɵɵFactoryDeclaration<TooltipService, never>;
420
+ static ɵprov: i0.ɵɵInjectableDeclaration<TooltipService>;
421
+ }
422
+
423
+ interface PaginationState {
424
+ currentPageNumber: number;
425
+ currentClientPageIndex: number;
426
+ pageSize: number;
427
+ totalItems: number;
428
+ hasNextPage: boolean;
429
+ }
430
+ interface NavigationResult {
431
+ direction: 'forward' | 'backward' | 'reload';
432
+ resetDocs: boolean;
433
+ originalPageSize: number | null;
434
+ shouldNavigate: boolean;
435
+ newClientPageIndex: number;
436
+ newPageNumber: number;
437
+ }
438
+ declare class PaginationService {
439
+ calculateNavigation(event: PageEvent, currentState: PaginationState): NavigationResult;
440
+ /**
441
+ * Calcula o número de itens esperados na última página
442
+ */
443
+ calculateLastPageItemCount(totalItems: number, pageSize: number): number;
444
+ /**
445
+ * Calcula o índice da última página
446
+ */
447
+ calculateLastPageIndex(totalItems: number, pageSize: number): number;
448
+ /**
449
+ * Verifica se deve mostrar o botão de próxima página
450
+ */
451
+ shouldShowNextButton(hasNextPage: boolean, isPaginated: boolean): boolean;
452
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginationService, never>;
453
+ static ɵprov: i0.ɵɵInjectableDeclaration<PaginationService>;
454
+ }
455
+
456
+ import WhereFilterOp = firebase.firestore.WhereFilterOp;
457
+
458
+ declare class TableComponent<T = any> implements OnInit, AfterViewInit, OnChanges, OnDestroy {
459
+ private router;
460
+ private tableService;
461
+ private filterService;
462
+ private tooltipService;
463
+ private paginationService;
464
+ private firestore;
465
+ private el;
466
+ private cdr;
467
+ data: TableData;
468
+ downloadTable?: (arrange: Arrange, conditions: Condition[]) => void;
469
+ arrange: Arrange | null;
470
+ dataSource: MatTableDataSource<T>;
471
+ currentPageNumber: number;
472
+ currentClientPageIndex: number;
473
+ isLoading$: BehaviorSubject<boolean>;
474
+ items: T[];
475
+ filteredItems: T[];
476
+ private lastDoc;
477
+ private firstDoc;
478
+ private sortBy;
479
+ columnProperties: string[];
480
+ filtersForm: FormArray;
481
+ selectSort: FormControl;
482
+ currentArrange: string;
483
+ hasNextPage: boolean;
484
+ dropdownItems: DropdownItem[];
485
+ sortableDropdownItems: DropdownItem[];
486
+ pageSize: number;
487
+ totalItems: number;
488
+ pageEvent?: PageEvent;
489
+ filterValue: string | null;
490
+ hasFilterableColumn: boolean;
491
+ hasSortableColumn: boolean;
492
+ filterPredicate: ((data: T, filter: string) => boolean) | undefined;
493
+ private filterSubject;
494
+ private readonly debounceTimeMs;
495
+ selectedTab: number;
496
+ paginator: MatPaginator;
497
+ sort: MatSort;
498
+ tooltipState: TooltipState;
499
+ imageLoadingState: Map<string, boolean>;
500
+ private destroy$;
501
+ constructor(router: Router, tableService: TableService, filterService: FilterService, tooltipService: TooltipService, paginationService: PaginationService, firestore: AngularFirestore, el: ElementRef, cdr: ChangeDetectorRef);
502
+ getActionButtonClass(): string;
503
+ getTableRowNgClass(): Record<string, boolean>;
504
+ getPaginatorNgClass(): Record<string, boolean>;
505
+ createFilterGroup(): FormGroup;
506
+ addFilter(filterData?: {
507
+ selectFilter: DropdownItem | null;
508
+ typeFilter?: string;
509
+ selectItem?: FilterSelectItem[];
510
+ initialDate?: string;
511
+ finalDate?: string;
512
+ }): void;
513
+ hasActiveDateFilter(): boolean;
514
+ getAvailableFilterOptions(): DropdownItem[];
515
+ onSelectFilterChange(): void;
516
+ removeFilter(index: number): void;
517
+ removeAllFilters(): void;
518
+ onDateInput(event: Event, controlName: 'initialDate' | 'finalDate', filterIndex: number): void;
519
+ onDateFilterChange(): void;
520
+ private applyFiltersToDataSource;
521
+ private applyClientSideFilters;
522
+ private buildArrangeFromFilters;
523
+ getTooltipStyles(): {
524
+ [key: string]: string;
525
+ };
526
+ onCellMouseEnter(event: MouseEvent, row: T, col: Column): void;
527
+ onCellMouseLeave(): void;
528
+ onCellMouseMove(event: MouseEvent): void;
529
+ onTabSelected(event: {
530
+ tab: TabData;
531
+ index: number;
532
+ }): void;
533
+ getDisplayValue(col: Column, row: T, withinLimit?: boolean): string;
534
+ getNestedValue(obj: unknown, path: string): unknown;
535
+ isString(value: unknown): boolean;
536
+ trackByProperty(_index: number, col: Column): string;
537
+ private getImageKey;
538
+ isImageLoading(row: T, col: Column): boolean;
539
+ onImageLoad(row: T, col: Column): void;
540
+ onImageError(event: Event, row: T, col: Column, defaultImage?: string): void;
541
+ ngOnChanges(changes: SimpleChanges): void;
542
+ ngAfterViewInit(): void;
543
+ ngOnDestroy(): void;
544
+ private applyCustomColors;
545
+ ngOnInit(): Promise<void>;
546
+ private loadItems;
547
+ private loadItemsPaginated;
548
+ onPageChange(event?: PageEvent): Promise<void>;
549
+ applyFilter(value: string): void;
550
+ search(event?: Event): Promise<void>;
551
+ resetFilter(): Promise<void>;
552
+ goToDetails(row: T): void;
553
+ getRelation(params: {
554
+ id: string;
555
+ collection: string;
556
+ newProperty: string;
557
+ }): Promise<string>;
558
+ private loadRelations;
559
+ getQueryLength(params: {
560
+ item: T;
561
+ relation: {
562
+ collection: string;
563
+ property: string;
564
+ operator: WhereFilterOp;
565
+ value: string;
566
+ };
567
+ }): Promise<number>;
568
+ private loadQueryLengths;
569
+ private filterItems;
570
+ reloadTable(): Promise<void>;
571
+ updateDisplayedColumns(): void;
572
+ shouldShowActionButton(): boolean;
573
+ handleDownload(): void;
574
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
575
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "lib-table", never, { "data": { "alias": "data"; "required": false; }; "downloadTable": { "alias": "downloadTable"; "required": false; }; }, {}, never, never, false, never>;
576
+ }
577
+
578
+ declare class TableTabsComponent {
579
+ tabsData: TabData[];
580
+ selectedTab: number;
581
+ tabSelected: EventEmitter<{
582
+ tab: TabData;
583
+ index: number;
584
+ }>;
585
+ private readonly TABS_PER_GROUP;
586
+ /**
587
+ * Retorna os índices dos grupos de tabs (invertidos para exibição vertical)
588
+ */
589
+ getTabGroups(): number[];
590
+ /**
591
+ * Retorna os tabs de um grupo específico
592
+ */
593
+ getTabGroup(groupIndex: number): TabData[];
594
+ /**
595
+ * Calcula o índice real do tab considerando a inversão vertical
596
+ */
597
+ getRealTabIndex(groupDisplayIndex: number, tabIndexInGroup: number): number;
598
+ /**
599
+ * Manipula a seleção de um tab
600
+ */
601
+ onTabSelected(groupDisplayIndex: number, tabIndexInGroup: number): void;
602
+ /**
603
+ * Verifica se um tab está selecionado
604
+ */
605
+ isTabSelected(originalIndex: number): boolean;
606
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableTabsComponent, never>;
607
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableTabsComponent, "lib-table-tabs", never, { "tabsData": { "alias": "tabsData"; "required": false; }; "selectedTab": { "alias": "selectedTab"; "required": false; }; }, { "tabSelected": "tabSelected"; }, never, never, false, never>;
608
+ }
609
+
610
+ declare class TableTooltipComponent {
611
+ state: TooltipState;
612
+ styles: {
613
+ [key: string]: string;
614
+ };
615
+ get showTooltip(): boolean;
616
+ get tooltipContent(): string;
617
+ get tooltipPosition(): {
618
+ x: number;
619
+ y: number;
620
+ };
621
+ get tooltipBgColor(): string;
622
+ get tooltipTextColor(): string;
623
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableTooltipComponent, never>;
624
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableTooltipComponent, "lib-table-tooltip", never, { "state": { "alias": "state"; "required": false; }; "styles": { "alias": "styles"; "required": false; }; }, {}, never, never, false, never>;
625
+ }
626
+
627
+ declare class NgFirebaseTableKxpModule {
628
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgFirebaseTableKxpModule, never>;
629
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgFirebaseTableKxpModule, [typeof NgFirebaseTableKxpComponent, typeof TableComponent, typeof TableTabsComponent, typeof TableTooltipComponent], [typeof i5.CommonModule, typeof i6.ReactiveFormsModule, typeof i6.FormsModule, typeof i7.RouterModule, typeof i8.MatTableModule, typeof i9.MatPaginatorModule, typeof i10.MatSortModule, typeof i11.MatFormFieldModule, typeof i12.MatInputModule, typeof i13.MatSelectModule, typeof i14.MatTooltipModule, typeof i15.MatProgressSpinnerModule, typeof i16.MatIconModule, typeof i17.MatDialogModule], [typeof NgFirebaseTableKxpComponent, typeof TableComponent, typeof TableTabsComponent, typeof TableTooltipComponent]>;
630
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgFirebaseTableKxpModule>;
631
+ }
632
+
633
+ declare class NgFirebaseTableKxpService {
634
+ constructor();
635
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgFirebaseTableKxpService, never>;
636
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgFirebaseTableKxpService>;
637
+ }
638
+
639
+ /**
640
+ * Obtém o valor aninhado de um objeto dado um caminho (ex: 'user.address.city')
641
+ */
642
+ declare function getNestedValue(obj: any, path: string): any;
643
+ /**
644
+ * Formata um array de objetos em uma string com valores separados por vírgula
645
+ */
646
+ declare function formatArrayValue(array: any[], field: string): string;
647
+ /**
648
+ * Obtém o valor de exibição para uma célula da tabela
649
+ */
650
+ declare function getDisplayValue(col: Column, row: any, withinLimit?: boolean): string;
651
+ /**
652
+ * Verifica se um valor é string
653
+ */
654
+ declare function isString(value: any): boolean;
655
+ /**
656
+ * TrackBy function para colunas
657
+ */
658
+ declare function trackByProperty(_index: number, col: Column): string;
659
+ /**
660
+ * Gera uma chave única para identificar uma imagem em carregamento
661
+ */
662
+ declare function getImageKey(row: any, col: Column): string;
663
+
664
+ export { FilterService, NgFirebaseTableKxpComponent, NgFirebaseTableKxpModule, NgFirebaseTableKxpService, PaginationService, TABLE_DEFAULTS, TableComponent, TableService, TableTabsComponent, TableTooltipComponent, TooltipService, formatArrayValue, getDisplayValue, getImageKey, getNestedValue, isString, trackByProperty };
665
+ export type { Arrange, Column, Condition, DateFiltersByProperty, DropdownItem, FilterConfig, FilterSelectItem, FilterableOption, Image, NavigationResult, Pagination, PaginationState, ProcessedFilter, Tab, TabData, TableData, TooltipConfig, TooltipState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-firebase-table-kxp",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Uma biblioteca Angular poderosa para criar tabelas dinâmicas com integração completa ao Firebase Firestore",
5
5
  "keywords": [
6
6
  "angular",
@@ -32,11 +32,7 @@
32
32
  "dependencies": {
33
33
  "tslib": "^2.3.0"
34
34
  },
35
- "module": "fesm2015/ng-firebase-table-kxp.mjs",
36
- "es2020": "fesm2020/ng-firebase-table-kxp.mjs",
37
- "esm2020": "esm2020/ng-firebase-table-kxp.mjs",
38
- "fesm2020": "fesm2020/ng-firebase-table-kxp.mjs",
39
- "fesm2015": "fesm2015/ng-firebase-table-kxp.mjs",
35
+ "module": "fesm2022/ng-firebase-table-kxp.mjs",
40
36
  "typings": "index.d.ts",
41
37
  "exports": {
42
38
  "./package.json": {
@@ -44,11 +40,7 @@
44
40
  },
45
41
  ".": {
46
42
  "types": "./index.d.ts",
47
- "esm2020": "./esm2020/ng-firebase-table-kxp.mjs",
48
- "es2020": "./fesm2020/ng-firebase-table-kxp.mjs",
49
- "es2015": "./fesm2015/ng-firebase-table-kxp.mjs",
50
- "node": "./fesm2015/ng-firebase-table-kxp.mjs",
51
- "default": "./fesm2020/ng-firebase-table-kxp.mjs"
43
+ "default": "./fesm2022/ng-firebase-table-kxp.mjs"
52
44
  }
53
45
  },
54
46
  "sideEffects": false