@praxisui/table 1.0.0-beta.4 → 1.0.0-beta.40
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 +360 -18
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-CLF05-__.mjs +166 -0
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-CLF05-__.mjs.map +1 -0
- package/fesm2022/praxisui-table-table-ai.adapter-BuNW3YSp.mjs +804 -0
- package/fesm2022/praxisui-table-table-ai.adapter-BuNW3YSp.mjs.map +1 -0
- package/fesm2022/praxisui-table.mjs +28304 -9110
- package/fesm2022/praxisui-table.mjs.map +1 -1
- package/index.d.ts +1552 -459
- package/package.json +10 -8
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-DI8aWSSJ.mjs +0 -85
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-DI8aWSSJ.mjs.map +0 -1
package/index.d.ts
CHANGED
|
@@ -1,27 +1,128 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { OnChanges, OnDestroy, EventEmitter, ElementRef, SimpleChanges, OnInit, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, AfterContentInit, InjectionToken, Provider } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute } from '@angular/router';
|
|
3
4
|
import { MatTableDataSource } from '@angular/material/table';
|
|
4
5
|
import { MatPaginator, PageEvent } from '@angular/material/paginator';
|
|
5
6
|
import { MatSort, Sort } from '@angular/material/sort';
|
|
6
7
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
7
8
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
8
|
-
import {
|
|
9
|
+
import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
|
|
10
|
+
import { BehaviorSubject, Subscription, Observable } from 'rxjs';
|
|
11
|
+
import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
|
|
9
12
|
import * as _praxisui_core from '@praxisui/core';
|
|
10
|
-
import {
|
|
13
|
+
import { TableConfig, LoggerService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, LoadingState, ColumnDefinition, ConnectionStorage, LoadingOrchestrator, PraxisLoadingRenderer, GlobalActionSpec, IconPickerService, GlobalActionField, TableConfigService, FieldDefinition, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
|
|
14
|
+
import { FunctionRegistry, DslParser } from '@praxisui/specification';
|
|
11
15
|
import { DatePipe, DecimalPipe, CurrencyPipe, PercentPipe, UpperCasePipe, LowerCasePipe, TitleCasePipe } from '@angular/common';
|
|
12
|
-
import {
|
|
16
|
+
import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
|
|
13
17
|
import { MatDialog } from '@angular/material/dialog';
|
|
14
18
|
import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
|
|
15
|
-
import { SpecificationBridgeService, RuleBuilderConfig, RuleBuilderState } from '@praxisui/visual-builder';
|
|
16
19
|
import { PraxisDialog } from '@praxisui/dialog';
|
|
17
|
-
import {
|
|
18
|
-
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
20
|
+
import { MatTabChangeEvent } from '@angular/material/tabs';
|
|
19
21
|
import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
|
|
20
22
|
import { MatCheckboxChange } from '@angular/material/checkbox';
|
|
23
|
+
import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
|
|
24
|
+
import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
interface ActionLike {
|
|
27
|
+
action?: string;
|
|
28
|
+
id?: string;
|
|
29
|
+
code?: string;
|
|
30
|
+
key?: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
type?: string;
|
|
33
|
+
icon?: string;
|
|
34
|
+
label?: string;
|
|
35
|
+
}
|
|
36
|
+
declare function getActionId(action: ActionLike): string;
|
|
37
|
+
|
|
38
|
+
declare class PraxisTableToolbar implements OnChanges, OnDestroy {
|
|
39
|
+
private hostRef;
|
|
40
|
+
private logger?;
|
|
41
|
+
private static dslRuntimeInstanceCounter;
|
|
42
|
+
config?: TableConfig;
|
|
43
|
+
backgroundColor: string | null;
|
|
44
|
+
placement: 'header' | 'footer';
|
|
45
|
+
showMain: boolean;
|
|
46
|
+
showActionsGroup: boolean;
|
|
47
|
+
showEndActions: boolean;
|
|
48
|
+
showMobileActions: boolean;
|
|
49
|
+
showReset: boolean;
|
|
50
|
+
dslContext: Record<string, any> | null;
|
|
51
|
+
dslFunctionRegistry: FunctionRegistry<any> | null;
|
|
52
|
+
toolbarAction: EventEmitter<{
|
|
53
|
+
action: string;
|
|
54
|
+
actionConfig?: any;
|
|
55
|
+
}>;
|
|
56
|
+
reset: EventEmitter<void>;
|
|
57
|
+
readonly getActionId: typeof getActionId;
|
|
58
|
+
private dslParser;
|
|
59
|
+
private dslRuntimeRegistry;
|
|
60
|
+
private readonly dslRuntimeContextKey;
|
|
61
|
+
private readonly visibleWhenSpecCache;
|
|
62
|
+
private readonly validToolbarActionTypes;
|
|
63
|
+
private readonly warnedInvalidToolbarActionTypes;
|
|
64
|
+
private readonly warnedMenuWithoutChildren;
|
|
65
|
+
private readonly warnedVisibleWhenFallback;
|
|
66
|
+
private readonly warnedInvalidShortcuts;
|
|
67
|
+
private readonly warnedInvalidShortcutScopes;
|
|
68
|
+
private readonly warnedShortcutConflicts;
|
|
69
|
+
private fallbackLogger?;
|
|
70
|
+
private fallbackLoggerEnvironment;
|
|
71
|
+
constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined);
|
|
72
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
73
|
+
ngOnDestroy(): void;
|
|
74
|
+
private configureDslRuntime;
|
|
75
|
+
private getNestedPropertyValue;
|
|
76
|
+
private cloneForEmit;
|
|
77
|
+
private getLogger;
|
|
78
|
+
private warnLog;
|
|
79
|
+
emitToolbarAction(event: Event, action: string, actionConfig?: any): void;
|
|
80
|
+
getStartActions(): any[];
|
|
81
|
+
getNonStartActions(): any[];
|
|
82
|
+
getOverflowActions(): any[];
|
|
83
|
+
getActionType(action: any): 'button' | 'icon' | 'fab' | 'menu';
|
|
84
|
+
getActionChildren(action: any): any[];
|
|
85
|
+
getVisibleActionChildren(action: any): any[];
|
|
86
|
+
isMenuWithoutChildren(action: any): boolean;
|
|
87
|
+
getActionColor(action: any): any;
|
|
88
|
+
getActionAriaLabel(action: any): string;
|
|
89
|
+
isActionDisabled(action: any): boolean;
|
|
90
|
+
onDocumentKeydown(event: KeyboardEvent): void;
|
|
91
|
+
getBulkActionsPosition(): 'toolbar' | 'floating' | 'both';
|
|
92
|
+
shouldRenderToolbarBulkActions(): boolean;
|
|
93
|
+
getBulkToolbarActions(): any[];
|
|
94
|
+
private getVisibleToolbarActions;
|
|
95
|
+
private resolveVisibleToolbarAction;
|
|
96
|
+
private isActionVisible;
|
|
97
|
+
private evaluateVisibleWhen;
|
|
98
|
+
private resolveVisibleWhenFallback;
|
|
99
|
+
private resolveVisibleWhenFallbackPolicy;
|
|
100
|
+
private resolveRuntimeEnvironment;
|
|
101
|
+
private isDiagnosticsEnvironment;
|
|
102
|
+
private buildDslContext;
|
|
103
|
+
private getKnownDslFields;
|
|
104
|
+
private warnVisibleWhenFallback;
|
|
105
|
+
private collectShortcutBindings;
|
|
106
|
+
private resolveShortcutScope;
|
|
107
|
+
private normalizeShortcutCombo;
|
|
108
|
+
private getShortcutComboFromEvent;
|
|
109
|
+
private normalizeShortcutKey;
|
|
110
|
+
private isEditableElement;
|
|
111
|
+
private isEventInsideToolbar;
|
|
112
|
+
private wasShortcutAlreadyHandled;
|
|
113
|
+
private markShortcutHandled;
|
|
114
|
+
private warnInvalidShortcut;
|
|
115
|
+
private warnInvalidShortcutScope;
|
|
116
|
+
private warnShortcutConflict;
|
|
117
|
+
private sortActions;
|
|
118
|
+
getExportIcon(format: string): string;
|
|
119
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }]>;
|
|
120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "showReset": { "alias": "showReset"; "required": false; }; "dslContext": { "alias": "dslContext"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
|
|
23
124
|
interface FormatterConfig {
|
|
24
|
-
type: ColumnDataType;
|
|
125
|
+
type: ColumnDataType$1;
|
|
25
126
|
options: any;
|
|
26
127
|
}
|
|
27
128
|
interface DateFormatterOptions {
|
|
@@ -88,7 +189,7 @@ declare class DataFormattingService {
|
|
|
88
189
|
/**
|
|
89
190
|
* Apply formatting to a value based on column type and format string
|
|
90
191
|
*/
|
|
91
|
-
formatValue(value: any, columnType: ColumnDataType, formatString: string): any;
|
|
192
|
+
formatValue(value: any, columnType: ColumnDataType$1, formatString: string): any;
|
|
92
193
|
/**
|
|
93
194
|
* Coerce value to the expected type for formatting
|
|
94
195
|
*/
|
|
@@ -118,6 +219,8 @@ declare class DataFormattingService {
|
|
|
118
219
|
* Apply string transformations
|
|
119
220
|
*/
|
|
120
221
|
private applyStringTransform;
|
|
222
|
+
private isMaskFormat;
|
|
223
|
+
private applyMask;
|
|
121
224
|
/**
|
|
122
225
|
* Format boolean values
|
|
123
226
|
*/
|
|
@@ -125,7 +228,7 @@ declare class DataFormattingService {
|
|
|
125
228
|
/**
|
|
126
229
|
* Check if formatting is needed for a column
|
|
127
230
|
*/
|
|
128
|
-
needsFormatting(columnType: ColumnDataType, formatString: string): boolean;
|
|
231
|
+
needsFormatting(columnType: ColumnDataType$1, formatString: string | null | undefined): boolean;
|
|
129
232
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataFormattingService, never>;
|
|
130
233
|
static ɵprov: i0.ɵɵInjectableDeclaration<DataFormattingService>;
|
|
131
234
|
}
|
|
@@ -141,17 +244,23 @@ declare class TableDefaultsProvider {
|
|
|
141
244
|
* Returns default configuration for a given table identifier.
|
|
142
245
|
* @param tableId Table identifier
|
|
143
246
|
*/
|
|
144
|
-
getDefaults(
|
|
247
|
+
getDefaults(_tableId: string): TableConfig;
|
|
145
248
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableDefaultsProvider, never>;
|
|
146
249
|
static ɵprov: i0.ɵɵInjectableDeclaration<TableDefaultsProvider>;
|
|
147
250
|
}
|
|
148
251
|
|
|
149
252
|
type FilterConfig = {
|
|
150
|
-
quickField?: string;
|
|
151
253
|
alwaysVisibleFields?: string[];
|
|
152
|
-
|
|
254
|
+
/**
|
|
255
|
+
* Deep metadata overrides for always-visible fields.
|
|
256
|
+
* Source of truth remains the filter DTO; this map applies controlled
|
|
257
|
+
* overrides per field after DTO normalization.
|
|
258
|
+
*/
|
|
259
|
+
alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, any>>;
|
|
260
|
+
/** User-selected extra field ids to show before pinned always-visible */
|
|
261
|
+
selectedFieldIds?: string[];
|
|
153
262
|
showAdvanced?: boolean;
|
|
154
|
-
mode?: '
|
|
263
|
+
mode?: 'filter';
|
|
155
264
|
changeDebounceMs?: number;
|
|
156
265
|
allowSaveTags?: boolean;
|
|
157
266
|
placeBooleansInActions?: boolean;
|
|
@@ -159,26 +268,45 @@ type FilterConfig = {
|
|
|
159
268
|
alwaysMinWidth?: number;
|
|
160
269
|
alwaysColsMd?: number;
|
|
161
270
|
alwaysColsLg?: number;
|
|
162
|
-
autoSummary?: boolean;
|
|
163
271
|
confirmTagDelete?: boolean;
|
|
164
|
-
debugLayout?: boolean;
|
|
165
272
|
tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
166
273
|
tagVariant?: 'filled' | 'outlined';
|
|
167
274
|
tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
168
275
|
actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
169
276
|
actionsVariant?: 'standard' | 'outlined';
|
|
277
|
+
/**
|
|
278
|
+
* Opt-in para mapear searchable-select na variante compacta inline.
|
|
279
|
+
* Padrão recomendado: false em cenários corporativos com catálogos grandes/remotos.
|
|
280
|
+
*/
|
|
281
|
+
useInlineSearchableSelectVariant?: boolean;
|
|
282
|
+
/** Opt-in para mapear rangeSlider na variante compacta inline (single/range). */
|
|
283
|
+
useInlineRangeVariant?: boolean;
|
|
284
|
+
/** Opt-in para mapear date/dateInput/datepicker na variante compacta inline. */
|
|
285
|
+
useInlineDateVariant?: boolean;
|
|
286
|
+
/** Opt-in para mapear dateRange/daterange na variante compacta inline. */
|
|
287
|
+
useInlineDateRangeVariant?: boolean;
|
|
288
|
+
/** Opt-in para mapear time/timePicker na variante compacta inline. */
|
|
289
|
+
useInlineTimeVariant?: boolean;
|
|
290
|
+
/** Opt-in para mapear timeRange/timerange na variante compacta inline. */
|
|
291
|
+
useInlineTimeRangeVariant?: boolean;
|
|
292
|
+
/** Opt-in para mapear treeSelect/multiSelectTree na variante compacta inline. */
|
|
293
|
+
useInlineTreeSelectVariant?: boolean;
|
|
170
294
|
overlayVariant?: 'card' | 'frosted';
|
|
171
295
|
overlayBackdrop?: boolean;
|
|
172
296
|
advancedOpenMode?: 'overlay' | 'modal' | 'drawer';
|
|
297
|
+
/** Habilita botão de limpar nos campos do formulário avançado. */
|
|
298
|
+
advancedClearButtonsEnabled?: boolean;
|
|
299
|
+
logLevel?: 'none' | 'error' | 'warn' | 'info' | 'debug';
|
|
300
|
+
enablePerformanceMetrics?: boolean;
|
|
173
301
|
};
|
|
174
302
|
declare class FilterConfigService {
|
|
175
303
|
private storage;
|
|
176
304
|
private readonly PREFIX;
|
|
177
|
-
constructor(storage:
|
|
305
|
+
constructor(storage: AsyncConfigStorage);
|
|
178
306
|
/**
|
|
179
307
|
* Load a persisted filter configuration for the given key.
|
|
180
308
|
*/
|
|
181
|
-
load(key: string): FilterConfig | undefined
|
|
309
|
+
load(key: string): Promise<FilterConfig | undefined>;
|
|
182
310
|
/**
|
|
183
311
|
* Persist a filter configuration for the given key.
|
|
184
312
|
*/
|
|
@@ -195,8 +323,17 @@ type FilterTag = {
|
|
|
195
323
|
type I18n = {
|
|
196
324
|
searchPlaceholder: string;
|
|
197
325
|
advanced: string;
|
|
326
|
+
advancedTitle?: string;
|
|
198
327
|
clear: string;
|
|
199
328
|
apply: string;
|
|
329
|
+
add?: string;
|
|
330
|
+
filtersAdd?: string;
|
|
331
|
+
filtersSearch?: string;
|
|
332
|
+
addCount?: string;
|
|
333
|
+
pendingCount?: string;
|
|
334
|
+
activeFiltersCount?: string;
|
|
335
|
+
selectAll?: string;
|
|
336
|
+
selectAllPartial?: string;
|
|
200
337
|
edit: string;
|
|
201
338
|
noData: string;
|
|
202
339
|
quickFieldNotFound: string;
|
|
@@ -209,6 +346,11 @@ type I18n = {
|
|
|
209
346
|
settings: string;
|
|
210
347
|
save: string;
|
|
211
348
|
cancel: string;
|
|
349
|
+
shortcutsLabel?: string;
|
|
350
|
+
shortcutSaved: string;
|
|
351
|
+
readonlyShortcut: string;
|
|
352
|
+
shortcutRemoved: string;
|
|
353
|
+
undo: string;
|
|
212
354
|
};
|
|
213
355
|
declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestroy, DoCheck {
|
|
214
356
|
private crud;
|
|
@@ -219,11 +361,21 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
219
361
|
private snackBar;
|
|
220
362
|
private dialog;
|
|
221
363
|
private cdr;
|
|
364
|
+
private ngZone;
|
|
222
365
|
private dynamicForm;
|
|
223
366
|
private schemaNormalizer;
|
|
367
|
+
private componentKeys;
|
|
368
|
+
private route?;
|
|
224
369
|
resourcePath: string;
|
|
225
|
-
|
|
226
|
-
|
|
370
|
+
/**
|
|
371
|
+
* Optional static metadata for offline/showcase usage.
|
|
372
|
+
* When this input is provided (including an empty array), server schema loading is bypassed.
|
|
373
|
+
*/
|
|
374
|
+
fieldMetadata?: FieldMetadata[] | null;
|
|
375
|
+
filterId?: string;
|
|
376
|
+
formId?: string;
|
|
377
|
+
componentInstanceId?: string;
|
|
378
|
+
mode: 'filter';
|
|
227
379
|
/** Controls outdated schema notifications visibility and channel (only effective in edit mode) */
|
|
228
380
|
notifyIfOutdated: 'inline' | 'snackbar' | 'both' | 'none';
|
|
229
381
|
/** Snooze duration for schema outdated notifications (ms), only in edit mode */
|
|
@@ -233,36 +385,49 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
233
385
|
/** Enable edit mode (gates notifications) */
|
|
234
386
|
editModeEnabled: boolean;
|
|
235
387
|
value?: Record<string, any>;
|
|
236
|
-
quickField?: string;
|
|
237
388
|
alwaysVisibleFields?: string[];
|
|
389
|
+
/**
|
|
390
|
+
* Optional metadata overrides for always-visible fields.
|
|
391
|
+
* Keys are field names from the filter DTO schema.
|
|
392
|
+
*/
|
|
393
|
+
alwaysVisibleFieldMetadataOverrides: Record<string, Record<string, any>> | undefined;
|
|
394
|
+
/** Additional selected field ids to render before pinned always-visible */
|
|
395
|
+
selectedFieldIds: string[];
|
|
238
396
|
tags?: FilterTag[];
|
|
239
397
|
allowSaveTags?: boolean;
|
|
240
398
|
persistenceKey?: string;
|
|
241
399
|
i18n?: Partial<I18n>;
|
|
242
400
|
changeDebounceMs: number;
|
|
243
|
-
/** Controla a exibição do botão de
|
|
401
|
+
/** Controla a exibição do botão de preferências dentro do filtro */
|
|
244
402
|
showFilterSettings: boolean;
|
|
245
|
-
/** Data used to render the summary card when mode resolves to 'card'. */
|
|
246
|
-
summary?: any;
|
|
247
|
-
/** Custom template to render the summary card; receives the summary as $implicit. */
|
|
248
|
-
summaryTemplate?: TemplateRef<any>;
|
|
249
|
-
/** Mapping functions to build the native summary card. */
|
|
250
|
-
summaryMap?: {
|
|
251
|
-
avatar?: (s: any) => string;
|
|
252
|
-
title: (s: any) => string;
|
|
253
|
-
subtitle?: (s: any) => string;
|
|
254
|
-
badges?: Array<(s: any) => string>;
|
|
255
|
-
};
|
|
256
|
-
/** When true and mode='auto', generates a summary from active filters if no summary is provided. */
|
|
257
|
-
autoSummary: boolean;
|
|
258
403
|
/** Exibir confirmação ao excluir atalho (tag) */
|
|
259
404
|
confirmTagDelete: boolean;
|
|
260
|
-
/** Debug visual de layout/alinhamento */
|
|
261
|
-
debugLayout: boolean;
|
|
262
405
|
/** Move toggles/booleans simples para a área de ações */
|
|
263
406
|
placeBooleansInActions: boolean;
|
|
264
407
|
/** Mostrar rótulos dos toggles na área de ações */
|
|
265
408
|
showToggleLabels: boolean;
|
|
409
|
+
/** Usa variante compacta de select no modo inline para ganhar espaço */
|
|
410
|
+
useInlineSelectVariant: boolean;
|
|
411
|
+
/** Habilita variante inline para searchable-select, async-select e autocomplete. */
|
|
412
|
+
useInlineSearchableSelectVariant: boolean;
|
|
413
|
+
/** Usa variante compacta de multi-select no modo inline para ganhar espaço */
|
|
414
|
+
useInlineMultiSelectVariant: boolean;
|
|
415
|
+
/** Usa variante compacta de input/search no modo inline para ganhar espaço */
|
|
416
|
+
useInlineInputVariant: boolean;
|
|
417
|
+
/** Usa variante compacta de toggle no modo inline para ganhar espaço */
|
|
418
|
+
useInlineToggleVariant: boolean;
|
|
419
|
+
/** Usa variante compacta de range slider (modo simples) para ganhar espaço */
|
|
420
|
+
useInlineRangeVariant: boolean;
|
|
421
|
+
/** Usa variante compacta de date/dateInput/datepicker no modo inline para ganhar espaço */
|
|
422
|
+
useInlineDateVariant: boolean;
|
|
423
|
+
/** Usa variante compacta de dateRange/daterange no modo inline para ganhar espaço */
|
|
424
|
+
useInlineDateRangeVariant: boolean;
|
|
425
|
+
/** Usa variante compacta de time/timePicker no modo inline para ganhar espaço */
|
|
426
|
+
useInlineTimeVariant: boolean;
|
|
427
|
+
/** Usa variante compacta de timeRange/timerange no modo inline para ganhar espaço */
|
|
428
|
+
useInlineTimeRangeVariant: boolean;
|
|
429
|
+
/** Usa variante compacta de treeSelect no modo inline para ganhar espaço */
|
|
430
|
+
useInlineTreeSelectVariant: boolean;
|
|
266
431
|
/** Config da grade dos alwaysVisible */
|
|
267
432
|
alwaysMinWidth: number;
|
|
268
433
|
alwaysColsMd: number;
|
|
@@ -278,13 +443,17 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
278
443
|
overlayVariant: 'card' | 'frosted';
|
|
279
444
|
overlayBackdrop: boolean;
|
|
280
445
|
/** Advanced panel open mode */
|
|
281
|
-
advancedOpenMode: '
|
|
446
|
+
advancedOpenMode: 'modal' | 'drawer';
|
|
447
|
+
/** Habilita botão de limpar nos campos do formulário avançado */
|
|
448
|
+
advancedClearButtonsEnabled?: boolean;
|
|
282
449
|
submit: EventEmitter<Record<string, any>>;
|
|
283
450
|
change: EventEmitter<Record<string, any>>;
|
|
284
451
|
clear: EventEmitter<void>;
|
|
285
|
-
modeChange: EventEmitter<"filter"
|
|
452
|
+
modeChange: EventEmitter<"filter">;
|
|
286
453
|
requestSearch: EventEmitter<Record<string, any>>;
|
|
287
454
|
tagsChange: EventEmitter<FilterTag[]>;
|
|
455
|
+
/** Emits when user-selected field ids change */
|
|
456
|
+
selectedFieldIdsChange: EventEmitter<string[]>;
|
|
288
457
|
metaChanged: EventEmitter<{
|
|
289
458
|
schemaId: string;
|
|
290
459
|
serverHash?: string;
|
|
@@ -297,12 +466,14 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
297
466
|
lastVerifiedAt?: string;
|
|
298
467
|
formId?: string;
|
|
299
468
|
}>;
|
|
300
|
-
quickControl: FormControl<any>;
|
|
301
|
-
quickForm: FormGroup<Record<string, AbstractControl<any, any, any>>>;
|
|
302
469
|
alwaysForm: FormGroup<Record<string, FormControl<unknown>>>;
|
|
303
|
-
quickFieldMeta?: FieldMetadata;
|
|
304
|
-
quickFieldMetaArray: FieldMetadata[];
|
|
305
470
|
alwaysVisibleMetas: FieldMetadata[];
|
|
471
|
+
/** User-selected field metadata rendered before pinned (always) */
|
|
472
|
+
selectedMetas: FieldMetadata[];
|
|
473
|
+
compactSelectedMetas: FieldMetadata[];
|
|
474
|
+
compactAlwaysVisibleMetas: FieldMetadata[];
|
|
475
|
+
gridSelectedMetas: FieldMetadata[];
|
|
476
|
+
gridAlwaysVisibleMetas: FieldMetadata[];
|
|
306
477
|
toggleMetas: FieldMetadata[];
|
|
307
478
|
advancedConfig?: FormConfig;
|
|
308
479
|
displayedTags: FilterTag[];
|
|
@@ -315,33 +486,32 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
315
486
|
private advancedChange$;
|
|
316
487
|
private alwaysFormReset$;
|
|
317
488
|
private dto;
|
|
318
|
-
modeState: 'filter' | 'card';
|
|
319
489
|
advancedOpen: boolean;
|
|
320
490
|
advancedValid: boolean;
|
|
321
491
|
activeFiltersCount: number;
|
|
322
492
|
saving: boolean;
|
|
323
493
|
i18nLabels: I18n;
|
|
324
|
-
placeholder?: string;
|
|
325
494
|
private configKey;
|
|
326
|
-
private pendingQuickValue?;
|
|
327
|
-
private autoSummaryData?;
|
|
328
495
|
private lastSchemaMeta?;
|
|
329
496
|
schemaOutdated: boolean;
|
|
330
497
|
anchorRef?: CdkOverlayOrigin;
|
|
331
|
-
|
|
498
|
+
addAnchor?: CdkOverlayOrigin;
|
|
499
|
+
advancedButton?: ElementRef<HTMLElement>;
|
|
332
500
|
overlayOrigin?: CdkOverlayOrigin;
|
|
333
501
|
overlayWidth: number | string;
|
|
334
502
|
isMobile: boolean;
|
|
335
503
|
advancedTitleId: string;
|
|
336
504
|
advancedPanelId: string;
|
|
337
|
-
|
|
505
|
+
addQuery: string;
|
|
506
|
+
addItems: Array<{
|
|
507
|
+
id: string;
|
|
508
|
+
label: string;
|
|
509
|
+
}>;
|
|
510
|
+
private addItemsUpdateQueued;
|
|
511
|
+
private applySchemaQueued;
|
|
338
512
|
private isViewInitialized;
|
|
339
|
-
private pendingQuickFieldSetup;
|
|
340
|
-
private isQuickFieldSetupInProgress;
|
|
341
|
-
private _dbgPrevQuickArrayRef;
|
|
342
513
|
private _dbgPrevAlwaysArrayRef;
|
|
343
514
|
private _dbgPrevToggleArrayRef;
|
|
344
|
-
private _dbgPrevQuickFormRef;
|
|
345
515
|
private _dbgPrevAlwaysFormRef;
|
|
346
516
|
private _dbgDoCheckCount;
|
|
347
517
|
private _dbgLastApplyMetasAt;
|
|
@@ -349,19 +519,34 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
349
519
|
private _dbgLastAlwaysComponentsAt;
|
|
350
520
|
private _dbgLastToggleComponentsAt;
|
|
351
521
|
overlayPositions: ConnectedPosition[];
|
|
352
|
-
private quickSub?;
|
|
353
522
|
private advancedDebouncedSub?;
|
|
523
|
+
private lastActiveElement?;
|
|
354
524
|
private lastSubmitAt;
|
|
355
525
|
private resizeObs?;
|
|
356
526
|
private mutationObs?;
|
|
357
|
-
private ignoreOutsideUntil;
|
|
358
527
|
private _resolvedPrefs;
|
|
359
528
|
private resolveSchemaPrefs;
|
|
360
|
-
|
|
529
|
+
private domIdSeed;
|
|
530
|
+
private componentKeyId;
|
|
531
|
+
private resolveConfigKey;
|
|
532
|
+
getComponentKeyId(): string | null;
|
|
533
|
+
private filterTagsKey;
|
|
534
|
+
private filterDtoKey;
|
|
535
|
+
private filterSchemaMetaKey;
|
|
536
|
+
private filterSchemaIgnoreKey;
|
|
537
|
+
private filterSchemaSnoozeKey;
|
|
538
|
+
private filterSchemaNotifiedKey;
|
|
539
|
+
constructor(crud: GenericCrudService<any>, configStorage: AsyncConfigStorage, destroyRef: DestroyRef, filterConfig: FilterConfigService, settingsPanel: SettingsPanelService, snackBar: MatSnackBar, dialog: MatDialog, cdr: ChangeDetectorRef, ngZone: NgZone, dynamicForm: DynamicFormService, schemaNormalizer: SchemaNormalizerService, componentKeys: ComponentKeyService, route?: ActivatedRoute | undefined);
|
|
361
540
|
private readonly global;
|
|
541
|
+
private isFilterDebugEnabled;
|
|
542
|
+
private logFilterDebug;
|
|
543
|
+
private logFilterWarn;
|
|
362
544
|
private readonly filterDrawerAdapter;
|
|
545
|
+
private lastSavedConfigJson;
|
|
546
|
+
private setSchemaLoading;
|
|
547
|
+
private setActiveFiltersCount;
|
|
363
548
|
private loadSavedTagsFromStorage;
|
|
364
|
-
ngOnInit(): void
|
|
549
|
+
ngOnInit(): Promise<void>;
|
|
365
550
|
ngAfterViewInit(): void;
|
|
366
551
|
onWindowResize(): void;
|
|
367
552
|
private initDynamicObservers;
|
|
@@ -369,23 +554,38 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
369
554
|
private updateOverlayWidth;
|
|
370
555
|
private computeIsMobile;
|
|
371
556
|
ngOnChanges(changes: SimpleChanges): void;
|
|
557
|
+
private areStringArraysEqual;
|
|
558
|
+
private areMetadataOverrideMapsEqual;
|
|
559
|
+
/** Force-sync settings coming from parent table config updates. */
|
|
560
|
+
applyExternalSettings(cfg?: Partial<FilterConfig>): void;
|
|
372
561
|
openSettings(): void;
|
|
373
|
-
switchToFilter(): void;
|
|
374
562
|
createTag(label?: string): void;
|
|
375
563
|
renameTag(tag: FilterTag, label?: string): void;
|
|
376
564
|
deleteTag(tag: FilterTag): void;
|
|
565
|
+
removeFilter(tag: FilterTag): void;
|
|
377
566
|
startEditTag(tag: FilterTag, $event?: Event): void;
|
|
378
567
|
commitEditTag(tag: FilterTag, $event?: Event): void;
|
|
379
568
|
cancelEditTag($event?: Event): void;
|
|
380
569
|
advancedForm?: FormGroup<Record<string, any>>;
|
|
570
|
+
isActiveTag(tag: FilterTag): boolean;
|
|
571
|
+
private equalsDto;
|
|
572
|
+
private normalizeForCompare;
|
|
381
573
|
private buildFilteredSchemaContext;
|
|
382
574
|
private loadSchemaViaClient;
|
|
383
575
|
loadSchema(): void;
|
|
384
576
|
private applySchemaMetas;
|
|
577
|
+
private applySchemaMetasNow;
|
|
578
|
+
private pickMetasByOrder;
|
|
579
|
+
private withInferredFilterControlType;
|
|
580
|
+
private isAllowedFilterControlType;
|
|
581
|
+
private inferFilterControlType;
|
|
582
|
+
private cloneAlwaysVisibleMetadataOverrides;
|
|
583
|
+
private sanitizeAlwaysVisibleMetadataOverrides;
|
|
584
|
+
private sanitizeMetadataOverrideValue;
|
|
585
|
+
private mergeAlwaysVisibleMetadata;
|
|
385
586
|
ngDoCheck(): void;
|
|
386
|
-
onQuickComponents(map: Map<string, any>): void;
|
|
387
|
-
onQuickFieldCreated(ev: any): void;
|
|
388
587
|
onAlwaysComponents(map: Map<string, any>): void;
|
|
588
|
+
onSelectedComponents(map: Map<string, any>): void;
|
|
389
589
|
onToggleComponents(map: Map<string, any>): void;
|
|
390
590
|
onAdvancedReady(event: {
|
|
391
591
|
formGroup: FormGroup<Record<string, any>>;
|
|
@@ -394,20 +594,28 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
394
594
|
formData: Record<string, any>;
|
|
395
595
|
}): void;
|
|
396
596
|
onAdvancedValidityChange(valid: boolean): void;
|
|
597
|
+
onAddOpened(opened: boolean): void;
|
|
598
|
+
onAddQuery(q: string): void;
|
|
599
|
+
private updateAddItems;
|
|
600
|
+
trackById(_idx: number, it: {
|
|
601
|
+
id: string;
|
|
602
|
+
}): string;
|
|
603
|
+
onAddSelectionChange(values: string[] | null | undefined): void;
|
|
604
|
+
private formatWithCount;
|
|
605
|
+
getAddAriaLabel(): string;
|
|
606
|
+
getAddTriggerLabel(): string;
|
|
607
|
+
getActiveFiltersLabel(): string;
|
|
608
|
+
isAllSelected(): boolean;
|
|
609
|
+
isSomeSelected(): boolean;
|
|
610
|
+
toggleSelectAll(): void;
|
|
397
611
|
onAdvancedSubmit(event: {
|
|
398
612
|
formData: Record<string, any>;
|
|
399
613
|
}): void;
|
|
400
614
|
private closeAdvanced;
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
subtitle?: (s: any) => string;
|
|
406
|
-
badges?: Array<(s: any) => string>;
|
|
407
|
-
} | undefined;
|
|
408
|
-
private updateAutoSummary;
|
|
409
|
-
private defaultSummaryMap;
|
|
410
|
-
private formatValueForBadge;
|
|
615
|
+
/** Salva o estado atual dos filtros como um atalho (tag) do usuário */
|
|
616
|
+
saveCurrentAsTag(): void;
|
|
617
|
+
/** Persistência centralizada de atalho a partir de um DTO explícito */
|
|
618
|
+
private saveAsShortcutFromDto;
|
|
411
619
|
getAdvancedAriaLabel(): string;
|
|
412
620
|
private getSchemaMetaKey;
|
|
413
621
|
private getOutdatedIgnoreKey;
|
|
@@ -421,287 +629,359 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
421
629
|
private wasOutdatedNotified;
|
|
422
630
|
private verifyServerSchemaVersion;
|
|
423
631
|
private maybeShowOutdatedSnack;
|
|
424
|
-
/**
|
|
425
|
-
* Sets up Quick Field creating a control from metadata and wiring it to quickForm.
|
|
426
|
-
* Falls back to generic input if creation fails.
|
|
427
|
-
*/
|
|
428
|
-
private setupQuickField;
|
|
429
|
-
/**
|
|
430
|
-
* Ensures fallback setup happens only once, preventing multiple executions.
|
|
431
|
-
*/
|
|
432
|
-
private ensureFallbackSetup;
|
|
433
|
-
/**
|
|
434
|
-
* Fallback method - maintains current behavior with generic string input.
|
|
435
|
-
* This ensures the system continues working even if dynamic creation fails.
|
|
436
|
-
*/
|
|
437
|
-
private setupQuickFieldFallback;
|
|
438
|
-
/**
|
|
439
|
-
* Applies pending quick value to typed control with proper conversion.
|
|
440
|
-
*/
|
|
441
|
-
private applyPendingQuickValue;
|
|
442
|
-
getQuickFieldIcon(): string;
|
|
443
|
-
getQuickInputType(): string;
|
|
444
|
-
getQuickInputMode(): string | null;
|
|
445
632
|
ngOnDestroy(): void;
|
|
446
633
|
isUserTag(tag: FilterTag): boolean;
|
|
447
634
|
applyTag(tag: FilterTag): void;
|
|
448
|
-
onQuickNumericKeypress(event: KeyboardEvent): void;
|
|
449
|
-
onQuickBlurFormat(): void;
|
|
450
|
-
private bindQuickControlChanges;
|
|
451
635
|
private bindAdvancedDebounce;
|
|
452
636
|
onSubmit(): void;
|
|
453
637
|
onClear(): void;
|
|
454
|
-
quickHasValue(): boolean;
|
|
455
638
|
private isEventFromNestedOverlay;
|
|
456
|
-
|
|
457
|
-
onOverlayOutsideClick(_event: MouseEvent): void;
|
|
639
|
+
private ensureAdvancedConfigReady;
|
|
458
640
|
private openAdvancedModal;
|
|
459
641
|
private openAdvancedDrawer;
|
|
460
642
|
toggleAdvanced(): void;
|
|
643
|
+
private usesProvidedFieldMetadata;
|
|
644
|
+
private applyProvidedFieldMetadata;
|
|
461
645
|
private saveConfig;
|
|
646
|
+
private captureLastActiveElement;
|
|
647
|
+
private restoreFocusAfterAdvanced;
|
|
462
648
|
private mergeI18n;
|
|
463
649
|
private persist;
|
|
464
650
|
private clearPersisted;
|
|
465
651
|
private persistTags;
|
|
652
|
+
private cleanFilterPayload;
|
|
653
|
+
private upsertDtoValue;
|
|
654
|
+
private isEffectivelyEmptyFilterValue;
|
|
466
655
|
private syncFormsToDto;
|
|
467
|
-
onQuickClear(): void;
|
|
468
656
|
private updateDisplayedTags;
|
|
469
|
-
private
|
|
657
|
+
private normalizeMode;
|
|
658
|
+
private normalizeAdvancedOpenMode;
|
|
470
659
|
onGlobalKeydown(event: KeyboardEvent): void;
|
|
471
660
|
private isEditableElement;
|
|
472
661
|
private focusQuick;
|
|
473
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter,
|
|
474
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "formId": { "alias": "formId"; "required":
|
|
662
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter, [null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
|
|
663
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "filterId": { "alias": "filterId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "alwaysVisibleFieldMetadataOverrides": { "alias": "alwaysVisibleFieldMetadataOverrides"; "required": false; }; "selectedFieldIds": { "alias": "selectedFieldIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "useInlineSelectVariant": { "alias": "useInlineSelectVariant"; "required": false; }; "useInlineSearchableSelectVariant": { "alias": "useInlineSearchableSelectVariant"; "required": false; }; "useInlineMultiSelectVariant": { "alias": "useInlineMultiSelectVariant"; "required": false; }; "useInlineInputVariant": { "alias": "useInlineInputVariant"; "required": false; }; "useInlineToggleVariant": { "alias": "useInlineToggleVariant"; "required": false; }; "useInlineRangeVariant": { "alias": "useInlineRangeVariant"; "required": false; }; "useInlineDateVariant": { "alias": "useInlineDateVariant"; "required": false; }; "useInlineDateRangeVariant": { "alias": "useInlineDateRangeVariant"; "required": false; }; "useInlineTimeVariant": { "alias": "useInlineTimeVariant"; "required": false; }; "useInlineTimeRangeVariant": { "alias": "useInlineTimeRangeVariant"; "required": false; }; "useInlineTreeSelectVariant": { "alias": "useInlineTreeSelectVariant"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; "advancedClearButtonsEnabled": { "alias": "advancedClearButtonsEnabled"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "tagsChange": "tagsChange"; "selectedFieldIdsChange": "selectedFieldIdsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
|
|
475
664
|
}
|
|
476
665
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
id?: string;
|
|
480
|
-
code?: string;
|
|
481
|
-
key?: string;
|
|
482
|
-
name?: string;
|
|
483
|
-
type?: string;
|
|
484
|
-
icon?: string;
|
|
485
|
-
label?: string;
|
|
486
|
-
}
|
|
487
|
-
declare function getActionId(action: ActionLike): string;
|
|
488
|
-
|
|
489
|
-
interface RowActionConfig extends ActionLike {
|
|
490
|
-
/**
|
|
491
|
-
* Identifier of the action. Historically this property was named `id`
|
|
492
|
-
* in some configurations, so both `action` and `id` are supported.
|
|
493
|
-
*/
|
|
494
|
-
icon: string;
|
|
666
|
+
type SchemaFieldHint = {
|
|
667
|
+
name: string;
|
|
495
668
|
label?: string;
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
lg: number;
|
|
510
|
-
} | 'auto';
|
|
511
|
-
autoStrategy?: 'measure' | 'breakpoint';
|
|
512
|
-
}
|
|
669
|
+
type?: string;
|
|
670
|
+
controlType?: string;
|
|
671
|
+
numericFormat?: string;
|
|
672
|
+
options?: Array<Record<string, unknown> | string | number | boolean>;
|
|
673
|
+
optionLabelKey?: string;
|
|
674
|
+
optionValueKey?: string;
|
|
675
|
+
enumValues?: string[];
|
|
676
|
+
};
|
|
677
|
+
type DataMode = 'remote' | 'local' | 'empty';
|
|
678
|
+
type RowActionRuntimeOptions = {
|
|
679
|
+
payload?: any;
|
|
680
|
+
actionConfig?: any;
|
|
681
|
+
};
|
|
513
682
|
declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy {
|
|
514
|
-
private crudService;
|
|
515
683
|
private cdr;
|
|
516
684
|
private settingsPanel;
|
|
517
|
-
private
|
|
518
|
-
private specBridge;
|
|
519
|
-
private configStorage;
|
|
520
|
-
private connectionStorage;
|
|
685
|
+
private crudService;
|
|
521
686
|
private tableDefaultsProvider;
|
|
522
|
-
|
|
523
|
-
private
|
|
687
|
+
filterConfig: FilterConfigService;
|
|
688
|
+
private formattingService;
|
|
524
689
|
private pxDialog;
|
|
690
|
+
private snackBar;
|
|
691
|
+
private asyncConfigStorage;
|
|
692
|
+
private connectionStorage;
|
|
525
693
|
private hostRef;
|
|
526
694
|
private global;
|
|
695
|
+
private componentKeys;
|
|
696
|
+
private loadingOrchestrator;
|
|
697
|
+
private loadingRenderer?;
|
|
698
|
+
private route?;
|
|
699
|
+
private logger?;
|
|
700
|
+
private static dslRuntimeInstanceCounter;
|
|
527
701
|
config: TableConfig;
|
|
528
|
-
resourcePath
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
702
|
+
resourcePath: string;
|
|
703
|
+
data: any[] | null;
|
|
704
|
+
tableId: string;
|
|
705
|
+
componentInstanceId?: string;
|
|
706
|
+
title: string;
|
|
707
|
+
subtitle: string;
|
|
708
|
+
icon: string;
|
|
709
|
+
autoDelete: boolean;
|
|
710
|
+
notifyIfOutdated: boolean;
|
|
533
711
|
snoozeMs: number;
|
|
534
|
-
/** Auto open settings when schema is detected as outdated (only in edit mode) */
|
|
535
712
|
autoOpenSettingsOnOutdated: boolean;
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
dense: boolean;
|
|
546
|
-
/** Identifier used for settings storage */
|
|
547
|
-
tableId: string;
|
|
548
|
-
/** Habilita visual de debug para alinhamento/layouot */
|
|
549
|
-
debugLayout: boolean;
|
|
550
|
-
/** Contexto opcional quando tabela está dentro do componente CRUD */
|
|
551
|
-
crudContext?: {
|
|
552
|
-
tableId: string;
|
|
553
|
-
resourcePath?: string;
|
|
554
|
-
defaults?: {
|
|
555
|
-
openMode?: 'modal' | 'route';
|
|
556
|
-
modal?: Record<string, any>;
|
|
557
|
-
back?: Record<string, any>;
|
|
558
|
-
};
|
|
559
|
-
actions?: Array<{
|
|
560
|
-
action: string;
|
|
561
|
-
label?: string;
|
|
562
|
-
formId?: string;
|
|
563
|
-
route?: string;
|
|
564
|
-
openMode?: 'modal' | 'route';
|
|
565
|
-
}>;
|
|
566
|
-
/** Nome do campo usado como identificador primário (default: 'id') */
|
|
567
|
-
idField?: string;
|
|
568
|
-
};
|
|
569
|
-
/** Nome do campo usado como identificador primário (default: 'id'). Tem precedência sobre crudContext.idField. */
|
|
570
|
-
idField?: string;
|
|
571
|
-
rowClick: EventEmitter<{
|
|
572
|
-
row: any;
|
|
573
|
-
index: number;
|
|
574
|
-
}>;
|
|
575
|
-
rowAction: EventEmitter<{
|
|
576
|
-
action: string;
|
|
577
|
-
row: any;
|
|
578
|
-
}>;
|
|
579
|
-
toolbarAction: EventEmitter<{
|
|
580
|
-
action: string;
|
|
581
|
-
}>;
|
|
582
|
-
bulkAction: EventEmitter<{
|
|
583
|
-
action: string;
|
|
584
|
-
rows: any[];
|
|
585
|
-
}>;
|
|
586
|
-
/** Emits on row double click according to behavior config */
|
|
587
|
-
rowDoubleClick: EventEmitter<{
|
|
588
|
-
action: string;
|
|
589
|
-
row: any;
|
|
590
|
-
}>;
|
|
591
|
-
/** Emits whenever schema outdated state changes (can be used by host) */
|
|
592
|
-
schemaStatusChange: EventEmitter<{
|
|
593
|
-
outdated: boolean;
|
|
594
|
-
serverHash?: string;
|
|
595
|
-
lastVerifiedAt?: string;
|
|
596
|
-
resourcePath?: string;
|
|
597
|
-
}>;
|
|
713
|
+
crudContext: any;
|
|
714
|
+
dslFunctionRegistry: FunctionRegistry<any> | null;
|
|
715
|
+
rowClick: EventEmitter<any>;
|
|
716
|
+
rowDoubleClick: EventEmitter<any>;
|
|
717
|
+
rowAction: EventEmitter<any>;
|
|
718
|
+
toolbarAction: EventEmitter<any>;
|
|
719
|
+
bulkAction: EventEmitter<any>;
|
|
720
|
+
columnReorder: EventEmitter<any>;
|
|
721
|
+
columnReorderAttempt: EventEmitter<any>;
|
|
598
722
|
beforeDelete: EventEmitter<any>;
|
|
599
723
|
afterDelete: EventEmitter<any>;
|
|
600
|
-
deleteError: EventEmitter<
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
projectedFilter?: PraxisFilter;
|
|
724
|
+
deleteError: EventEmitter<any>;
|
|
725
|
+
beforeBulkDelete: EventEmitter<any>;
|
|
726
|
+
afterBulkDelete: EventEmitter<any>;
|
|
727
|
+
bulkDeleteError: EventEmitter<any>;
|
|
728
|
+
schemaStatusChange: EventEmitter<any>;
|
|
729
|
+
metadataChange: EventEmitter<any>;
|
|
730
|
+
loadingStateChange: EventEmitter<LoadingState>;
|
|
731
|
+
paginator: MatPaginator;
|
|
732
|
+
sort: MatSort;
|
|
733
|
+
internalFilter?: PraxisFilter;
|
|
734
|
+
toolbar: PraxisTableToolbar;
|
|
735
|
+
projectedFilter: any;
|
|
736
|
+
toolbarV2: boolean;
|
|
614
737
|
dataSource: MatTableDataSource<any, MatPaginator>;
|
|
615
|
-
displayedColumns: string[];
|
|
616
|
-
visibleColumns: ColumnDefinition[];
|
|
617
|
-
private dataSubject;
|
|
618
738
|
selection: SelectionModel<any>;
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
private
|
|
739
|
+
dataSubject: BehaviorSubject<any[]>;
|
|
740
|
+
subscriptions: Subscription[];
|
|
741
|
+
showToolbar: boolean;
|
|
742
|
+
hasInitialized: boolean;
|
|
743
|
+
pageIndex: number;
|
|
744
|
+
pageSize: number;
|
|
745
|
+
sortState: Sort;
|
|
746
|
+
filterCriteria: any;
|
|
747
|
+
visibleColumns: ColumnDefinition[];
|
|
748
|
+
visibleDataColumnsForDrag: ColumnDefinition[];
|
|
749
|
+
displayedColumns: string[];
|
|
750
|
+
columnReorderStatusMessage: string;
|
|
751
|
+
columnReorderVisualStatusMessage: string;
|
|
752
|
+
private columnReorderStatusTimer;
|
|
753
|
+
private columnReorderVisualStatusTimer;
|
|
754
|
+
private columnReorderUndoSubscription;
|
|
755
|
+
private columnReorderOperationCounter;
|
|
756
|
+
private latestColumnReorderOperationId;
|
|
757
|
+
localSource: any[];
|
|
758
|
+
localView: any[];
|
|
759
|
+
localTotal: number;
|
|
760
|
+
private localPageSizeRuntimeOverride;
|
|
761
|
+
private lastResolvedDataMode;
|
|
762
|
+
private localFilterFieldMetadataCache;
|
|
763
|
+
private localFilterFieldMetadataCacheKey;
|
|
764
|
+
private schemaFieldsSnapshot;
|
|
634
765
|
schemaError: boolean;
|
|
635
766
|
dataError: boolean;
|
|
636
767
|
errorMessage: string | null;
|
|
768
|
+
idField: string;
|
|
769
|
+
horizontalScroll: 'auto' | 'wrap' | 'none';
|
|
770
|
+
private horizontalScrollOverrideSource;
|
|
771
|
+
getToolbarPosition(): 'top' | 'bottom' | 'both';
|
|
772
|
+
shouldShowToolbarTopPlacement(): boolean;
|
|
773
|
+
shouldShowToolbarBottomPlacement(): boolean;
|
|
774
|
+
shouldRenderFooterToolbar(): boolean;
|
|
775
|
+
shouldShowFooterToolbarMain(): boolean;
|
|
776
|
+
shouldShowFooterToolbarEndActions(): boolean;
|
|
777
|
+
shouldShowFooterToolbarReset(): boolean;
|
|
778
|
+
getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
|
|
779
|
+
getBulkActionsPosition(): 'toolbar' | 'floating' | 'both';
|
|
780
|
+
shouldRenderFloatingBulkActions(): boolean;
|
|
781
|
+
getFloatingBulkActions(): any[];
|
|
782
|
+
shouldHideFloatingBulkActions(): boolean;
|
|
783
|
+
getFloatingBulkPositionClass(): string;
|
|
784
|
+
isFloatingBulkActionDisabled(action: any): boolean;
|
|
785
|
+
shouldShowToolbarActionsTop(): boolean;
|
|
786
|
+
shouldShowToolbarActionsBottom(): boolean;
|
|
787
|
+
getToolbarActionsBackgroundColor(): string | null;
|
|
788
|
+
getToolbarLayoutHeightPx(): number | null;
|
|
789
|
+
getToolbarLayoutHeightCssVar(): string | null;
|
|
790
|
+
getToolbarLayoutHeightHostStyle(): string | null;
|
|
791
|
+
getRowActionsWidthStyle(): string | null;
|
|
792
|
+
getColumnTextAlignStyle(column: ColumnDefinition): string | null;
|
|
793
|
+
getColumnWidthStyle(column: ColumnDefinition): string | null;
|
|
794
|
+
getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
|
|
795
|
+
getColumnCellAttrStyle(column: ColumnDefinition): string | null;
|
|
796
|
+
getTableElevationClassName(): string;
|
|
797
|
+
private normalizeTableElevationLevel;
|
|
798
|
+
private resolveRuntimeTableElevationLevel;
|
|
799
|
+
private resolveTableShadowColor;
|
|
800
|
+
private buildTableElevationShadow;
|
|
801
|
+
private syncHorizontalScrollFromAppearanceConfig;
|
|
802
|
+
private resolveResponsiveMobileBreakpoint;
|
|
803
|
+
private shouldApplyResponsiveHorizontalScrollGlobally;
|
|
804
|
+
private isWithinResponsiveMobileBreakpoint;
|
|
805
|
+
private refreshResponsiveHorizontalScroll;
|
|
806
|
+
hasBottomPaginator(): boolean;
|
|
807
|
+
hasExplicitResourcePath(): boolean;
|
|
808
|
+
hasLocalDataInput(): boolean;
|
|
809
|
+
getDataMode(): DataMode;
|
|
810
|
+
isRemoteMode(): boolean;
|
|
811
|
+
isLocalMode(): boolean;
|
|
812
|
+
isEmptyMode(): boolean;
|
|
813
|
+
isLocalDataModeFeatureEnabled(): boolean;
|
|
814
|
+
isLocalDataModeActive(): boolean;
|
|
815
|
+
shouldRenderDataSurface(): boolean;
|
|
816
|
+
shouldShowEmptyState(): boolean;
|
|
817
|
+
shouldRenderAdvancedFilter(): boolean;
|
|
818
|
+
getAdvancedFilterResourcePath(): string;
|
|
819
|
+
getAdvancedFilterPersistenceKey(): string;
|
|
820
|
+
getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
|
|
821
|
+
private buildLocalFilterMetadata;
|
|
822
|
+
private buildLocalFilterMetadataCacheKey;
|
|
823
|
+
private resolveLocalFilterDataType;
|
|
824
|
+
private resolveLocalFilterControlType;
|
|
825
|
+
private schemaState;
|
|
637
826
|
schemaOutdated: boolean;
|
|
827
|
+
editModeEnabled: boolean;
|
|
638
828
|
private _resolvedPrefs;
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
private
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
private
|
|
658
|
-
private
|
|
659
|
-
private
|
|
660
|
-
private
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
private
|
|
668
|
-
private
|
|
669
|
-
private
|
|
670
|
-
private
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
private
|
|
678
|
-
|
|
829
|
+
set resolvedPrefs(val: any);
|
|
830
|
+
get resolvedPrefs(): any;
|
|
831
|
+
dense: boolean;
|
|
832
|
+
private resolveAppearanceDensity;
|
|
833
|
+
get hostDensityCompactClass(): boolean;
|
|
834
|
+
get hostDensityComfortableClass(): boolean;
|
|
835
|
+
get hostDensitySpaciousClass(): boolean;
|
|
836
|
+
get hostRowBordersClass(): boolean;
|
|
837
|
+
get hostColumnBordersClass(): boolean;
|
|
838
|
+
trackByRow(index: number, item: any): any;
|
|
839
|
+
getSchemaFieldsSnapshot(): SchemaFieldHint[];
|
|
840
|
+
aiAdapter: any;
|
|
841
|
+
private aiAdapterLoadStarted;
|
|
842
|
+
styleSpecCache: Map<string, any>;
|
|
843
|
+
actionSpecCache: Map<string, any>;
|
|
844
|
+
private computedContextCache;
|
|
845
|
+
private computedFieldNames;
|
|
846
|
+
dslParser: DslParser<any>;
|
|
847
|
+
private dslRuntimeRegistry;
|
|
848
|
+
private readonly dslRuntimeContextKey;
|
|
849
|
+
private computedExpressionEvaluator;
|
|
850
|
+
private resizeObserver;
|
|
851
|
+
private removeViewportChangeListeners;
|
|
852
|
+
private warnedMissingId;
|
|
853
|
+
private readonly warnedUnsupportedFeatures;
|
|
854
|
+
private warnedStrictCspStyleMode;
|
|
855
|
+
private fallbackLogger?;
|
|
856
|
+
private fallbackLoggerEnvironment;
|
|
857
|
+
private lastColumnDropHandledAt;
|
|
858
|
+
private activeColumnDragField;
|
|
859
|
+
private getLogger;
|
|
860
|
+
private buildLogOptions;
|
|
861
|
+
private debugLog;
|
|
862
|
+
private debugLogWithMeta;
|
|
863
|
+
private warnLog;
|
|
864
|
+
private warnOnceLog;
|
|
865
|
+
private errorLog;
|
|
866
|
+
private logResolvedDataMode;
|
|
867
|
+
private clearModeErrors;
|
|
868
|
+
private resetRuntimeStateForModeTransition;
|
|
869
|
+
private clearRenderedRowsForModeTransition;
|
|
870
|
+
private applyDataModeTransition;
|
|
871
|
+
private reconcileDataModeTransition;
|
|
872
|
+
private clearLocalScaffolding;
|
|
873
|
+
private syncPaginationTotal;
|
|
874
|
+
private refreshLocalScaffolding;
|
|
875
|
+
private syncLocalPageSizeFromConfig;
|
|
876
|
+
private recomputeLocalView;
|
|
877
|
+
private resolveLocalSortField;
|
|
878
|
+
private setSchemaFieldsSnapshot;
|
|
879
|
+
private normalizeSchemaOptions;
|
|
880
|
+
private normalizeEnumValues;
|
|
881
|
+
private normalizeSchemaKey;
|
|
882
|
+
private clearSchemaFieldsSnapshot;
|
|
883
|
+
private componentKeyId;
|
|
884
|
+
private storageKey;
|
|
885
|
+
private tableConfigKey;
|
|
886
|
+
private filterConfigKey;
|
|
887
|
+
private warnMissingId;
|
|
888
|
+
private ensureConfigDefaults;
|
|
889
|
+
private setShowToolbar;
|
|
890
|
+
private configureDslRuntime;
|
|
891
|
+
constructor(cdr: ChangeDetectorRef, settingsPanel: SettingsPanelService, crudService: GenericCrudService<any, any>, tableDefaultsProvider: TableDefaultsProvider, filterConfig: FilterConfigService, formattingService: DataFormattingService, pxDialog: PraxisDialog, snackBar: MatSnackBar, asyncConfigStorage: AsyncConfigStorage, connectionStorage: ConnectionStorage, hostRef: ElementRef<HTMLElement>, global: GlobalConfigService, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
|
|
892
|
+
private ensureAiAdapterLoaded;
|
|
893
|
+
private emitLoadingState;
|
|
894
|
+
private buildLoadingContext;
|
|
895
|
+
private beginLoading;
|
|
896
|
+
private endLoading;
|
|
679
897
|
openQuickConnect(): void;
|
|
680
|
-
ngOnInit(): void
|
|
898
|
+
ngOnInit(): Promise<void>;
|
|
681
899
|
ngAfterContentInit(): void;
|
|
682
900
|
ngOnChanges(changes: SimpleChanges): void;
|
|
683
901
|
private isDebug;
|
|
684
902
|
private connectionKey;
|
|
685
903
|
private saveConnection;
|
|
904
|
+
private inputsKey;
|
|
905
|
+
private normalizeResourcePathIntent;
|
|
906
|
+
private resolveResourcePathIntentFromEditor;
|
|
907
|
+
private applyResourcePathIntentFromEditor;
|
|
686
908
|
disconnect(): void;
|
|
687
909
|
ngAfterViewInit(): void;
|
|
688
910
|
onPageChange(event: PageEvent): void;
|
|
689
911
|
onSortChange(event: Sort): void;
|
|
690
912
|
onRowClicked(row: any, index: number): void;
|
|
691
913
|
onRowDoubleClicked(row: any, index: number): void;
|
|
692
|
-
onRowAction(action: string, row: any, event: Event): void;
|
|
914
|
+
onRowAction(action: string, row: any, event: Event, runtimeOptions?: RowActionRuntimeOptions): void;
|
|
915
|
+
private resolveRowActionRuntimeOptions;
|
|
916
|
+
private emitRowActionEvent;
|
|
693
917
|
private showConfirmDialog;
|
|
694
918
|
private executeDeleteAction;
|
|
919
|
+
private cloneForEmit;
|
|
920
|
+
private interpolateActionMessageTemplate;
|
|
921
|
+
private buildActionFeedbackContext;
|
|
922
|
+
private resolveActionFeedbackMessage;
|
|
923
|
+
private showActionFeedbackMessage;
|
|
924
|
+
private emitEventWithActionFeedback;
|
|
925
|
+
private resolveBulkValidationMessage;
|
|
926
|
+
private hasValidBulkSelectionCount;
|
|
927
|
+
private showBulkConfirmDialog;
|
|
695
928
|
onToolbarAction(event: {
|
|
696
929
|
action: string;
|
|
930
|
+
actionConfig?: any;
|
|
697
931
|
}): void;
|
|
698
932
|
onAdvancedFilterSubmit(criteria: Record<string, any>): void;
|
|
699
933
|
onAdvancedFilterClear(): void;
|
|
934
|
+
private saveConfigWithAck;
|
|
935
|
+
private clearConfigWithAck;
|
|
936
|
+
private persistHorizontalScrollInput;
|
|
937
|
+
private showPersistenceFailureFeedback;
|
|
938
|
+
private showResetSuccessFeedback;
|
|
700
939
|
openTableSettings(): void;
|
|
701
940
|
private applyTableConfig;
|
|
941
|
+
private withFallbackAdvancedFilterSettings;
|
|
942
|
+
private syncInternalFilterSettings;
|
|
943
|
+
private resetPreferencesToDefaults;
|
|
702
944
|
onResetPreferences(): void;
|
|
945
|
+
private resolvePagingStrategy;
|
|
946
|
+
private resolveSortingStrategy;
|
|
703
947
|
private applyDataSourceSettings;
|
|
948
|
+
private sanitizeColumns;
|
|
704
949
|
private setupColumns;
|
|
950
|
+
private isDataColumnField;
|
|
951
|
+
private computeVisibleDataColumnsForDrag;
|
|
952
|
+
getVisibleDataColumnsForDrag(): ColumnDefinition[];
|
|
953
|
+
isColumnDraggingEnabled(): boolean;
|
|
954
|
+
isColumnDragIndicatorEnabled(): boolean;
|
|
955
|
+
isColumnDraggable(column: ColumnDefinition | null | undefined): boolean;
|
|
956
|
+
private resolveColumnReorderHeader;
|
|
957
|
+
private isEnglishLocale;
|
|
958
|
+
private isColumnDragDebugEnabled;
|
|
959
|
+
private logColumnDragDebug;
|
|
960
|
+
private resolveTableMessageTemplate;
|
|
961
|
+
private resolveTableMessage;
|
|
962
|
+
getColumnDragHandleAriaLabel(column: ColumnDefinition): string;
|
|
963
|
+
getColumnDragHandleTooltip(column: ColumnDefinition): string;
|
|
964
|
+
private publishColumnReorderStatus;
|
|
965
|
+
private publishColumnReorderVisualStatus;
|
|
966
|
+
private clearColumnReorderVisualStatus;
|
|
967
|
+
private clearColumnReorderUndoSubscription;
|
|
968
|
+
private emitColumnReorderAttempt;
|
|
969
|
+
private createColumnReorderOperationId;
|
|
970
|
+
private isLatestColumnReorderOperation;
|
|
971
|
+
private offerColumnReorderUndo;
|
|
972
|
+
private restoreColumnOrderFromUndo;
|
|
973
|
+
onColumnDragHandleKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
|
|
974
|
+
onColumnDrop(event: CdkDragDrop<ColumnDefinition[]>): void;
|
|
975
|
+
onColumnDragStarted(column: ColumnDefinition): void;
|
|
976
|
+
onColumnDragEnded(event: CdkDragEnd<ColumnDefinition>, column: ColumnDefinition): void;
|
|
977
|
+
private applyColumnReorder;
|
|
978
|
+
private reorderConfigColumnsByVisibleOrder;
|
|
979
|
+
private haveSameFieldMultiset;
|
|
980
|
+
private resolveColumnDropZone;
|
|
981
|
+
private normalizeDropZoneToken;
|
|
982
|
+
private parseColumnDropZoneRules;
|
|
983
|
+
private canDropAcrossColumnZones;
|
|
984
|
+
private persistTableConfigAfterRuntimeMutation;
|
|
705
985
|
private applyDefaultSortIfNone;
|
|
706
986
|
/**
|
|
707
987
|
* Performs a lightweight server schema verification using ETag/If-None-Match without
|
|
@@ -711,6 +991,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
711
991
|
private verifyServerSchemaVersion;
|
|
712
992
|
private loadSchema;
|
|
713
993
|
private convertFieldToColumn;
|
|
994
|
+
/**
|
|
995
|
+
* Apply automatic renderer hints based on schema field metadata.
|
|
996
|
+
* Runs only on initial bootstrap (when columns are derived from schema).
|
|
997
|
+
*/
|
|
998
|
+
private applyAutoRenderer;
|
|
714
999
|
/**
|
|
715
1000
|
* Check if a value is a valid ColumnDataType
|
|
716
1001
|
*/
|
|
@@ -734,9 +1019,28 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
734
1019
|
getCellValue(rowData: any, column: ColumnDefinition): any;
|
|
735
1020
|
getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
|
|
736
1021
|
getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
|
|
1022
|
+
private resetComputedContextCache;
|
|
1023
|
+
private collectComputedFieldNames;
|
|
1024
|
+
private buildComputedSignature;
|
|
1025
|
+
private stringifyDependencyValue;
|
|
1026
|
+
private buildComputedValueMap;
|
|
1027
|
+
private buildEvaluationContext;
|
|
1028
|
+
private isUnsafeComputedField;
|
|
737
1029
|
private evaluateStyleRule;
|
|
1030
|
+
private evaluateActionVisibilityCondition;
|
|
1031
|
+
private evaluateActionDisabledCondition;
|
|
1032
|
+
/** Evaluate row action conditions using the same DSL runtime with explicit failure policy. */
|
|
1033
|
+
private evaluateActionCondition;
|
|
1034
|
+
private resolveRowVisibleWhenFailurePolicy;
|
|
1035
|
+
private resolveRuntimeEnvironment;
|
|
1036
|
+
private isDiagnosticsRuntimeEnvironment;
|
|
1037
|
+
private logActionConditionFallback;
|
|
738
1038
|
getRowClasses(rowData: any): string[] | undefined;
|
|
739
1039
|
getRowNgStyle(rowData: any): Record<string, string> | undefined;
|
|
1040
|
+
private getRowRenderer;
|
|
1041
|
+
getRowTooltip(rowData: any): any;
|
|
1042
|
+
getRowTooltipPosition(rowData: any): 'above' | 'below' | 'left' | 'right';
|
|
1043
|
+
getRowTooltipShowDelay(rowData: any): number;
|
|
740
1044
|
/**
|
|
741
1045
|
* Apply value mapping to transform raw values into display-friendly text
|
|
742
1046
|
*/
|
|
@@ -777,6 +1081,13 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
777
1081
|
* Obtém configurações de i18n para o filtro baseado na configuração da tabela
|
|
778
1082
|
*/
|
|
779
1083
|
getFilterI18n(): Partial<I18n> | undefined;
|
|
1084
|
+
private warnUnsupportedFeature;
|
|
1085
|
+
private isMultiSortSupported;
|
|
1086
|
+
private isColumnFiltersSupported;
|
|
1087
|
+
private isRowDraggingSupported;
|
|
1088
|
+
private enforceAppearanceSchemaGuards;
|
|
1089
|
+
private enforceUnsupportedFeatureGuards;
|
|
1090
|
+
getToolbarDslContext(): Record<string, any>;
|
|
780
1091
|
getIconName(row: any, column: ColumnDefinition): string | null;
|
|
781
1092
|
getIconColor(_row: any, column: ColumnDefinition): string | null;
|
|
782
1093
|
getIconStyle(_row: any, column: ColumnDefinition): Record<string, string> | null;
|
|
@@ -787,38 +1098,165 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
787
1098
|
* Falls back safely on error.
|
|
788
1099
|
*/
|
|
789
1100
|
private evaluateValueExpr;
|
|
1101
|
+
private evaluateComputedValue;
|
|
1102
|
+
private evaluateLegacyExpression;
|
|
1103
|
+
private tryEvaluateLegacyConcat;
|
|
1104
|
+
private tryEvaluateLegacyTernary;
|
|
1105
|
+
private tryEvaluateLegacyCoalesce;
|
|
1106
|
+
private normalizeLegacyExpression;
|
|
1107
|
+
private extractLegacyArrayItems;
|
|
1108
|
+
private splitTopLevelTernary;
|
|
1109
|
+
private findTopLevelOperator;
|
|
1110
|
+
private splitTopLevel;
|
|
1111
|
+
private findMatchingBracket;
|
|
1112
|
+
private normalizeExpression;
|
|
1113
|
+
private normalizeOptionalChaining;
|
|
1114
|
+
private stripRowPrefixes;
|
|
1115
|
+
private stripOuterParens;
|
|
1116
|
+
private findMatchingParen;
|
|
1117
|
+
private extractExpression;
|
|
790
1118
|
private coerceExpected;
|
|
791
1119
|
getImageSrc(row: any, column: ColumnDefinition): string | null;
|
|
792
1120
|
getImageAlt(row: any, column: ColumnDefinition): string | null;
|
|
793
|
-
getImageWidth(column: ColumnDefinition): number | null;
|
|
794
|
-
getImageHeight(column: ColumnDefinition): number | null;
|
|
795
|
-
getImageShape(column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
|
|
796
|
-
getImageFit(column: ColumnDefinition): 'cover' | 'contain' | undefined;
|
|
1121
|
+
getImageWidth(row: any, column: ColumnDefinition): number | null;
|
|
1122
|
+
getImageHeight(row: any, column: ColumnDefinition): number | null;
|
|
1123
|
+
getImageShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
|
|
1124
|
+
getImageFit(row: any, column: ColumnDefinition): 'cover' | 'contain' | undefined;
|
|
797
1125
|
getImageLazy(_row: any, column: ColumnDefinition): boolean;
|
|
798
1126
|
getBadgeText(row: any, column: ColumnDefinition): string | null;
|
|
799
1127
|
getBadgeIcon(row: any, column: ColumnDefinition): string | null;
|
|
800
1128
|
getBadgeClasses(row: any, column: ColumnDefinition): string[];
|
|
801
|
-
getEffectiveRendererType(row: any, column: ColumnDefinition): 'icon' | 'image' | 'badge' | null;
|
|
1129
|
+
getEffectiveRendererType(row: any, column: ColumnDefinition): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | 'rating' | null;
|
|
1130
|
+
getComposeItems(row: any, column: ColumnDefinition): any[];
|
|
1131
|
+
getComposeClasses(row: any, column: ColumnDefinition): string[];
|
|
1132
|
+
getComposeGapStyle(row: any, column: ColumnDefinition): any;
|
|
1133
|
+
asItemColumn(base: ColumnDefinition, item: any): any;
|
|
1134
|
+
getItemEffectiveType(row: any, column: ColumnDefinition, item: any): any;
|
|
1135
|
+
private _rendererOverrideCache;
|
|
1136
|
+
private mergeRenderer;
|
|
1137
|
+
private getEffectiveRenderer;
|
|
1138
|
+
getLinkHref(row: any, column: ColumnDefinition): string | null;
|
|
1139
|
+
getLinkText(row: any, column: ColumnDefinition): string;
|
|
1140
|
+
getLinkTarget(row: any, column: ColumnDefinition): string | null;
|
|
1141
|
+
getLinkRel(row: any, column: ColumnDefinition): string | null;
|
|
1142
|
+
getButtonLabel(row: any, column: ColumnDefinition): string;
|
|
1143
|
+
getButtonIcon(row: any, column: ColumnDefinition): string | null;
|
|
1144
|
+
getButtonVariant(row: any, column: ColumnDefinition): 'filled' | 'outlined' | 'text';
|
|
1145
|
+
getButtonColor(row: any, column: ColumnDefinition): string | null;
|
|
1146
|
+
isButtonDisabled(row: any, column: ColumnDefinition): boolean;
|
|
1147
|
+
getButtonAriaLabel(row: any, column: ColumnDefinition): string | null;
|
|
1148
|
+
private evaluateActionPayloadExpr;
|
|
1149
|
+
private buildRendererActionRuntimeOptions;
|
|
1150
|
+
onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
|
|
1151
|
+
getChipText(row: any, column: ColumnDefinition): string | null;
|
|
1152
|
+
getChipIcon(row: any, column: ColumnDefinition): string | null;
|
|
1153
|
+
getChipClasses(row: any, column: ColumnDefinition): string[];
|
|
1154
|
+
getProgressValue(row: any, column: ColumnDefinition): number;
|
|
1155
|
+
getProgressColor(row: any, column: ColumnDefinition): string | null;
|
|
1156
|
+
getProgressWidthPercentStyle(row: any, column: ColumnDefinition): number | null;
|
|
1157
|
+
getProgressBackgroundStyle(row: any, column: ColumnDefinition): string | null;
|
|
1158
|
+
getProgressShowLabel(row: any, column: ColumnDefinition): boolean;
|
|
1159
|
+
getRatingValue(row: any, column: ColumnDefinition): number;
|
|
1160
|
+
getRatingMax(_row: any, column: ColumnDefinition): number;
|
|
1161
|
+
getRatingColor(_row: any, column: ColumnDefinition): string | undefined;
|
|
1162
|
+
getRatingOutlineColor(_row: any, column: ColumnDefinition): string | undefined;
|
|
1163
|
+
getRatingSize(_row: any, column: ColumnDefinition): 'small' | 'medium' | 'large';
|
|
1164
|
+
getRatingAriaLabel(row: any, column: ColumnDefinition): string | undefined;
|
|
1165
|
+
getRatingReadonly(_row: any, column: ColumnDefinition): boolean;
|
|
1166
|
+
getAvatarSrc(row: any, column: ColumnDefinition): string | null;
|
|
1167
|
+
getAvatarAlt(row: any, column: ColumnDefinition): string | null;
|
|
1168
|
+
getAvatarInitials(row: any, column: ColumnDefinition): string;
|
|
1169
|
+
getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
|
|
1170
|
+
getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
|
|
1171
|
+
getToggleState(row: any, column: ColumnDefinition): boolean;
|
|
1172
|
+
isToggleDisabled(row: any, column: ColumnDefinition): boolean;
|
|
1173
|
+
getToggleAriaLabel(row: any, column: ColumnDefinition): string | null;
|
|
1174
|
+
onToggleChange(row: any, column: ColumnDefinition, event: any): void;
|
|
1175
|
+
getMenuAriaLabel(row: any, column: ColumnDefinition): string | null;
|
|
1176
|
+
private evaluateArrayExpr;
|
|
1177
|
+
getMenuItems(row: any, column: ColumnDefinition): Array<{
|
|
1178
|
+
label: string;
|
|
1179
|
+
icon?: string;
|
|
1180
|
+
id: string;
|
|
1181
|
+
__visible: boolean;
|
|
1182
|
+
payload?: any;
|
|
1183
|
+
actionConfig?: any;
|
|
1184
|
+
}>;
|
|
1185
|
+
onMenuItemClick(actionOrItem: string | {
|
|
1186
|
+
id?: string;
|
|
1187
|
+
payload?: any;
|
|
1188
|
+
actionConfig?: any;
|
|
1189
|
+
}, row: any, event: Event): void;
|
|
1190
|
+
getSafeHtml(row: any, column: ColumnDefinition): any;
|
|
1191
|
+
private escapeHtml;
|
|
1192
|
+
private sanitizeStrictHtml;
|
|
1193
|
+
private isSafeStrictInlineStyle;
|
|
1194
|
+
private isSafeStrictHtmlUrl;
|
|
1195
|
+
private escapeHtmlAttribute;
|
|
1196
|
+
private isStrictCspStyleModeEnabled;
|
|
1197
|
+
private warnStrictCspStyleModeOnce;
|
|
1198
|
+
private clearAppearanceCssVariables;
|
|
802
1199
|
private applyAppearanceVariables;
|
|
1200
|
+
private getPrefsKey;
|
|
1201
|
+
private getOutdatedIgnoreKey;
|
|
1202
|
+
private getOutdatedSnoozeKey;
|
|
1203
|
+
private getOutdatedNotifiedKey;
|
|
1204
|
+
private isOutdatedIgnored;
|
|
1205
|
+
private getOutdatedSnoozeUntil;
|
|
1206
|
+
private setOutdatedSnooze;
|
|
1207
|
+
private setOutdatedIgnore;
|
|
1208
|
+
private setOutdatedNotified;
|
|
1209
|
+
private wasOutdatedNotified;
|
|
1210
|
+
private resolveSchemaPrefs;
|
|
1211
|
+
private maybeShowOutdatedSnack;
|
|
1212
|
+
shouldShowOutdatedInline(): boolean;
|
|
1213
|
+
onReconcileRequested(): void;
|
|
1214
|
+
onSnoozeOutdated(): void;
|
|
1215
|
+
onIgnoreOutdated(): void;
|
|
1216
|
+
private updateTableMetaFromServerInfo;
|
|
1217
|
+
private emitMetadataChange;
|
|
1218
|
+
private emitSchemaStatus;
|
|
1219
|
+
getRowId(row: any): any;
|
|
1220
|
+
getIdField(): string;
|
|
1221
|
+
getActionId(action: any): string;
|
|
1222
|
+
private setupResizeObserver;
|
|
1223
|
+
private setupViewportChangeListeners;
|
|
1224
|
+
private getVirtualizationSources;
|
|
1225
|
+
isVirtualized(): boolean;
|
|
1226
|
+
getVirtItemHeight(): number;
|
|
1227
|
+
getVirtBufferSize(): number;
|
|
1228
|
+
getVirtMinHeightStyle(): string;
|
|
1229
|
+
getVirtMinHeightHostStyle(): string | null;
|
|
1230
|
+
getVirtualTableWidthStyle(): string | null;
|
|
1231
|
+
canSelectAll(): boolean;
|
|
1232
|
+
masterToggle(): void;
|
|
1233
|
+
isAllSelected(): boolean;
|
|
1234
|
+
toggleRow(row: any): void;
|
|
1235
|
+
private getRowActionsConfig;
|
|
1236
|
+
getActionsHeaderAlign(): string;
|
|
1237
|
+
getActionsHeaderTooltip(): string | undefined;
|
|
1238
|
+
getActionsHeaderIcon(): string | undefined;
|
|
1239
|
+
getActionsHeaderLabel(): string | undefined;
|
|
1240
|
+
private getRowActionsDisplay;
|
|
1241
|
+
private getRowActionsInlineLimit;
|
|
1242
|
+
private getRowActionsBehaviorInlineLimit;
|
|
1243
|
+
private getBreakpointInlineLimit;
|
|
1244
|
+
private estimateInlineActionsLimit;
|
|
1245
|
+
private parsePixelWidth;
|
|
1246
|
+
private getViewportWidth;
|
|
1247
|
+
private splitVisibleRowActions;
|
|
1248
|
+
getInlineRowActions(row: any): any[];
|
|
1249
|
+
getOverflowRowActions(row: any): any[];
|
|
1250
|
+
hasOverflowRowActions(row: any): boolean;
|
|
1251
|
+
private getVisibleRowActions;
|
|
1252
|
+
private isActionVisible;
|
|
1253
|
+
trackAction(index: number, item: any): any;
|
|
1254
|
+
isActionDisabled(action: any, row: any): boolean;
|
|
1255
|
+
getRowMenuButtonColor(): any;
|
|
1256
|
+
getRowMenuIcon(): string;
|
|
803
1257
|
ngOnDestroy(): void;
|
|
804
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable,
|
|
805
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
declare class PraxisTableToolbar {
|
|
809
|
-
config?: TableConfig;
|
|
810
|
-
debugLayout: boolean;
|
|
811
|
-
toolbarAction: EventEmitter<{
|
|
812
|
-
action: string;
|
|
813
|
-
}>;
|
|
814
|
-
reset: EventEmitter<void>;
|
|
815
|
-
readonly getActionId: typeof getActionId;
|
|
816
|
-
emitToolbarAction(event: Event, action: string): void;
|
|
817
|
-
getStartActions(): _praxisui_core.ToolbarAction[];
|
|
818
|
-
getOverflowActions(): (_praxisui_core.ToolbarAction | _praxisui_core.BulkAction)[];
|
|
819
|
-
getExportIcon(format: string): string;
|
|
820
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, never>;
|
|
821
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "debugLayout": { "alias": "debugLayout"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
|
|
1258
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
1259
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
|
|
822
1260
|
}
|
|
823
1261
|
|
|
824
1262
|
interface JsonValidationResult {
|
|
@@ -955,6 +1393,7 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
955
1393
|
selectedColumnIndex: number;
|
|
956
1394
|
selectedColumn: ExtendedColumnDefinition | null;
|
|
957
1395
|
isV2Config: boolean;
|
|
1396
|
+
private expressionEvaluator;
|
|
958
1397
|
availableDataSchema: FieldSchema[];
|
|
959
1398
|
currentFieldSchemas: FieldSchema[];
|
|
960
1399
|
sampleTableData: any[];
|
|
@@ -968,7 +1407,7 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
968
1407
|
private readonly destroyRef;
|
|
969
1408
|
private destroy$;
|
|
970
1409
|
onlyVisibleRendererFields: boolean;
|
|
971
|
-
uiRendererType: 'icon' | 'image' | 'badge' | null;
|
|
1410
|
+
uiRendererType: 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'rating' | 'html' | 'compose' | null;
|
|
972
1411
|
private _rendererApplyTimer;
|
|
973
1412
|
rendererFieldOptions: Array<{
|
|
974
1413
|
name: string;
|
|
@@ -977,6 +1416,24 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
977
1416
|
isVisible: boolean;
|
|
978
1417
|
}>;
|
|
979
1418
|
uiRendererConditional: boolean;
|
|
1419
|
+
condOverridesSelectedIndex: number;
|
|
1420
|
+
getConditionalOverrides(): any[];
|
|
1421
|
+
ensureConditionalOverrides(): any[];
|
|
1422
|
+
addConditionalOverride(): void;
|
|
1423
|
+
removeConditionalOverride(index: number): void;
|
|
1424
|
+
duplicateConditionalOverride(index: number): void;
|
|
1425
|
+
onConditionalOverrideReorder(event: any): void;
|
|
1426
|
+
selectConditionalOverride(index: number): void;
|
|
1427
|
+
getOverrideField(path: string): any;
|
|
1428
|
+
setOverrideField(path: string, value: any): void;
|
|
1429
|
+
onOverrideTypeChange(ov: any, val: string): void;
|
|
1430
|
+
exportOverrideJson(index: number): void;
|
|
1431
|
+
importOverrideJson(index: number): void;
|
|
1432
|
+
rendererValidationErrors: string[];
|
|
1433
|
+
rendererIsValid: boolean;
|
|
1434
|
+
rendererPreviewEnabled: boolean;
|
|
1435
|
+
private rendererAppliedSnapshot;
|
|
1436
|
+
previewRows: any[];
|
|
980
1437
|
private refreshRendererFieldOptions;
|
|
981
1438
|
getRendererFieldOptions(): Array<{
|
|
982
1439
|
name: string;
|
|
@@ -1024,7 +1481,7 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
1024
1481
|
getColumnMapping(column: ColumnDefinition | null): {
|
|
1025
1482
|
[key: string | number]: string;
|
|
1026
1483
|
};
|
|
1027
|
-
getRendererType(col: ColumnDefinition | null): 'icon' | 'image' | 'badge' | null;
|
|
1484
|
+
getRendererType(col: ColumnDefinition | null): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'rating' | 'html' | null;
|
|
1028
1485
|
onRendererTypeChange(type: 'icon' | 'image' | 'badge' | null): void;
|
|
1029
1486
|
onRendererModeClosed(): void;
|
|
1030
1487
|
onToggleRendererConditional(enabled: boolean): void;
|
|
@@ -1067,19 +1524,83 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
1067
1524
|
getRendererBadgeIcon(): string;
|
|
1068
1525
|
setRendererBadgeIcon(v: string): void;
|
|
1069
1526
|
private ensureRenderer;
|
|
1527
|
+
private _ensureKind;
|
|
1528
|
+
getRendererProp(kind: string, path: string): any;
|
|
1529
|
+
setRendererProp(kind: string, path: string, value: any): void;
|
|
1530
|
+
private _deepClone;
|
|
1531
|
+
hasSelectedRenderer(): boolean;
|
|
1532
|
+
onApplyRenderer(): void;
|
|
1533
|
+
onDiscardRenderer(): void;
|
|
1534
|
+
onExportRendererJson(): Promise<void>;
|
|
1535
|
+
onImportRendererJson(): void;
|
|
1536
|
+
private sanitizeRenderer;
|
|
1537
|
+
private ensurePreviewRows;
|
|
1538
|
+
private evalValueExpr;
|
|
1539
|
+
private evalArrayExpr;
|
|
1540
|
+
private normalizeExpression;
|
|
1541
|
+
private normalizeOptionalChaining;
|
|
1542
|
+
private extractExpression;
|
|
1543
|
+
private stripRowPrefixes;
|
|
1544
|
+
private _coerceExpected;
|
|
1545
|
+
private getNested;
|
|
1546
|
+
getPreviewRendererType(row: any): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | null;
|
|
1547
|
+
getPreviewIconName(row: any): string | null;
|
|
1548
|
+
getPreviewIconColor(row: any): string | null;
|
|
1549
|
+
getPreviewIconStyle(row: any): Record<string, string> | null;
|
|
1550
|
+
getPreviewImageSrc(row: any): string | null;
|
|
1551
|
+
getPreviewImageAlt(row: any): string | null;
|
|
1552
|
+
getPreviewImageWidth(): number | null;
|
|
1553
|
+
getPreviewImageHeight(): number | null;
|
|
1554
|
+
getPreviewImageShape(): 'square' | 'rounded' | 'circle' | undefined;
|
|
1555
|
+
getPreviewImageFit(): 'cover' | 'contain' | undefined;
|
|
1556
|
+
getPreviewBadgeText(row: any): string | null;
|
|
1557
|
+
getPreviewBadgeIcon(_row: any): string | null;
|
|
1558
|
+
getPreviewBadgeClasses(_row: any): string[];
|
|
1559
|
+
getPreviewLinkText(row: any): string;
|
|
1560
|
+
getPreviewLinkHref(row: any): string | null;
|
|
1561
|
+
getPreviewButtonLabel(row: any): string;
|
|
1562
|
+
getPreviewButtonIcon(): string | null;
|
|
1563
|
+
getPreviewChipText(row: any): string | null;
|
|
1564
|
+
getPreviewChipClasses(): string[];
|
|
1565
|
+
getPreviewProgressValue(row: any): number;
|
|
1566
|
+
getPreviewAvatarSrc(row: any): string | null;
|
|
1567
|
+
getPreviewAvatarInitials(row: any): string;
|
|
1568
|
+
getPreviewAvatarStyle(): Record<string, string>;
|
|
1569
|
+
getPreviewAvatarShape(): 'square' | 'rounded' | 'circle' | undefined;
|
|
1570
|
+
getPreviewToggleState(row: any): boolean;
|
|
1571
|
+
getPreviewMenuCount(row: any): number;
|
|
1572
|
+
getPreviewHtml(row: any): string;
|
|
1573
|
+
trackByIdx: (_: number, item: any) => number;
|
|
1574
|
+
private validateRenderer;
|
|
1070
1575
|
private readonly _emptyMappingRef;
|
|
1576
|
+
composeSelectedIndex: number;
|
|
1577
|
+
private ensureCompose;
|
|
1578
|
+
getComposeItemsUI(): Array<{
|
|
1579
|
+
type: string;
|
|
1580
|
+
summary: string;
|
|
1581
|
+
raw: any;
|
|
1582
|
+
}>;
|
|
1583
|
+
private getComposeItemSummary;
|
|
1584
|
+
addComposeItem(kind: string): void;
|
|
1585
|
+
removeComposeItem(index: number): void;
|
|
1586
|
+
duplicateComposeItem(index: number): void;
|
|
1587
|
+
onComposeReorder(event: any): void;
|
|
1588
|
+
selectComposeItem(index: number): void;
|
|
1589
|
+
getComposeLayoutProp(key: string): any;
|
|
1590
|
+
setComposeLayoutProp(key: string, value: any): void;
|
|
1591
|
+
private getSelectedComposeItem;
|
|
1071
1592
|
getColumnKeyInputType(column: ColumnDefinition | null): 'text' | 'number' | 'boolean';
|
|
1072
1593
|
onMappingChange(mapping: {
|
|
1073
1594
|
[key: string | number]: string;
|
|
1074
1595
|
}): void;
|
|
1075
|
-
get selectedColumnDataType(): ColumnDataType;
|
|
1076
|
-
set selectedColumnDataType(value: ColumnDataType);
|
|
1077
|
-
getColumnDataType(column: ColumnDefinition | null): ColumnDataType;
|
|
1596
|
+
get selectedColumnDataType(): ColumnDataType$1;
|
|
1597
|
+
set selectedColumnDataType(value: ColumnDataType$1);
|
|
1598
|
+
getColumnDataType(column: ColumnDefinition | null): ColumnDataType$1;
|
|
1078
1599
|
/**
|
|
1079
1600
|
* Infer column data type from field name patterns (shared logic with PraxisTable)
|
|
1080
1601
|
*/
|
|
1081
1602
|
private inferFieldTypeFromFieldName;
|
|
1082
|
-
onDataTypeChange(dataType: ColumnDataType): void;
|
|
1603
|
+
onDataTypeChange(dataType: ColumnDataType$1): void;
|
|
1083
1604
|
showDataFormatter(column: ColumnDefinition | null): boolean;
|
|
1084
1605
|
getFormatterIcon(column: ColumnDefinition | null): string;
|
|
1085
1606
|
getFormatterPanelDescription(column: ColumnDefinition | null): string;
|
|
@@ -1108,21 +1629,29 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
1108
1629
|
}
|
|
1109
1630
|
|
|
1110
1631
|
interface BehaviorConfigChange {
|
|
1111
|
-
type: 'pagination' | 'sorting' | 'filtering' | 'selection' | 'interaction' | 'general';
|
|
1632
|
+
type: 'pagination' | 'sorting' | 'filtering' | 'selection' | 'dragging' | 'interaction' | 'general';
|
|
1112
1633
|
property: string;
|
|
1113
1634
|
value: any;
|
|
1114
1635
|
fullConfig: TableConfig;
|
|
1115
1636
|
}
|
|
1116
|
-
declare class BehaviorConfigEditorComponent implements OnInit, OnDestroy {
|
|
1637
|
+
declare class BehaviorConfigEditorComponent implements OnInit, OnDestroy, OnChanges {
|
|
1117
1638
|
private fb;
|
|
1639
|
+
readonly schemaOnlyLimitationsDocPath = "praxis-table.json-api.md#known-limitations-and-mismatches";
|
|
1640
|
+
readonly multiSortSchemaOnlyTooltip = "behavior.sorting.multiSort \u00E9 schema-only no runtime atual. Consulte a documenta\u00E7\u00E3o de limita\u00E7\u00F5es.";
|
|
1641
|
+
readonly columnFiltersSchemaOnlyTooltip = "behavior.filtering.columnFilters.enabled \u00E9 schema-only no runtime atual. Consulte a documenta\u00E7\u00E3o de limita\u00E7\u00F5es.";
|
|
1642
|
+
readonly draggingRowsSchemaOnlyTooltip = "behavior.dragging.rows \u00E9 schema-only no runtime atual. Consulte a documenta\u00E7\u00E3o de limita\u00E7\u00F5es.";
|
|
1118
1643
|
config: TableConfig;
|
|
1644
|
+
resourcePath?: string;
|
|
1645
|
+
forceClientStrategies: boolean;
|
|
1119
1646
|
configChange: EventEmitter<_praxisui_core.TableConfigModern>;
|
|
1120
1647
|
behaviorChange: EventEmitter<BehaviorConfigChange>;
|
|
1121
1648
|
behaviorForm: FormGroup;
|
|
1122
1649
|
isV2: boolean;
|
|
1123
1650
|
private destroy$;
|
|
1651
|
+
private previousBehaviorFormValue;
|
|
1124
1652
|
constructor(fb: FormBuilder);
|
|
1125
1653
|
ngOnInit(): void;
|
|
1654
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
1126
1655
|
ngOnDestroy(): void;
|
|
1127
1656
|
private initializeForm;
|
|
1128
1657
|
private setupFormListeners;
|
|
@@ -1132,10 +1661,20 @@ declare class BehaviorConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
1132
1661
|
*/
|
|
1133
1662
|
applyFormChanges(): void;
|
|
1134
1663
|
private updateConfig;
|
|
1664
|
+
private resolveStrategy;
|
|
1665
|
+
private enforceStrategyConstraints;
|
|
1666
|
+
private coerceSchemaOnlyControls;
|
|
1667
|
+
private buildFormSnapshotFromConfig;
|
|
1668
|
+
private areSnapshotsEqual;
|
|
1669
|
+
private getChangedProperties;
|
|
1670
|
+
private areFieldValuesEqual;
|
|
1671
|
+
private emitBehaviorChanges;
|
|
1672
|
+
private resolveBehaviorChangeType;
|
|
1135
1673
|
private arrayToString;
|
|
1136
1674
|
private stringToArray;
|
|
1675
|
+
private stringToStringArray;
|
|
1137
1676
|
static ɵfac: i0.ɵɵFactoryDeclaration<BehaviorConfigEditorComponent, never>;
|
|
1138
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BehaviorConfigEditorComponent, "behavior-config-editor", never, { "config": { "alias": "config"; "required": false; }; }, { "configChange": "configChange"; "behaviorChange": "behaviorChange"; }, never, never, true, never>;
|
|
1677
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BehaviorConfigEditorComponent, "behavior-config-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "forceClientStrategies": { "alias": "forceClientStrategies"; "required": false; }; }, { "configChange": "configChange"; "behaviorChange": "behaviorChange"; }, never, never, true, never>;
|
|
1139
1678
|
}
|
|
1140
1679
|
|
|
1141
1680
|
interface ToolbarAction {
|
|
@@ -1152,6 +1691,7 @@ interface ToolbarAction {
|
|
|
1152
1691
|
disabled?: boolean;
|
|
1153
1692
|
visible?: boolean;
|
|
1154
1693
|
shortcut?: string;
|
|
1694
|
+
shortcutScope?: 'toolbar' | 'global';
|
|
1155
1695
|
tooltip?: string;
|
|
1156
1696
|
visibleWhen?: string;
|
|
1157
1697
|
children?: ToolbarAction[];
|
|
@@ -1186,6 +1726,12 @@ interface ToolbarActionsChange {
|
|
|
1186
1726
|
value: any;
|
|
1187
1727
|
fullConfig: TableConfig;
|
|
1188
1728
|
}
|
|
1729
|
+
type ToolbarShortcutScope = 'toolbar' | 'global';
|
|
1730
|
+
interface InternalActionSpec {
|
|
1731
|
+
id: string;
|
|
1732
|
+
label: string;
|
|
1733
|
+
description: string;
|
|
1734
|
+
}
|
|
1189
1735
|
declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChanges {
|
|
1190
1736
|
private fb;
|
|
1191
1737
|
private iconPicker;
|
|
@@ -1200,6 +1746,13 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
|
|
|
1200
1746
|
editingToolbarActionIndex: number | null;
|
|
1201
1747
|
editingRowActionIndex: number | null;
|
|
1202
1748
|
editingBulkActionIndex: number | null;
|
|
1749
|
+
readonly globalActionCatalog: GlobalActionSpec[];
|
|
1750
|
+
readonly internalActionCatalog: InternalActionSpec[];
|
|
1751
|
+
readonly customActionValue = "__custom__";
|
|
1752
|
+
readonly validShortcutScopes: ToolbarShortcutScope[];
|
|
1753
|
+
private readonly actionFieldDrafts;
|
|
1754
|
+
private readonly actionFieldErrors;
|
|
1755
|
+
private readonly warnedInvalidShortcutScopes;
|
|
1203
1756
|
private destroy$;
|
|
1204
1757
|
constructor(fb: FormBuilder, iconPicker: IconPickerService);
|
|
1205
1758
|
ngOnInit(): void;
|
|
@@ -1208,12 +1761,60 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
|
|
|
1208
1761
|
private initializeForm;
|
|
1209
1762
|
private setupFormListeners;
|
|
1210
1763
|
private loadActionsFromConfig;
|
|
1764
|
+
private syncActionsFromConfig;
|
|
1765
|
+
private areActionsEqual;
|
|
1211
1766
|
private isAddLike;
|
|
1212
1767
|
private findAddToolbarIndex;
|
|
1213
1768
|
private ensureAddToolbarAction;
|
|
1214
1769
|
private removeAddToolbarAction;
|
|
1215
1770
|
private syncAddFormFromActions;
|
|
1216
1771
|
private updateConfig;
|
|
1772
|
+
getActionSelectValue(value?: string): string;
|
|
1773
|
+
getActionParam(value?: string): string;
|
|
1774
|
+
getActionCustomValue(value?: string): string;
|
|
1775
|
+
isInternalAction(value?: string): boolean;
|
|
1776
|
+
getActionSpecById(id: string): GlobalActionSpec | undefined;
|
|
1777
|
+
onActionSelectChange(action: {
|
|
1778
|
+
action?: string;
|
|
1779
|
+
}, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
|
|
1780
|
+
onActionParamChange(action: {
|
|
1781
|
+
action?: string;
|
|
1782
|
+
}, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
|
|
1783
|
+
onActionCustomChange(action: {
|
|
1784
|
+
action?: string;
|
|
1785
|
+
}, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
|
|
1786
|
+
private touchActionList;
|
|
1787
|
+
private parseActionValue;
|
|
1788
|
+
isGlobalActionId(id?: string): boolean;
|
|
1789
|
+
getGlobalActionSchema(action: {
|
|
1790
|
+
action?: string;
|
|
1791
|
+
}): _praxisui_core.GlobalActionUiSchema | undefined;
|
|
1792
|
+
shouldShowGlobalActionField(action: {
|
|
1793
|
+
action?: string;
|
|
1794
|
+
}, field: GlobalActionField): boolean;
|
|
1795
|
+
hasActionFieldError(action: {
|
|
1796
|
+
action?: string;
|
|
1797
|
+
}, key: string): boolean;
|
|
1798
|
+
getActionFieldError(action: {
|
|
1799
|
+
action?: string;
|
|
1800
|
+
}, key: string): string;
|
|
1801
|
+
getGlobalActionFieldValue(action: {
|
|
1802
|
+
action?: string;
|
|
1803
|
+
}, field: GlobalActionField): any;
|
|
1804
|
+
onGlobalActionFieldChange(action: {
|
|
1805
|
+
action?: string;
|
|
1806
|
+
}, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
|
|
1807
|
+
private getActionParamInfo;
|
|
1808
|
+
private parseMethodAndUrl;
|
|
1809
|
+
private stringifyJson;
|
|
1810
|
+
private setActionFieldError;
|
|
1811
|
+
private clearActionFieldError;
|
|
1812
|
+
private collectGlobalActionFieldValues;
|
|
1813
|
+
private serializeGlobalActionParam;
|
|
1814
|
+
private buildPrimaryParam;
|
|
1815
|
+
private buildGlobalActionPayload;
|
|
1816
|
+
getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
|
|
1817
|
+
onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
|
|
1217
1818
|
addToolbarAction(): void;
|
|
1218
1819
|
editToolbarAction(index: number): void;
|
|
1219
1820
|
removeToolbarAction(index: number): void;
|
|
@@ -1234,6 +1835,11 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
|
|
|
1234
1835
|
private mergeRowActions;
|
|
1235
1836
|
private mergeToolbarActions;
|
|
1236
1837
|
private mergeBulkActions;
|
|
1838
|
+
private sanitizeToolbarActions;
|
|
1839
|
+
private sanitizeShortcutScope;
|
|
1840
|
+
private warnInvalidShortcutScope;
|
|
1841
|
+
private getActionDraftKey;
|
|
1842
|
+
private getActionDedupeKey;
|
|
1237
1843
|
pickAddButtonIcon(): Promise<void>;
|
|
1238
1844
|
pickActionIcon(index: number): Promise<void>;
|
|
1239
1845
|
pickRowActionIcon(index: number): Promise<void>;
|
|
@@ -1268,11 +1874,240 @@ declare class MessagesLocalizationEditorComponent implements OnInit, OnDestroy {
|
|
|
1268
1874
|
static ɵcmp: i0.ɵɵComponentDeclaration<MessagesLocalizationEditorComponent, "messages-localization-editor", never, { "config": { "alias": "config"; "required": false; }; }, { "configChange": "configChange"; "messagesLocalizationChange": "messagesLocalizationChange"; }, never, never, true, never>;
|
|
1269
1875
|
}
|
|
1270
1876
|
|
|
1877
|
+
declare const ALWAYS_VISIBLE_LAYOUT_LANES: readonly ["actions", "inline", "grid"];
|
|
1878
|
+
type AlwaysVisibleLayoutLane = (typeof ALWAYS_VISIBLE_LAYOUT_LANES)[number];
|
|
1879
|
+
type AlwaysVisibleLayoutItem = {
|
|
1880
|
+
name: string;
|
|
1881
|
+
label: string;
|
|
1882
|
+
lane: AlwaysVisibleLayoutLane;
|
|
1883
|
+
controlType: string;
|
|
1884
|
+
controlTypeLabel: string;
|
|
1885
|
+
hasOverride: boolean;
|
|
1886
|
+
widthHint: string;
|
|
1887
|
+
};
|
|
1888
|
+
type AlwaysVisibleLayoutViewport = 'desktop' | 'tablet' | 'mobile';
|
|
1889
|
+
declare const ALWAYS_VISIBLE_SECTION_IDS: readonly ["always-visible-order", "always-visible-metadata", "always-visible-json"];
|
|
1890
|
+
type AlwaysVisibleSectionId = (typeof ALWAYS_VISIBLE_SECTION_IDS)[number];
|
|
1891
|
+
declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDestroy {
|
|
1892
|
+
private fb;
|
|
1893
|
+
private readonly hostRef;
|
|
1894
|
+
private readonly cdr;
|
|
1895
|
+
metadata: FieldMetadata[];
|
|
1896
|
+
metadataSource: 'filter-dto' | 'columns';
|
|
1897
|
+
metadataLoading: boolean;
|
|
1898
|
+
metadataErrorMsg: string;
|
|
1899
|
+
settings: FilterConfig | undefined;
|
|
1900
|
+
configKey?: string;
|
|
1901
|
+
settingsChange: EventEmitter<FilterConfig>;
|
|
1902
|
+
form: FormGroup<{
|
|
1903
|
+
alwaysVisibleFields: FormControl<string[]>;
|
|
1904
|
+
showAdvanced: FormControl<boolean>;
|
|
1905
|
+
mode: FormControl<'filter'>;
|
|
1906
|
+
changeDebounceMs: FormControl<number>;
|
|
1907
|
+
allowSaveTags: FormControl<boolean>;
|
|
1908
|
+
tagColor: FormControl<'primary' | 'accent' | 'warn' | 'basic'>;
|
|
1909
|
+
tagVariant: FormControl<'filled' | 'outlined'>;
|
|
1910
|
+
tagButtonColor: FormControl<'primary' | 'accent' | 'warn' | 'basic'>;
|
|
1911
|
+
actionsButtonColor: FormControl<'primary' | 'accent' | 'warn' | 'basic'>;
|
|
1912
|
+
actionsVariant: FormControl<'standard' | 'outlined'>;
|
|
1913
|
+
useInlineSearchableSelectVariant: FormControl<boolean>;
|
|
1914
|
+
useInlineRangeVariant: FormControl<boolean>;
|
|
1915
|
+
useInlineDateVariant: FormControl<boolean>;
|
|
1916
|
+
useInlineDateRangeVariant: FormControl<boolean>;
|
|
1917
|
+
useInlineTimeVariant: FormControl<boolean>;
|
|
1918
|
+
useInlineTimeRangeVariant: FormControl<boolean>;
|
|
1919
|
+
useInlineTreeSelectVariant: FormControl<boolean>;
|
|
1920
|
+
placeBooleansInActions: FormControl<boolean>;
|
|
1921
|
+
showToggleLabels: FormControl<boolean>;
|
|
1922
|
+
alwaysMinWidth: FormControl<number>;
|
|
1923
|
+
alwaysColsMd: FormControl<number>;
|
|
1924
|
+
alwaysColsLg: FormControl<number>;
|
|
1925
|
+
confirmTagDelete: FormControl<boolean>;
|
|
1926
|
+
overlayVariant: FormControl<'card' | 'frosted'>;
|
|
1927
|
+
overlayBackdrop: FormControl<boolean>;
|
|
1928
|
+
advancedOpenMode: FormControl<'modal' | 'drawer'>;
|
|
1929
|
+
advancedClearButtonsEnabled: FormControl<boolean>;
|
|
1930
|
+
logLevel: FormControl<'none' | 'error' | 'warn' | 'info' | 'debug'>;
|
|
1931
|
+
enablePerformanceMetrics: FormControl<boolean>;
|
|
1932
|
+
}>;
|
|
1933
|
+
/**
|
|
1934
|
+
* Emits true when form has changes and is valid, enabling the save button
|
|
1935
|
+
*/
|
|
1936
|
+
canSave$: Observable<boolean>;
|
|
1937
|
+
isDirty$: Observable<boolean>;
|
|
1938
|
+
isValid$: Observable<boolean>;
|
|
1939
|
+
isBusy$: Observable<boolean>;
|
|
1940
|
+
private initialSettings;
|
|
1941
|
+
private extraSettings;
|
|
1942
|
+
private suppressSettingsEmit;
|
|
1943
|
+
private readonly droppedLegacySettingKeys;
|
|
1944
|
+
private readonly managedSettingKeys;
|
|
1945
|
+
effectiveJson: string;
|
|
1946
|
+
settingsJsonText: string;
|
|
1947
|
+
jsonErrorMsg: string;
|
|
1948
|
+
alwaysVisibleOverridesJsonText: string;
|
|
1949
|
+
alwaysVisibleOverridesErrorMsg: string;
|
|
1950
|
+
alwaysVisibleFieldSearchText: string;
|
|
1951
|
+
previewDarkMode: boolean;
|
|
1952
|
+
private readonly tagsTabIndex;
|
|
1953
|
+
readonly alwaysVisibleLayoutLanes: readonly ["actions", "inline", "grid"];
|
|
1954
|
+
readonly alwaysVisibleViewports: AlwaysVisibleLayoutViewport[];
|
|
1955
|
+
orderPreviewViewport: AlwaysVisibleLayoutViewport;
|
|
1956
|
+
readonly alwaysVisibleSectionIds: readonly ["always-visible-order", "always-visible-metadata", "always-visible-json"];
|
|
1957
|
+
activeAlwaysVisibleSectionId: AlwaysVisibleSectionId;
|
|
1958
|
+
private scrollTrackingTarget;
|
|
1959
|
+
private cleanupScrollTracking;
|
|
1960
|
+
private scrollTrackingRafId;
|
|
1961
|
+
readonly layoutPreviewFields: string[];
|
|
1962
|
+
private readonly storage;
|
|
1963
|
+
private readonly settingsPanel;
|
|
1964
|
+
private readonly snackBar;
|
|
1965
|
+
private readonly destroyRef;
|
|
1966
|
+
private readonly injectedData;
|
|
1967
|
+
/** Clears persisted preferences for this filter, falling back to globals. */
|
|
1968
|
+
resetPreferences(): void;
|
|
1969
|
+
constructor(fb: FormBuilder);
|
|
1970
|
+
tags: FilterTag[];
|
|
1971
|
+
exportJson: string;
|
|
1972
|
+
newTagLabel: string;
|
|
1973
|
+
newTagPatchText: string;
|
|
1974
|
+
private tagsLoaded;
|
|
1975
|
+
private tagsKey;
|
|
1976
|
+
loadTags(): Promise<void>;
|
|
1977
|
+
saveTags(): void;
|
|
1978
|
+
ngAfterViewInit(): void;
|
|
1979
|
+
ngOnDestroy(): void;
|
|
1980
|
+
onTabChange(_event: MatTabChangeEvent): void;
|
|
1981
|
+
private ensureTagsLoaded;
|
|
1982
|
+
clearTags(): void;
|
|
1983
|
+
removeTag(index: number): void;
|
|
1984
|
+
renameTag(index: number, value: string): void;
|
|
1985
|
+
importTags(): void;
|
|
1986
|
+
addTag(): void;
|
|
1987
|
+
addTagFromCurrent(): void;
|
|
1988
|
+
presets: {
|
|
1989
|
+
key: string;
|
|
1990
|
+
label: string;
|
|
1991
|
+
description: string;
|
|
1992
|
+
previewClass: string;
|
|
1993
|
+
values: Partial<FilterConfig>;
|
|
1994
|
+
}[];
|
|
1995
|
+
getContrastWarning(): string | null;
|
|
1996
|
+
applyPreset(key: string): void;
|
|
1997
|
+
hasBooleanFieldMetadata(): boolean;
|
|
1998
|
+
getFieldLabel(name: string): string;
|
|
1999
|
+
onAlwaysVisibleFieldSearchChange(value: string): void;
|
|
2000
|
+
clearAlwaysVisibleFieldSearch(): void;
|
|
2001
|
+
filteredAlwaysVisibleMetadata(): FieldMetadata[];
|
|
2002
|
+
hasAlwaysVisibleMetadataResults(): boolean;
|
|
2003
|
+
trackFieldMetadataByName(_: number, meta: FieldMetadata): string;
|
|
2004
|
+
alwaysVisibleSelectionCount(): number;
|
|
2005
|
+
activeAlwaysVisibleOverrideCount(): number;
|
|
2006
|
+
alwaysVisibleLayoutItems(): AlwaysVisibleLayoutItem[];
|
|
2007
|
+
alwaysVisibleLaneItems(lane: AlwaysVisibleLayoutLane): AlwaysVisibleLayoutItem[];
|
|
2008
|
+
alwaysVisibleLaneLabel(lane: AlwaysVisibleLayoutLane): string;
|
|
2009
|
+
alwaysVisibleLaneDropListId(lane: AlwaysVisibleLayoutLane): string;
|
|
2010
|
+
alwaysVisibleLaneHint(lane: AlwaysVisibleLayoutLane): string;
|
|
2011
|
+
alwaysVisibleLaneEmptyHint(lane: AlwaysVisibleLayoutLane): string;
|
|
2012
|
+
alwaysVisibleViewportLabel(viewport: AlwaysVisibleLayoutViewport): string;
|
|
2013
|
+
alwaysVisibleViewportHint(viewport: AlwaysVisibleLayoutViewport): string;
|
|
2014
|
+
onAlwaysVisibleViewportChange(value: unknown): void;
|
|
2015
|
+
alwaysVisibleViewportWidth(): number;
|
|
2016
|
+
trackAlwaysVisibleLayoutItemByName(_: number, item: AlwaysVisibleLayoutItem): string;
|
|
2017
|
+
alwaysVisibleLayoutItemAriaLabel(item: AlwaysVisibleLayoutItem, lane: AlwaysVisibleLayoutLane, index: number, total: number): string;
|
|
2018
|
+
dropAlwaysVisibleLane(lane: AlwaysVisibleLayoutLane, event: CdkDragDrop<AlwaysVisibleLayoutItem[]>): void;
|
|
2019
|
+
allowAlwaysVisibleLaneEnter: (drag: CdkDrag<AlwaysVisibleLayoutItem>, drop: CdkDropList<AlwaysVisibleLayoutItem[]>) => boolean;
|
|
2020
|
+
canMoveAlwaysVisibleLane(lane: AlwaysVisibleLayoutLane, fieldName: string, delta: -1 | 1): boolean;
|
|
2021
|
+
moveAlwaysVisibleLane(lane: AlwaysVisibleLayoutLane, fieldName: string, delta: -1 | 1): void;
|
|
2022
|
+
onAlwaysVisibleLaneItemKeydown(event: KeyboardEvent, lane: AlwaysVisibleLayoutLane, fieldName: string): void;
|
|
2023
|
+
private resolveToolbarControlType;
|
|
2024
|
+
private resolveAlwaysVisibleLayoutLane;
|
|
2025
|
+
private getToolbarControlTypeLabel;
|
|
2026
|
+
private resolveAlwaysVisibleWidthHint;
|
|
2027
|
+
private getAlwaysVisibleFieldNamesByLane;
|
|
2028
|
+
private reorderAlwaysVisibleLane;
|
|
2029
|
+
private areFieldNameArraysEqual;
|
|
2030
|
+
private extractLaneFromDropListId;
|
|
2031
|
+
private isAlwaysVisibleViewport;
|
|
2032
|
+
isAlwaysVisibleSectionActive(sectionId: string): boolean;
|
|
2033
|
+
onAlwaysVisibleSectionFocus(sectionId: string): void;
|
|
2034
|
+
sectionEnterDelay(sectionId: string): string;
|
|
2035
|
+
scrollToAlwaysVisibleSection(sectionId: string): void;
|
|
2036
|
+
private setupAlwaysVisibleScrollTracking;
|
|
2037
|
+
private teardownAlwaysVisibleScrollTracking;
|
|
2038
|
+
private scheduleAlwaysVisibleSectionEvaluation;
|
|
2039
|
+
private updateActiveAlwaysVisibleSection;
|
|
2040
|
+
private getAlwaysVisibleSections;
|
|
2041
|
+
private getSectionActivationTop;
|
|
2042
|
+
private findNearestScrollableParent;
|
|
2043
|
+
private isAlwaysVisibleSectionId;
|
|
2044
|
+
private prefersReducedMotion;
|
|
2045
|
+
hasAlwaysVisibleOverride(fieldName: string): boolean;
|
|
2046
|
+
getAlwaysVisibleControlTypeLabel(fieldName: string): string;
|
|
2047
|
+
getAlwaysVisibleOverridePreview(fieldName: string): string;
|
|
2048
|
+
clearAlwaysVisibleOverride(fieldName: string): void;
|
|
2049
|
+
openAlwaysVisibleMetadataEditor(fieldName: string): Promise<void>;
|
|
2050
|
+
private loadMetadataEditorModule;
|
|
2051
|
+
private importOptionalModule;
|
|
2052
|
+
hasCurrentDto(): boolean;
|
|
2053
|
+
private getMetadataByName;
|
|
2054
|
+
private getAlwaysVisibleOverridesMap;
|
|
2055
|
+
private normalizeControlTypeForEditor;
|
|
2056
|
+
private inferControlTypeFromMetadata;
|
|
2057
|
+
private resolveAlwaysVisibleControlType;
|
|
2058
|
+
private buildAlwaysVisibleEditorSeed;
|
|
2059
|
+
private isPlainObject;
|
|
2060
|
+
private applyJsonMergePatch;
|
|
2061
|
+
private applyAlwaysVisibleMetadataPatch;
|
|
2062
|
+
renameTagPrompt(index: number): void;
|
|
2063
|
+
dropTags(event: CdkDragDrop<FilterTag[]>): void;
|
|
2064
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
2065
|
+
getSettingsValue(): FilterConfig;
|
|
2066
|
+
private updateEffectiveJson;
|
|
2067
|
+
private buildFullConfigFromForm;
|
|
2068
|
+
onJsonReload(): void;
|
|
2069
|
+
onJsonFormat(): void;
|
|
2070
|
+
onJsonApply(): void;
|
|
2071
|
+
formatAlwaysVisibleOverridesJson(): void;
|
|
2072
|
+
applyAlwaysVisibleOverridesJson(): void;
|
|
2073
|
+
reset(): void;
|
|
2074
|
+
private applyAlwaysVisibleOverridesMap;
|
|
2075
|
+
private syncAlwaysVisibleControlState;
|
|
2076
|
+
private clampDebounce;
|
|
2077
|
+
private cloneFieldNames;
|
|
2078
|
+
private applySettingsToForm;
|
|
2079
|
+
private refreshAlwaysVisibleOverridesEditor;
|
|
2080
|
+
private isAllowedOverrideControlType;
|
|
2081
|
+
private normalizeAlwaysVisibleMetadataOverrides;
|
|
2082
|
+
private extractExtraSettings;
|
|
2083
|
+
private withSuppressedSettingsEmit;
|
|
2084
|
+
private cloneUnknown;
|
|
2085
|
+
private normalizeAdvancedOpenMode;
|
|
2086
|
+
private clampMinWidth;
|
|
2087
|
+
private clampColsMd;
|
|
2088
|
+
private clampColsLg;
|
|
2089
|
+
layoutMinWidth(): number;
|
|
2090
|
+
layoutColsFor(breakpoint: 'sm' | 'md' | 'lg'): number;
|
|
2091
|
+
layoutControlError(controlName: 'alwaysMinWidth' | 'alwaysColsMd' | 'alwaysColsLg'): string | null;
|
|
2092
|
+
normalizeLayoutControl(controlName: 'alwaysMinWidth' | 'alwaysColsMd' | 'alwaysColsLg'): void;
|
|
2093
|
+
private markDirtyAndEmit;
|
|
2094
|
+
dropAlwaysVisible(event: CdkDragDrop<string[]>): void;
|
|
2095
|
+
canMoveAlwaysVisible(index: number, delta: -1 | 1): boolean;
|
|
2096
|
+
moveAlwaysVisible(index: number, delta: -1 | 1): void;
|
|
2097
|
+
onAlwaysVisibleListItemKeydown(event: KeyboardEvent, index: number): void;
|
|
2098
|
+
private normalizeText;
|
|
2099
|
+
clearPersistedFilters(): void;
|
|
2100
|
+
forceSchemaReload(): void;
|
|
2101
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterSettingsComponent, never>;
|
|
2102
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "filter-settings", never, { "metadata": { "alias": "metadata"; "required": false; }; "metadataSource": { "alias": "metadataSource"; "required": false; }; "metadataLoading": { "alias": "metadataLoading"; "required": false; }; "metadataErrorMsg": { "alias": "metadataErrorMsg"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "configKey": { "alias": "configKey"; "required": false; }; }, { "settingsChange": "settingsChange"; }, never, never, true, never>;
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
type ResourcePathIntent = 'set' | 'clear' | 'unchanged';
|
|
2106
|
+
type EffectiveDataMode = 'remote' | 'local' | 'empty';
|
|
1271
2107
|
declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValueProvider {
|
|
1272
2108
|
private cdr;
|
|
1273
2109
|
private configService;
|
|
1274
|
-
|
|
1275
|
-
private panelRef?;
|
|
2110
|
+
filterSettingsEditor?: FilterSettingsComponent;
|
|
1276
2111
|
behaviorEditor?: BehaviorConfigEditorComponent;
|
|
1277
2112
|
set crudEditorSetter(ref: any);
|
|
1278
2113
|
private crudEditor?;
|
|
@@ -1289,8 +2124,11 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
|
|
|
1289
2124
|
private initialResourcePath;
|
|
1290
2125
|
idField: string;
|
|
1291
2126
|
private initialIdField;
|
|
2127
|
+
horizontalScroll: 'auto' | 'wrap' | 'none';
|
|
2128
|
+
private initialHorizontalScroll;
|
|
1292
2129
|
crudContext?: {
|
|
1293
2130
|
tableId: string;
|
|
2131
|
+
componentKeyId?: string;
|
|
1294
2132
|
resourcePath?: string;
|
|
1295
2133
|
/** Nome do campo identificador do recurso (ex.: 'id', 'codigo'). */
|
|
1296
2134
|
idField?: string;
|
|
@@ -1321,8 +2159,19 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
|
|
|
1321
2159
|
isValid$: BehaviorSubject<boolean>;
|
|
1322
2160
|
isBusy$: BehaviorSubject<boolean>;
|
|
1323
2161
|
columnMetas: FieldMetadata[];
|
|
2162
|
+
filterDtoMetas: FieldMetadata[];
|
|
2163
|
+
filterDtoMetasLoading: boolean;
|
|
2164
|
+
filterDtoMetasErrorMsg: string;
|
|
1324
2165
|
private hasCrudOverridesDirty;
|
|
1325
|
-
|
|
2166
|
+
private hasLocalDataInput;
|
|
2167
|
+
private filterDtoLoadSeq;
|
|
2168
|
+
private lastKnownFilterSettings;
|
|
2169
|
+
private readonly panelData;
|
|
2170
|
+
private readonly crudService;
|
|
2171
|
+
private readonly panelRef;
|
|
2172
|
+
constructor(cdr: ChangeDetectorRef, configService: TableConfigService);
|
|
2173
|
+
private isDebugLoggingEnabled;
|
|
2174
|
+
private debugLog;
|
|
1326
2175
|
ngOnInit(): void;
|
|
1327
2176
|
onJsonConfigChange(newConfig: TableConfig): void;
|
|
1328
2177
|
onJsonValidationChange(result: JsonValidationResult): void;
|
|
@@ -1330,6 +2179,15 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
|
|
|
1330
2179
|
onColumnsConfigChange(newConfig: TableConfig): void;
|
|
1331
2180
|
onColumnChange(change: ColumnChange): void;
|
|
1332
2181
|
onFilterSettingsChange(cfg: FilterConfig): void;
|
|
2182
|
+
private cloneFilterSettings;
|
|
2183
|
+
private isEffectivelyEmptyFilterSettings;
|
|
2184
|
+
getFilterSettingsMetas(): FieldMetadata[];
|
|
2185
|
+
isUsingFilterDtoMetas(): boolean;
|
|
2186
|
+
getEffectiveDataMode(): EffectiveDataMode;
|
|
2187
|
+
isEffectiveLocalMode(): boolean;
|
|
2188
|
+
private resolveLocalDataModeFeatureEnabled;
|
|
2189
|
+
private enforceEffectiveModeStrategyConstraints;
|
|
2190
|
+
onRulesConfigChange(newCfg: TableConfig): void;
|
|
1333
2191
|
private updateColumnMetas;
|
|
1334
2192
|
private updateCanSaveState;
|
|
1335
2193
|
private subscribeCrudEditorChanges;
|
|
@@ -1346,11 +2204,16 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
|
|
|
1346
2204
|
*/
|
|
1347
2205
|
private deepEqual;
|
|
1348
2206
|
getSettingsValue(): TableConfig;
|
|
2207
|
+
private getResourcePathIntent;
|
|
2208
|
+
private syncFilterSettingsFromEditor;
|
|
2209
|
+
private hasAdvancedSettingsProperty;
|
|
2210
|
+
private syncLastKnownFilterSettingsFromEditedConfig;
|
|
1349
2211
|
onResourcePathChange(val: string): void;
|
|
2212
|
+
private loadFilterDtoMetas;
|
|
1350
2213
|
onIdFieldChange(val: string): void;
|
|
2214
|
+
onHorizontalScrollChange(val: 'auto' | 'wrap' | 'none'): void;
|
|
1351
2215
|
onReconcileIdField(): void;
|
|
1352
2216
|
onAcceptServerHash(): void;
|
|
1353
|
-
onVisualRulesConfigChange(newConfig: TableConfig): void;
|
|
1354
2217
|
reset(): void;
|
|
1355
2218
|
onResetToDefaults(): void;
|
|
1356
2219
|
/**
|
|
@@ -1392,10 +2255,19 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
|
|
|
1392
2255
|
onMessagesLocalizationConfigChange(newConfig: TableConfig): void;
|
|
1393
2256
|
onMessagesLocalizationChange(change: MessagesLocalizationChange): void;
|
|
1394
2257
|
ngOnDestroy(): void;
|
|
1395
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableConfigEditor,
|
|
2258
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableConfigEditor, never>;
|
|
1396
2259
|
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
|
|
1397
2260
|
}
|
|
1398
2261
|
|
|
2262
|
+
/**
|
|
2263
|
+
* Configuração de abertura do Advanced Filter em gaveta pelo host.
|
|
2264
|
+
*
|
|
2265
|
+
* Notas para hosts que exibem botão "Salvar como atalho":
|
|
2266
|
+
* - Exiba a ação apenas quando `allowSaveTags === true`.
|
|
2267
|
+
* - Para habilitar o botão, verifique se há ao menos um filtro efetivo no DTO (campos não vazios).
|
|
2268
|
+
* - Monte o DTO para salvar mesclando `initialDto` e o valor atual do formulário (`lastValue`),
|
|
2269
|
+
* e limpe chaves com valores vazios ('' | null | undefined) antes de chamar `onSaveShortcut(dto)`.
|
|
2270
|
+
*/
|
|
1399
2271
|
interface FilterDrawerOpenConfig {
|
|
1400
2272
|
resourcePath: string;
|
|
1401
2273
|
formId: string;
|
|
@@ -1404,6 +2276,12 @@ interface FilterDrawerOpenConfig {
|
|
|
1404
2276
|
title?: string;
|
|
1405
2277
|
onSubmit(dto: Record<string, any>): void;
|
|
1406
2278
|
onClose?(): void;
|
|
2279
|
+
/** Permite que a UI do host exiba ação de salvar atalho (opcional, retrocompatível) */
|
|
2280
|
+
allowSaveTags?: boolean;
|
|
2281
|
+
/** Rótulo i18n para o botão de salvar atalho (opcional) */
|
|
2282
|
+
i18nSaveAsShortcut?: string;
|
|
2283
|
+
/** Callback disparado pelo host com o DTO atual quando o usuário optar por salvar um atalho */
|
|
2284
|
+
onSaveShortcut?: (dto: Record<string, any>) => void;
|
|
1407
2285
|
}
|
|
1408
2286
|
interface FilterDrawerAdapter {
|
|
1409
2287
|
open(config: FilterDrawerOpenConfig): Promise<void> | void;
|
|
@@ -1413,7 +2291,7 @@ declare const FILTER_DRAWER_ADAPTER: InjectionToken<FilterDrawerAdapter>;
|
|
|
1413
2291
|
declare class DataFormatterComponent implements OnInit, OnChanges {
|
|
1414
2292
|
private cdr;
|
|
1415
2293
|
private formattingService;
|
|
1416
|
-
columnType: ColumnDataType;
|
|
2294
|
+
columnType: ColumnDataType$1;
|
|
1417
2295
|
currentFormat: string;
|
|
1418
2296
|
formatChange: EventEmitter<string>;
|
|
1419
2297
|
datePresets: FormatPreset[];
|
|
@@ -1434,6 +2312,7 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
|
|
|
1434
2312
|
percentageDecimals: string;
|
|
1435
2313
|
percentageMultiplier: boolean;
|
|
1436
2314
|
stringTransform: string;
|
|
2315
|
+
maskFormat: string;
|
|
1437
2316
|
enableTruncate: boolean;
|
|
1438
2317
|
truncateLength: number;
|
|
1439
2318
|
truncateSuffix: string;
|
|
@@ -1461,6 +2340,7 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
|
|
|
1461
2340
|
onFormatOptionChange(): void;
|
|
1462
2341
|
onTruncateToggle(): void;
|
|
1463
2342
|
onBooleanDisplayChange(): void;
|
|
2343
|
+
onMaskChange(mask: string): void;
|
|
1464
2344
|
private generateFormatString;
|
|
1465
2345
|
private generatePreview;
|
|
1466
2346
|
/**
|
|
@@ -1471,6 +2351,7 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
|
|
|
1471
2351
|
* Get the current format string based on component state
|
|
1472
2352
|
*/
|
|
1473
2353
|
private getCurrentFormatString;
|
|
2354
|
+
private isMaskFormat;
|
|
1474
2355
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataFormatterComponent, never>;
|
|
1475
2356
|
static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
|
|
1476
2357
|
}
|
|
@@ -1523,150 +2404,272 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
|
|
|
1523
2404
|
static ɵcmp: i0.ɵɵComponentDeclaration<ValueMappingEditorComponent, "value-mapping-editor", never, { "currentMapping": { "alias": "currentMapping"; "required": false; }; "keyInputType": { "alias": "keyInputType"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "labelValue": { "alias": "labelValue"; "required": false; }; }, { "mappingChange": "mappingChange"; }, never, never, true, never>;
|
|
1524
2405
|
}
|
|
1525
2406
|
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
2407
|
+
type ColumnDataType = 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
|
|
2408
|
+
|
|
2409
|
+
type OperatorKey = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'startsWith' | 'endsWith' | 'matches' | 'not matches' | 'in' | 'not in' | 'is empty' | 'is not empty' | 'between' | 'is today' | 'in last' | 'weekday is' | 'is true' | 'is false' | 'contains all' | 'contains any' | 'length ==' | 'length >' | 'length <' | 'jsonPath matches' | 'has key' | 'key ==' | 'id ==' | 'id in' | 'has property';
|
|
2410
|
+
interface OperatorSpec {
|
|
2411
|
+
key: OperatorKey;
|
|
2412
|
+
label: string;
|
|
2413
|
+
icon?: string;
|
|
2414
|
+
description?: string;
|
|
2415
|
+
}
|
|
2416
|
+
declare class OperatorsRegistryService {
|
|
2417
|
+
/** Returns the list of operator specs supported for a given data type. */
|
|
2418
|
+
getForType(type: ColumnDataType | 'enum' | 'array' | 'json' | 'relational'): OperatorSpec[];
|
|
2419
|
+
get keys(): OperatorKey[];
|
|
2420
|
+
private readonly stringOps;
|
|
2421
|
+
private readonly numberOps;
|
|
2422
|
+
private readonly dateOps;
|
|
2423
|
+
private readonly booleanOps;
|
|
2424
|
+
private readonly enumOps;
|
|
2425
|
+
private readonly arrayOps;
|
|
2426
|
+
private readonly jsonOps;
|
|
2427
|
+
private readonly relationalOps;
|
|
2428
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OperatorsRegistryService, never>;
|
|
2429
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OperatorsRegistryService>;
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2432
|
+
type GroupOp = 'AND' | 'OR' | 'NOT';
|
|
2433
|
+
interface RuleAtom {
|
|
2434
|
+
field: string;
|
|
2435
|
+
operator: string;
|
|
2436
|
+
value?: any;
|
|
2437
|
+
options?: Record<string, any>;
|
|
2438
|
+
}
|
|
2439
|
+
interface RuleGroup {
|
|
2440
|
+
op: GroupOp;
|
|
2441
|
+
conditions: RuleAtom[];
|
|
2442
|
+
groups?: RuleGroup[];
|
|
2443
|
+
}
|
|
2444
|
+
declare class RuleCompilerService {
|
|
1557
2445
|
/**
|
|
1558
|
-
*
|
|
2446
|
+
* Compiles a rule group into a single DSL expression string, adding
|
|
2447
|
+
* parentheses according to grouping and operator precedence.
|
|
1559
2448
|
*/
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
private readonly injectedData;
|
|
1567
|
-
/** Clears persisted preferences for this filter, falling back to globals. */
|
|
1568
|
-
resetPreferences(): void;
|
|
1569
|
-
constructor(fb: FormBuilder);
|
|
1570
|
-
tags: FilterTag[];
|
|
1571
|
-
exportJson: string;
|
|
1572
|
-
newTagLabel: string;
|
|
1573
|
-
newTagPatchText: string;
|
|
1574
|
-
private tagsKey;
|
|
1575
|
-
loadTags(): void;
|
|
1576
|
-
saveTags(): void;
|
|
1577
|
-
clearTags(): void;
|
|
1578
|
-
removeTag(index: number): void;
|
|
1579
|
-
renameTag(index: number, value: string): void;
|
|
1580
|
-
importTags(): void;
|
|
1581
|
-
addTag(): void;
|
|
1582
|
-
addTagFromCurrent(): void;
|
|
1583
|
-
dropAlwaysVisible(event: CdkDragDrop<string[]>): void;
|
|
1584
|
-
presets: {
|
|
1585
|
-
key: string;
|
|
1586
|
-
label: string;
|
|
1587
|
-
values: Partial<FilterConfig>;
|
|
1588
|
-
}[];
|
|
1589
|
-
applyPreset(key: string): void;
|
|
1590
|
-
getFieldLabel(name: string): string;
|
|
1591
|
-
hasCurrentDto(): boolean;
|
|
1592
|
-
renameTagPrompt(index: number): void;
|
|
1593
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
1594
|
-
getSettingsValue(): FilterConfig;
|
|
1595
|
-
reset(): void;
|
|
1596
|
-
private clampDebounce;
|
|
1597
|
-
private clampMinWidth;
|
|
1598
|
-
private clampColsMd;
|
|
1599
|
-
private clampColsLg;
|
|
1600
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FilterSettingsComponent, never>;
|
|
1601
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "filter-settings", never, { "metadata": { "alias": "metadata"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "configKey": { "alias": "configKey"; "required": false; }; }, { "settingsChange": "settingsChange"; }, never, never, true, never>;
|
|
2449
|
+
compileGroup(group: RuleGroup): string;
|
|
2450
|
+
/** Compiles a single rule atom to DSL. */
|
|
2451
|
+
compileAtom(atom: RuleAtom): string;
|
|
2452
|
+
private stringify;
|
|
2453
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
|
|
2454
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
|
|
1602
2455
|
}
|
|
1603
2456
|
|
|
1604
|
-
|
|
2457
|
+
type RuleItem = {
|
|
2458
|
+
condition: string;
|
|
2459
|
+
cssClass?: string;
|
|
2460
|
+
style?: Record<string, string>;
|
|
2461
|
+
description?: string;
|
|
2462
|
+
effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
|
|
2463
|
+
enabled?: boolean;
|
|
2464
|
+
};
|
|
2465
|
+
declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
|
|
2466
|
+
private cdr;
|
|
2467
|
+
private registry;
|
|
2468
|
+
private compiler;
|
|
2469
|
+
private dynamicForm;
|
|
2470
|
+
private crud?;
|
|
2471
|
+
private static runtimeRegistryInstanceCounter;
|
|
1605
2472
|
config: TableConfig;
|
|
2473
|
+
resourcePath?: string;
|
|
2474
|
+
fields?: FieldDefinition[] | null;
|
|
2475
|
+
i18nRules?: Partial<Record<string, string>>;
|
|
2476
|
+
dslFunctionRegistry: FunctionRegistry<any> | null;
|
|
1606
2477
|
configChange: EventEmitter<_praxisui_core.TableConfigModern>;
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
private
|
|
1623
|
-
private
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
2478
|
+
scope: 'row' | 'column';
|
|
2479
|
+
selectedColumnField: string | null;
|
|
2480
|
+
draftCondition: string;
|
|
2481
|
+
draftCssClass: string;
|
|
2482
|
+
draftStyleText: string;
|
|
2483
|
+
sanitizedStyle: Record<string, string>;
|
|
2484
|
+
dslMode: boolean;
|
|
2485
|
+
dslErrors: string[];
|
|
2486
|
+
testSummary: string;
|
|
2487
|
+
editIndex: number;
|
|
2488
|
+
get currentRules(): RuleItem[];
|
|
2489
|
+
set currentRules(v: RuleItem[]);
|
|
2490
|
+
rulesRow: RuleItem[];
|
|
2491
|
+
rulesColumn: RuleItem[];
|
|
2492
|
+
private parser;
|
|
2493
|
+
private runtimeFunctionRegistry;
|
|
2494
|
+
private readonly runtimeRegistryContextKey;
|
|
2495
|
+
objectKeys: {
|
|
2496
|
+
(o: object): string[];
|
|
2497
|
+
(o: {}): string[];
|
|
2498
|
+
};
|
|
2499
|
+
dynamicValueForm: FormGroup;
|
|
2500
|
+
dynamicValueMetas: FieldMetadata[];
|
|
2501
|
+
effectsValue?: RuleEffectDefinition;
|
|
2502
|
+
dynamicValueActive: boolean;
|
|
2503
|
+
private dynamicValueSub?;
|
|
2504
|
+
private testSummaryTimer;
|
|
2505
|
+
private readonly legacyStyleAllowList;
|
|
2506
|
+
basicFieldType: 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
|
|
2507
|
+
noValueOperator: boolean;
|
|
2508
|
+
i18nValuePlaceholder: string;
|
|
2509
|
+
enumOptions: Array<{
|
|
2510
|
+
value: any;
|
|
1629
2511
|
label: string;
|
|
1630
|
-
|
|
1631
|
-
|
|
2512
|
+
}>;
|
|
2513
|
+
private updateDerivedUiProps;
|
|
2514
|
+
/** Enable verbose console logging for debugging value editor behavior */
|
|
2515
|
+
debugLogs: boolean;
|
|
2516
|
+
debugLevel: 'log' | 'info' | 'debug';
|
|
2517
|
+
private dbg;
|
|
2518
|
+
/** Log a summary table of field metadata and column info for diagnostics */
|
|
2519
|
+
private logFieldMetasContext;
|
|
2520
|
+
/** Log a focused view for a single field */
|
|
2521
|
+
private logSingleFieldMeta;
|
|
2522
|
+
private logFieldChoices;
|
|
2523
|
+
i18nDefault: Record<string, string>;
|
|
2524
|
+
t(key: string): string;
|
|
2525
|
+
constructor(cdr: ChangeDetectorRef, registry: OperatorsRegistryService, compiler: RuleCompilerService, dynamicForm: DynamicFormService, crud?: GenericCrudService<any> | undefined);
|
|
2526
|
+
private configureDslRuntime;
|
|
1632
2527
|
ngOnInit(): void;
|
|
1633
|
-
ngOnChanges(): void;
|
|
2528
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
1634
2529
|
ngOnDestroy(): void;
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
private
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
private
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
2530
|
+
get columnFields(): string[];
|
|
2531
|
+
getOperatorsForField(fieldName: string | null): string[];
|
|
2532
|
+
onScopeChange(_s: 'row' | 'column'): void;
|
|
2533
|
+
onColumnSelect(_field: string): void;
|
|
2534
|
+
private initFromConfig;
|
|
2535
|
+
private loadColumnRules;
|
|
2536
|
+
rebuildCondition(): void;
|
|
2537
|
+
onDraftChange(): void;
|
|
2538
|
+
applyTextPreset(preset: string): void;
|
|
2539
|
+
generateSampleData(): void;
|
|
2540
|
+
runTest(): void;
|
|
2541
|
+
onRelSearch(ev: any): void;
|
|
2542
|
+
clearRelSelection(): void;
|
|
2543
|
+
onRelSelectSingle(opt: any): void;
|
|
2544
|
+
onRelAddMulti(opt: any): void;
|
|
2545
|
+
removeRelMulti(i: number): void;
|
|
2546
|
+
private fetchRelOptions;
|
|
2547
|
+
private getRelationalConfig;
|
|
2548
|
+
validateDraft(): void;
|
|
2549
|
+
canCommitDraft(): boolean;
|
|
2550
|
+
addOrUpdateRule(): void;
|
|
2551
|
+
editRule(index: number): void;
|
|
2552
|
+
removeRule(index: number): void;
|
|
2553
|
+
duplicateRule(index: number): void;
|
|
2554
|
+
onRuleToggle(): void;
|
|
2555
|
+
onApply(): void;
|
|
2556
|
+
isValid(): boolean;
|
|
2557
|
+
onExportRules(): void;
|
|
2558
|
+
onImportRules(): void;
|
|
2559
|
+
private sanitizeRule;
|
|
2560
|
+
private getKnownDslFields;
|
|
2561
|
+
private buildRendererOverrideFromRule;
|
|
2562
|
+
private buildLegacyRendererOverrideFromRule;
|
|
2563
|
+
private buildRowRendererOverrideFromRule;
|
|
2564
|
+
private stringifyValue;
|
|
2565
|
+
private parseLegacyStyle;
|
|
2566
|
+
private normalizeLegacyStyleObject;
|
|
2567
|
+
private extractIdentifiers;
|
|
2568
|
+
resetDraft(): void;
|
|
2569
|
+
basicField: string;
|
|
2570
|
+
basicOperator: string;
|
|
2571
|
+
basicValue: any;
|
|
2572
|
+
basicMin: any;
|
|
2573
|
+
basicMax: any;
|
|
2574
|
+
basicListCsv: string;
|
|
2575
|
+
basicDate: Date | null;
|
|
2576
|
+
basicDateStart: Date | null;
|
|
2577
|
+
basicDateEnd: Date | null;
|
|
2578
|
+
basicEnumValue: string | number | null;
|
|
2579
|
+
basicEnumValues: Array<string | number>;
|
|
2580
|
+
basicLength: number | null;
|
|
2581
|
+
relationalSelected: {
|
|
2582
|
+
id: any;
|
|
2583
|
+
label: string;
|
|
2584
|
+
raw: any;
|
|
2585
|
+
} | null;
|
|
2586
|
+
relationalSelectedMulti: Array<{
|
|
2587
|
+
id: any;
|
|
2588
|
+
label: string;
|
|
2589
|
+
raw: any;
|
|
2590
|
+
}>;
|
|
2591
|
+
relationalOptions: Array<{
|
|
2592
|
+
id: any;
|
|
2593
|
+
label: string;
|
|
2594
|
+
raw: any;
|
|
2595
|
+
}>;
|
|
2596
|
+
basicRelPath: string;
|
|
2597
|
+
private relSearchTerm;
|
|
2598
|
+
private relCache;
|
|
2599
|
+
basicLastN: number | null;
|
|
2600
|
+
basicLastUnit: 'days' | 'weeks' | 'months';
|
|
2601
|
+
basicWeekdays: number[];
|
|
2602
|
+
weekdayOptions: {
|
|
2603
|
+
value: number;
|
|
2604
|
+
label: string;
|
|
2605
|
+
}[];
|
|
2606
|
+
basicJsonPath: string;
|
|
2607
|
+
basicJsonPattern: string;
|
|
2608
|
+
basicJsonKey: string;
|
|
2609
|
+
basicJsonExpected: any;
|
|
2610
|
+
draftGroup: RuleGroup;
|
|
2611
|
+
editAtomIndex: number;
|
|
2612
|
+
activeGroupTarget: 'root' | number;
|
|
2613
|
+
onEffectsChange(v: RuleEffectDefinition): void;
|
|
2614
|
+
private hasRuleEffectsValue;
|
|
2615
|
+
getFieldType(fieldName: string | null): 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
|
|
2616
|
+
getEnumOptions(fieldName: string | null): Array<{
|
|
2617
|
+
value: any;
|
|
2618
|
+
label: string;
|
|
2619
|
+
}>;
|
|
2620
|
+
isNoValueOperator(op: string): boolean;
|
|
2621
|
+
getValuePlaceholder(): string;
|
|
2622
|
+
getI18nValuePlaceholder(): string;
|
|
2623
|
+
private toIsoDateString;
|
|
2624
|
+
setDsl(v: boolean): void;
|
|
2625
|
+
onBasicFieldChange(_val: string): void;
|
|
2626
|
+
onBasicOperatorChange(_val: string): void;
|
|
2627
|
+
private refreshDynamicValueInitialValueOnly;
|
|
2628
|
+
refreshDynamicValueHost(): void;
|
|
2629
|
+
private buildAtomFromBasic;
|
|
2630
|
+
canBuildAtom(): boolean;
|
|
2631
|
+
onAddOrUpdateAtom(): void;
|
|
2632
|
+
editAtom(index: number): void;
|
|
2633
|
+
removeAtom(index: number): void;
|
|
2634
|
+
resetAtomEdit(): void;
|
|
2635
|
+
private focusAddCondition;
|
|
2636
|
+
clearGroup(): void;
|
|
2637
|
+
onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
|
|
2638
|
+
updateDraftFromGroup(): void;
|
|
2639
|
+
getAtomPreview(a: RuleAtom): string;
|
|
2640
|
+
addSubgroup(): void;
|
|
2641
|
+
removeSubgroup(index: number): void;
|
|
2642
|
+
getGroupPreview(g: RuleGroup): string;
|
|
2643
|
+
private getActiveGroupRef;
|
|
2644
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, { optional: true; }]>;
|
|
2645
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableRulesEditorComponent, "table-rules-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18nRules": { "alias": "i18nRules"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; "debugLogs": { "alias": "debugLogs"; "required": false; }; "debugLevel": { "alias": "debugLevel"; "required": false; }; }, { "configChange": "configChange"; }, never, never, true, never>;
|
|
1658
2646
|
}
|
|
1659
2647
|
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
declare function
|
|
1669
|
-
declare function
|
|
2648
|
+
/**
|
|
2649
|
+
* Lightweight JSON path evaluator for simple cases used in conditional styling.
|
|
2650
|
+
* Supported syntax (subset):
|
|
2651
|
+
* - $.a.b.c
|
|
2652
|
+
* - a.b[0].c
|
|
2653
|
+
* - a["key"] / a['key']
|
|
2654
|
+
* - a[0]
|
|
2655
|
+
*/
|
|
2656
|
+
declare function jsonPathGet(root: any, rawPath: string): any;
|
|
2657
|
+
declare function hasJsonKey(root: any, keyOrPath: string): boolean;
|
|
2658
|
+
declare function jsonPathMatches(root: any, path: string, pattern: string): boolean;
|
|
2659
|
+
/**
|
|
2660
|
+
* Registers JSON helpers in a DslParser instance, if it supports custom functions.
|
|
2661
|
+
* This is optional — call it in your app host bootstrap.
|
|
2662
|
+
*/
|
|
2663
|
+
declare function registerJsonDslFunctions(parser: DslParser | any): void;
|
|
2664
|
+
|
|
2665
|
+
/**
|
|
2666
|
+
* Registers simple date/time helpers in a DslParser instance.
|
|
2667
|
+
* - today(): returns 'YYYY-MM-DD' (UTC)
|
|
2668
|
+
* - now(): returns Unix timestamp in milliseconds
|
|
2669
|
+
* - dateAdd(date, amount, unit): adds amount (days|weeks|months) and returns 'YYYY-MM-DD'
|
|
2670
|
+
* - dateFormat(date, token): supports token 'E' (ISO weekday 1..7)
|
|
2671
|
+
*/
|
|
2672
|
+
declare function registerDateDslFunctions(parser: DslParser | any): void;
|
|
1670
2673
|
|
|
1671
2674
|
declare class FormulaGeneratorService {
|
|
1672
2675
|
/**
|
|
@@ -1709,6 +2712,15 @@ declare class FormulaGeneratorService {
|
|
|
1709
2712
|
result?: any;
|
|
1710
2713
|
error?: string;
|
|
1711
2714
|
};
|
|
2715
|
+
private evaluateFormula;
|
|
2716
|
+
private evaluateConcatenation;
|
|
2717
|
+
private evaluateArithmetic;
|
|
2718
|
+
private evaluateNestedProperty;
|
|
2719
|
+
private evaluateConditionalMapping;
|
|
2720
|
+
private evaluateDefaultValue;
|
|
2721
|
+
private compareValues;
|
|
2722
|
+
private resolveOperand;
|
|
2723
|
+
private resolveFieldValue;
|
|
1712
2724
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormulaGeneratorService, never>;
|
|
1713
2725
|
static ɵprov: i0.ɵɵInjectableDeclaration<FormulaGeneratorService>;
|
|
1714
2726
|
}
|
|
@@ -1771,5 +2783,86 @@ declare const PRAXIS_TABLE_COMPONENT_METADATA: ComponentDocMeta;
|
|
|
1771
2783
|
*/
|
|
1772
2784
|
declare function providePraxisTableMetadata(): Provider;
|
|
1773
2785
|
|
|
1774
|
-
|
|
1775
|
-
|
|
2786
|
+
/**
|
|
2787
|
+
* Catálogo de capacidades do TableConfig v2 para uso da IA.
|
|
2788
|
+
* Focado em paths permitidos, enums e flags críticas para validação de patches.
|
|
2789
|
+
*/
|
|
2790
|
+
|
|
2791
|
+
declare module '@praxisui/core' {
|
|
2792
|
+
interface AiCapabilityCategoryMap {
|
|
2793
|
+
meta: true;
|
|
2794
|
+
columns: true;
|
|
2795
|
+
renderer: true;
|
|
2796
|
+
conditional: true;
|
|
2797
|
+
mapping: true;
|
|
2798
|
+
format: true;
|
|
2799
|
+
filtering: true;
|
|
2800
|
+
sorting: true;
|
|
2801
|
+
selection: true;
|
|
2802
|
+
pagination: true;
|
|
2803
|
+
interaction: true;
|
|
2804
|
+
toolbar: true;
|
|
2805
|
+
actions: true;
|
|
2806
|
+
export: true;
|
|
2807
|
+
performance: true;
|
|
2808
|
+
messages: true;
|
|
2809
|
+
localization: true;
|
|
2810
|
+
}
|
|
2811
|
+
}
|
|
2812
|
+
type CapabilityCategory$1 = AiCapabilityCategory;
|
|
2813
|
+
type ValueKind$1 = AiValueKind;
|
|
2814
|
+
interface Capability$1 extends AiCapability {
|
|
2815
|
+
/** Path com [] para arrays (ex.: columns[].renderer.type) */
|
|
2816
|
+
path: string;
|
|
2817
|
+
category: CapabilityCategory$1;
|
|
2818
|
+
valueKind: ValueKind$1;
|
|
2819
|
+
allowedValues?: Array<string | number>;
|
|
2820
|
+
description?: string;
|
|
2821
|
+
critical?: boolean;
|
|
2822
|
+
intentExamples?: string[];
|
|
2823
|
+
dependsOn?: string;
|
|
2824
|
+
example?: string;
|
|
2825
|
+
safetyNotes?: string;
|
|
2826
|
+
}
|
|
2827
|
+
interface CapabilityCatalog$1 extends AiCapabilityCatalog {
|
|
2828
|
+
capabilities: Capability$1[];
|
|
2829
|
+
}
|
|
2830
|
+
declare const ENUMS: Record<string, string[]>;
|
|
2831
|
+
declare const TABLE_AI_CAPABILITIES: CapabilityCatalog$1;
|
|
2832
|
+
/**
|
|
2833
|
+
* Agrupamentos lógicos de tarefas para facilitar a injeção de contexto no prompt da IA.
|
|
2834
|
+
* A IA pode receber apenas o grupo relevante para a intenção do usuário.
|
|
2835
|
+
*/
|
|
2836
|
+
declare const TASK_PRESETS: {
|
|
2837
|
+
'visual-refresh': string[];
|
|
2838
|
+
'data-analysis': string[];
|
|
2839
|
+
'interaction-setup': string[];
|
|
2840
|
+
'export-governance': string[];
|
|
2841
|
+
'layout-structure': string[];
|
|
2842
|
+
};
|
|
2843
|
+
declare function getTableCapabilities(): Capability$1[];
|
|
2844
|
+
declare function getEnum(name: keyof typeof ENUMS): string[];
|
|
2845
|
+
|
|
2846
|
+
/**
|
|
2847
|
+
* Component-level capabilities for PraxisTable.
|
|
2848
|
+
* Paths assume a wrapper shape: { inputs: {...}, outputs: {...} }.
|
|
2849
|
+
*/
|
|
2850
|
+
|
|
2851
|
+
declare module '@praxisui/core' {
|
|
2852
|
+
interface AiCapabilityCategoryMap {
|
|
2853
|
+
inputs: true;
|
|
2854
|
+
outputs: true;
|
|
2855
|
+
}
|
|
2856
|
+
}
|
|
2857
|
+
type CapabilityCategory = AiCapabilityCategory;
|
|
2858
|
+
type ValueKind = AiValueKind;
|
|
2859
|
+
interface Capability extends AiCapability {
|
|
2860
|
+
category: CapabilityCategory;
|
|
2861
|
+
}
|
|
2862
|
+
interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
2863
|
+
capabilities: Capability[];
|
|
2864
|
+
}
|
|
2865
|
+
declare const TABLE_COMPONENT_AI_CAPABILITIES: CapabilityCatalog;
|
|
2866
|
+
|
|
2867
|
+
export { BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FILTER_DRAWER_ADAPTER, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, getActionId, getEnum, getTableCapabilities, hasJsonKey, jsonPathGet, jsonPathMatches, providePraxisTableMetadata, registerDateDslFunctions, registerJsonDslFunctions };
|
|
2868
|
+
export type { ActionLike, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataMode, DateFormatterOptions, DefaultValueParams, FieldSchema, FilterConfig, FilterDrawerAdapter, FilterDrawerOpenConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, ResourcePathIntent, RowAction, StringFormatterOptions, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, ValueKind as TableComponentValueKind, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
|