@praxisui/core 1.0.0-beta.5 → 1.0.0-beta.52
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 +162 -2
- package/fesm2022/praxisui-core.mjs +11537 -3713
- package/fesm2022/praxisui-core.mjs.map +1 -1
- package/index.d.ts +3107 -806
- package/package.json +4 -4
package/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Provider,
|
|
3
|
-
import { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';
|
|
2
|
+
import { InjectionToken, Type, Provider, ErrorHandler, EnvironmentProviders, OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ElementRef, Renderer2 } from '@angular/core';
|
|
4
3
|
import * as rxjs from 'rxjs';
|
|
5
4
|
import { Observable, BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { HttpHeaders, HttpContext, HttpClient, HttpParams, HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpContextToken } from '@angular/common/http';
|
|
6
6
|
import { ValidationErrors, ValidatorFn, AsyncValidatorFn, FormControl, FormGroup } from '@angular/forms';
|
|
7
|
-
import { ThemePalette } from '@angular/material/core';
|
|
7
|
+
import { ThemePalette, DateAdapter } from '@angular/material/core';
|
|
8
|
+
import { ActivatedRoute } from '@angular/router';
|
|
8
9
|
import { MatDialogRef } from '@angular/material/dialog';
|
|
9
10
|
|
|
10
11
|
declare class PraxisCore {
|
|
@@ -12,6 +13,219 @@ declare class PraxisCore {
|
|
|
12
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisCore, "praxis-praxis-core", never, {}, {}, never, never, true, never>;
|
|
13
14
|
}
|
|
14
15
|
|
|
16
|
+
interface HateoasLink {
|
|
17
|
+
href: string;
|
|
18
|
+
templated?: boolean;
|
|
19
|
+
type?: string;
|
|
20
|
+
deprecation?: string;
|
|
21
|
+
profile?: string;
|
|
22
|
+
name?: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
hreflang?: string;
|
|
25
|
+
[prop: string]: any;
|
|
26
|
+
}
|
|
27
|
+
interface RestApiLinks {
|
|
28
|
+
[rel: string]: HateoasLink | HateoasLink[];
|
|
29
|
+
}
|
|
30
|
+
interface RestApiResponse<T> {
|
|
31
|
+
status?: string;
|
|
32
|
+
message?: string;
|
|
33
|
+
data: T;
|
|
34
|
+
_links?: RestApiLinks;
|
|
35
|
+
errors?: any;
|
|
36
|
+
timestamp?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface Page<T> {
|
|
40
|
+
content: T[];
|
|
41
|
+
totalElements: number;
|
|
42
|
+
totalPages: number;
|
|
43
|
+
size: number;
|
|
44
|
+
number: number;
|
|
45
|
+
}
|
|
46
|
+
interface CursorPage<T> {
|
|
47
|
+
content: T[];
|
|
48
|
+
next?: string | null;
|
|
49
|
+
prev?: string | null;
|
|
50
|
+
size: number;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface OptionDTO<ID = string | number> {
|
|
54
|
+
id: ID;
|
|
55
|
+
label: string;
|
|
56
|
+
extra?: Record<string, unknown>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface PageableRequest {
|
|
60
|
+
pageNumber: number;
|
|
61
|
+
pageSize: number;
|
|
62
|
+
sort?: string[];
|
|
63
|
+
}
|
|
64
|
+
interface FilterOptions<ID = string | number> {
|
|
65
|
+
includeIds?: ID[];
|
|
66
|
+
observeVersionHeader?: boolean;
|
|
67
|
+
}
|
|
68
|
+
interface CursorRequest {
|
|
69
|
+
size?: number;
|
|
70
|
+
sort?: string[];
|
|
71
|
+
after?: string | null;
|
|
72
|
+
before?: string | null;
|
|
73
|
+
}
|
|
74
|
+
interface LocateRequest {
|
|
75
|
+
size: number;
|
|
76
|
+
sort?: string[];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Contrato de saída do normalizador de esquema (SchemaNormalizerService):
|
|
81
|
+
* - Converte metadados `x-ui` em FieldDefinition tipado.
|
|
82
|
+
* - Todas as funções expostas são funções reais (nunca strings):
|
|
83
|
+
* - conditionalDisplay: () => boolean
|
|
84
|
+
* - conditionalRequired: () => boolean
|
|
85
|
+
* - transformValueFunction: (val: any) => any
|
|
86
|
+
* - Suporte completo a ValidatorOptions (sincronos e assíncronos),
|
|
87
|
+
* incluindo mensagens e comportamento de validação (gatilhos, debounce, exibição de erros).
|
|
88
|
+
*/
|
|
89
|
+
interface FieldDefinition {
|
|
90
|
+
name: string;
|
|
91
|
+
label?: string;
|
|
92
|
+
description?: string;
|
|
93
|
+
type?: string;
|
|
94
|
+
controlType?: string;
|
|
95
|
+
mode?: string;
|
|
96
|
+
placeholder?: string;
|
|
97
|
+
defaultValue?: any;
|
|
98
|
+
group?: string;
|
|
99
|
+
order?: number;
|
|
100
|
+
width?: number | string;
|
|
101
|
+
isFlex?: boolean;
|
|
102
|
+
displayOrientation?: string;
|
|
103
|
+
disabled?: boolean;
|
|
104
|
+
readOnly?: boolean;
|
|
105
|
+
multiple?: boolean;
|
|
106
|
+
editable?: boolean;
|
|
107
|
+
validationMode?: string;
|
|
108
|
+
unique?: boolean;
|
|
109
|
+
mask?: string;
|
|
110
|
+
sortable?: boolean;
|
|
111
|
+
/** Função que define obrigatoriedade condicional. */
|
|
112
|
+
conditionalRequired?: () => boolean;
|
|
113
|
+
viewOnlyStyle?: string;
|
|
114
|
+
/** Lista de gatilhos de validação, ex.: ["blur", "change"]. */
|
|
115
|
+
validationTriggers?: string[];
|
|
116
|
+
hidden?: boolean;
|
|
117
|
+
tableHidden?: boolean;
|
|
118
|
+
formHidden?: boolean;
|
|
119
|
+
filterable?: boolean;
|
|
120
|
+
/** Função que controla se o campo é exibido. */
|
|
121
|
+
conditionalDisplay?: () => boolean;
|
|
122
|
+
dependentField?: string;
|
|
123
|
+
resetOnDependentChange?: boolean;
|
|
124
|
+
inlineEditing?: boolean;
|
|
125
|
+
/** Função de transformação de valor antes de salvar/exibir. */
|
|
126
|
+
transformValueFunction?: (val: any) => any;
|
|
127
|
+
debounceTime?: number;
|
|
128
|
+
helpText?: string;
|
|
129
|
+
hint?: string;
|
|
130
|
+
hiddenCondition?: any;
|
|
131
|
+
tooltipOnHover?: boolean;
|
|
132
|
+
icon?: string;
|
|
133
|
+
iconPosition?: string;
|
|
134
|
+
iconSize?: string | number;
|
|
135
|
+
iconColor?: string;
|
|
136
|
+
iconClass?: string;
|
|
137
|
+
iconStyle?: string;
|
|
138
|
+
iconFontSize?: string | number;
|
|
139
|
+
valueField?: string;
|
|
140
|
+
displayField?: string;
|
|
141
|
+
endpoint?: string;
|
|
142
|
+
resourcePath?: string;
|
|
143
|
+
emptyOptionText?: string;
|
|
144
|
+
options?: {
|
|
145
|
+
key: string;
|
|
146
|
+
value: string;
|
|
147
|
+
}[];
|
|
148
|
+
filter?: any;
|
|
149
|
+
filterCriteria?: any;
|
|
150
|
+
searchable?: boolean;
|
|
151
|
+
selectAll?: boolean;
|
|
152
|
+
maxSelections?: number;
|
|
153
|
+
optionLabelKey?: string;
|
|
154
|
+
optionValueKey?: string;
|
|
155
|
+
filterOptions?: any[];
|
|
156
|
+
filterControlType?: string;
|
|
157
|
+
numericFormat?: string;
|
|
158
|
+
numericStep?: number;
|
|
159
|
+
numericMin?: number;
|
|
160
|
+
numericMax?: number;
|
|
161
|
+
numericMaxLength?: number;
|
|
162
|
+
optionGroups?: {
|
|
163
|
+
key: string;
|
|
164
|
+
value: string;
|
|
165
|
+
}[];
|
|
166
|
+
disabledOptions?: string[];
|
|
167
|
+
buttons?: any[];
|
|
168
|
+
/** Obrigatório. */
|
|
169
|
+
required?: boolean;
|
|
170
|
+
requiredMessage?: string;
|
|
171
|
+
/** Tamanho mínimo/máximo (strings). */
|
|
172
|
+
minLength?: number;
|
|
173
|
+
minLengthMessage?: string;
|
|
174
|
+
maxLength?: number;
|
|
175
|
+
maxLengthMessage?: string;
|
|
176
|
+
/** Limites numéricos. */
|
|
177
|
+
min?: number;
|
|
178
|
+
max?: number;
|
|
179
|
+
/** Mensagens dedicadas para min/max numéricos. */
|
|
180
|
+
minMessage?: string;
|
|
181
|
+
maxMessage?: string;
|
|
182
|
+
/** Mensagem quando ambos limites (range) são aplicados. */
|
|
183
|
+
rangeMessage?: string;
|
|
184
|
+
/** Padrão (regex). Aceita pattern/regex. */
|
|
185
|
+
pattern?: string;
|
|
186
|
+
patternMessage?: string;
|
|
187
|
+
/** Validação de e-mail. */
|
|
188
|
+
email?: boolean;
|
|
189
|
+
emailMessage?: string;
|
|
190
|
+
/** Validação de URL. */
|
|
191
|
+
url?: boolean;
|
|
192
|
+
urlMessage?: string;
|
|
193
|
+
/** Requer que valor combine com outro campo. */
|
|
194
|
+
matchField?: string;
|
|
195
|
+
matchFieldMessage?: string;
|
|
196
|
+
/** Requer que o checkbox esteja marcado. */
|
|
197
|
+
requiredChecked?: boolean;
|
|
198
|
+
/** Tipos de arquivo permitidos e tamanho máximo. */
|
|
199
|
+
allowedFileTypes?: string[];
|
|
200
|
+
fileTypeMessage?: string;
|
|
201
|
+
maxFileSize?: number;
|
|
202
|
+
/** Validador customizado síncrono. */
|
|
203
|
+
customValidator?: (value: any, model?: any) => any;
|
|
204
|
+
/** Validador customizado assíncrono. */
|
|
205
|
+
asyncValidator?: (value: any, model?: any) => Promise<any>;
|
|
206
|
+
/** Validador de unicidade (ex.: consulta ao backend). */
|
|
207
|
+
uniqueValidator?: (value: any, model?: any) => boolean | Promise<boolean>;
|
|
208
|
+
uniqueMessage?: string;
|
|
209
|
+
/** Validação condicional baseada em outro(s) campos/estado. */
|
|
210
|
+
conditionalValidation?: (value: any, model?: any) => boolean | string | Promise<boolean | string>;
|
|
211
|
+
/** Mínimo de palavras (para textos longos). */
|
|
212
|
+
minWords?: number;
|
|
213
|
+
/** Gatilho(s) de validação (alias de validationTriggers). */
|
|
214
|
+
/** Tempo de debounce (ms) para executar validação. */
|
|
215
|
+
validationDebounce?: number;
|
|
216
|
+
/** Exibir erros inline no campo. */
|
|
217
|
+
showInlineErrors?: boolean;
|
|
218
|
+
/** Posição preferida da mensagem de erro (ex.: below, right). */
|
|
219
|
+
errorPosition?: string;
|
|
220
|
+
[key: string]: any;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare enum ApiEndpoint {
|
|
224
|
+
Default = "default",
|
|
225
|
+
HumanResources = "humanResources",
|
|
226
|
+
UiWrappersTest = "uiWrappersTest"
|
|
227
|
+
}
|
|
228
|
+
|
|
15
229
|
interface ApiUrlEntry {
|
|
16
230
|
baseUrl?: string;
|
|
17
231
|
path?: string;
|
|
@@ -27,17 +241,102 @@ declare function buildApiUrl(entry: ApiUrlEntry): string;
|
|
|
27
241
|
declare function buildHeaders(entry: ApiUrlEntry): HttpHeaders | undefined;
|
|
28
242
|
|
|
29
243
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
244
|
+
* SchemaNormalizerService
|
|
245
|
+
* -----------------------
|
|
246
|
+
* Serviço responsável por converter um esquema bruto (OpenAPI + x-ui) em uma
|
|
247
|
+
* lista tipada de FieldDefinition consumida pelo restante do sistema
|
|
248
|
+
* (mapeadores de metadata, criador de FormGroup, carregador de campos dinâmicos, etc.).
|
|
249
|
+
*
|
|
250
|
+
* Entrada esperada
|
|
251
|
+
* - Objeto JSON no formato OpenAPI/JSON Schema contendo:
|
|
252
|
+
* - properties: { [name: string]: { type, title, description, ... , 'x-ui': { ... } } }
|
|
253
|
+
* - Em cada propriedade, o objeto 'x-ui' define aspectos de UI/validação.
|
|
254
|
+
*
|
|
255
|
+
* Saída (FieldDefinition[])
|
|
256
|
+
* - Tipagem forte de campos com funções reais (nunca strings) para regras condicionais e validadores customizados.
|
|
257
|
+
* - Todas as propriedades de validação e comportamento consolidadas no mesmo objeto do campo.
|
|
258
|
+
*
|
|
259
|
+
* Segurança e observações
|
|
260
|
+
* - Este serviço aceita funções em formato string dentro do x-ui (ex.: uniqueValidator, conditionalValidation),
|
|
261
|
+
* e as converte via new Function. Isso exige backend confiável e controlado.
|
|
262
|
+
* Em ambientes não confiáveis, evite funções como string ou implemente um sandbox/whitelist.
|
|
263
|
+
* - Valores booleanos/numéricos são normalizados para tipos nativos.
|
|
264
|
+
* - Arrays de opções são convertidos para pares { key, value } previsíveis.
|
|
265
|
+
*
|
|
266
|
+
* Exemplo mínimo de entrada
|
|
267
|
+
* const schema = {
|
|
268
|
+
* properties: {
|
|
269
|
+
* email: {
|
|
270
|
+
* type: 'string',
|
|
271
|
+
* title: 'E-mail',
|
|
272
|
+
* 'x-ui': { controlType: 'input', type: 'string', required: true, email: true }
|
|
273
|
+
* }
|
|
274
|
+
* }
|
|
275
|
+
* };
|
|
276
|
+
* const fields = normalizer.normalizeSchema(schema);
|
|
277
|
+
* // fields: [{ name: 'email', label: 'E-mail', type: 'string', controlType: 'input', required: true, email: true }]
|
|
32
278
|
*/
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
/**
|
|
279
|
+
declare class SchemaNormalizerService {
|
|
280
|
+
/** Convert value to boolean. Accepts boolean, string or number. */
|
|
281
|
+
private parseBoolean;
|
|
282
|
+
/** Ensure an array of strings from various inputs. */
|
|
283
|
+
private parseStringArray;
|
|
284
|
+
/** Parse option arrays into `{ key, value }` objects. */
|
|
285
|
+
private parseOptions;
|
|
286
|
+
/**
|
|
287
|
+
* Converte string/Function em função real.
|
|
288
|
+
* Atenção: usa `new Function` para avaliar strings – requer backend confiável.
|
|
289
|
+
*/
|
|
290
|
+
private parseFunction;
|
|
291
|
+
/** Parse a predicate function: () => boolean */
|
|
292
|
+
private parsePredicateFunction;
|
|
293
|
+
/** Parse a transform function: (val: any) => any */
|
|
294
|
+
private parseTransformFunction;
|
|
295
|
+
/**
|
|
296
|
+
* Parse de validador condicional: (value: any, model?: any) => boolean | string | Promise<boolean | string>
|
|
297
|
+
*/
|
|
298
|
+
private parseConditionalValidator;
|
|
299
|
+
/**
|
|
300
|
+
* Extrai e normaliza propriedades de validação a partir do objeto x-ui.
|
|
301
|
+
* Suporta: required, min/max, minLength/maxLength, pattern/regex, email, url,
|
|
302
|
+
* matchField, uniqueValidator (+message), conditionalValidation, requiredChecked,
|
|
303
|
+
* arquivos (allowedFileTypes, fileTypeMessage, maxFileSize), custom/async validators,
|
|
304
|
+
* minWords e comportamento (validationTrigger(s), validationDebounce, showInlineErrors, errorPosition).
|
|
305
|
+
*/
|
|
306
|
+
private parseValidators;
|
|
307
|
+
/** Parse array of button definitions. */
|
|
308
|
+
private parseButtons;
|
|
309
|
+
private resolveNonEmptyStringToken;
|
|
310
|
+
private isNumericSchemaType;
|
|
311
|
+
private resolveNumericFormatToken;
|
|
312
|
+
/**
|
|
313
|
+
* Converte o schema bruto do backend (OpenAPI + x-ui) em FieldDefinition[] tipado.
|
|
314
|
+
* Regras:
|
|
315
|
+
* - Ignora propriedades sem x-ui.
|
|
316
|
+
* - Garante ordenação por 'order' quando presente.
|
|
317
|
+
* - Funções condicionais/transformações sempre viram funções reais.
|
|
318
|
+
*
|
|
319
|
+
* @param schema Objeto OpenAPI/JSON Schema com properties e x-ui por propriedade.
|
|
320
|
+
* @returns FieldDefinition[] prontos para mapeamento/uso no restante do sistema.
|
|
321
|
+
*/
|
|
322
|
+
normalizeSchema(schema: any): FieldDefinition[];
|
|
323
|
+
private resolveFieldType;
|
|
324
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SchemaNormalizerService, never>;
|
|
325
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SchemaNormalizerService>;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Nova arquitetura modular do TableConfig v2.0
|
|
330
|
+
* Preparada para crescimento exponencial e alinhada com as 5 abas do editor
|
|
331
|
+
*/
|
|
332
|
+
interface ColumnDefinition {
|
|
333
|
+
/** Campo da fonte de dados */
|
|
334
|
+
field: string;
|
|
335
|
+
/** Cabeçalho da coluna */
|
|
336
|
+
header: string;
|
|
337
|
+
/** Tipo de dados para formatação */
|
|
338
|
+
type?: 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
|
|
339
|
+
/** Largura da coluna */
|
|
41
340
|
width?: string;
|
|
42
341
|
/** Visibilidade da coluna */
|
|
43
342
|
visible?: boolean;
|
|
@@ -65,12 +364,24 @@ interface ColumnDefinition {
|
|
|
65
364
|
headerCssClass?: string;
|
|
66
365
|
/** Formato de exibição dos dados */
|
|
67
366
|
format?: any;
|
|
367
|
+
/** Coluna calculada baseada em expressão */
|
|
368
|
+
computed?: {
|
|
369
|
+
/** Expressão segura baseada em campos da linha */
|
|
370
|
+
expression: string;
|
|
371
|
+
/** Tipo do valor calculado para formatação */
|
|
372
|
+
outputType?: ColumnDefinition['type'];
|
|
373
|
+
/** Formato opcional do valor calculado */
|
|
374
|
+
format?: string;
|
|
375
|
+
/** Campos usados na expressão (opcional) */
|
|
376
|
+
dependencies?: string[];
|
|
377
|
+
};
|
|
68
378
|
/** Mapeamento de valores para exibição */
|
|
69
379
|
valueMapping?: {
|
|
70
380
|
[key: string | number]: string;
|
|
71
381
|
};
|
|
72
382
|
/**
|
|
73
383
|
* Renderizador de célula (Fase 1): opções básicas para ícone, imagem ou badge.
|
|
384
|
+
* Fase 2: expandido com tipos interativos/ricos (link, button, chip, progress, avatar, toggle, menu, html).
|
|
74
385
|
* Mantém compatibilidade com type/format/valueMapping; quando definido, tem precedência na exibição.
|
|
75
386
|
*/
|
|
76
387
|
renderer?: {
|
|
@@ -79,7 +390,7 @@ interface ColumnDefinition {
|
|
|
79
390
|
expr: string;
|
|
80
391
|
};
|
|
81
392
|
/** Tipo do renderizador */
|
|
82
|
-
type: 'icon' | 'image' | 'badge';
|
|
393
|
+
type: 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'rating' | 'html' | 'compose';
|
|
83
394
|
/** Configuração de ícone (Material/SVG por nome) */
|
|
84
395
|
icon?: {
|
|
85
396
|
/** Nome fixo do ícone (ex.: 'check_circle') */
|
|
@@ -126,7 +437,222 @@ interface ColumnDefinition {
|
|
|
126
437
|
/** Ícone opcional dentro do badge */
|
|
127
438
|
icon?: string;
|
|
128
439
|
};
|
|
440
|
+
/** Link (sanitizado) */
|
|
441
|
+
link?: {
|
|
442
|
+
text?: string;
|
|
443
|
+
textField?: string;
|
|
444
|
+
href?: string;
|
|
445
|
+
hrefField?: string;
|
|
446
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
447
|
+
rel?: string;
|
|
448
|
+
};
|
|
449
|
+
/** Botão (ação por linha) */
|
|
450
|
+
button?: {
|
|
451
|
+
label?: string;
|
|
452
|
+
labelField?: string;
|
|
453
|
+
icon?: string;
|
|
454
|
+
color?: 'primary' | 'accent' | 'warn' | string;
|
|
455
|
+
variant?: 'filled' | 'outlined' | 'text';
|
|
456
|
+
size?: 'sm' | 'md' | 'lg';
|
|
457
|
+
ariaLabel?: string;
|
|
458
|
+
disabledCondition?: string;
|
|
459
|
+
action?: {
|
|
460
|
+
id: string;
|
|
461
|
+
payloadExpr?: string;
|
|
462
|
+
};
|
|
463
|
+
};
|
|
464
|
+
/** Chip (etiqueta leve) */
|
|
465
|
+
chip?: {
|
|
466
|
+
text?: string;
|
|
467
|
+
textField?: string;
|
|
468
|
+
color?: string;
|
|
469
|
+
icon?: string;
|
|
470
|
+
variant?: 'filled' | 'outlined' | 'soft';
|
|
471
|
+
};
|
|
472
|
+
/** Barra de progresso leve */
|
|
473
|
+
progress?: {
|
|
474
|
+
valueExpr: string;
|
|
475
|
+
color?: string;
|
|
476
|
+
showLabel?: boolean;
|
|
477
|
+
};
|
|
478
|
+
/** Avaliação por estrelas (read-only em tabelas) */
|
|
479
|
+
rating?: {
|
|
480
|
+
valueExpr?: string;
|
|
481
|
+
max?: number;
|
|
482
|
+
color?: string;
|
|
483
|
+
outlineColor?: string;
|
|
484
|
+
size?: 'small' | 'medium' | 'large';
|
|
485
|
+
ariaLabel?: string;
|
|
486
|
+
readonly?: boolean;
|
|
487
|
+
};
|
|
488
|
+
/** Avatar (imagem ou iniciais) */
|
|
489
|
+
avatar?: {
|
|
490
|
+
src?: string;
|
|
491
|
+
srcField?: string;
|
|
492
|
+
alt?: string;
|
|
493
|
+
altField?: string;
|
|
494
|
+
initialsExpr?: string;
|
|
495
|
+
shape?: 'square' | 'rounded' | 'circle';
|
|
496
|
+
size?: number;
|
|
497
|
+
};
|
|
498
|
+
/** Alternância (toggle) com ação */
|
|
499
|
+
toggle?: {
|
|
500
|
+
stateExpr: string;
|
|
501
|
+
disabledCondition?: string;
|
|
502
|
+
action?: {
|
|
503
|
+
id: string;
|
|
504
|
+
payloadExpr?: string;
|
|
505
|
+
};
|
|
506
|
+
ariaLabel?: string;
|
|
507
|
+
};
|
|
508
|
+
/** Menu de ações
|
|
509
|
+
* itemsExpr → Array<{ label: string; icon?: string; id: string; payloadExpr?: string; visibleCondition?: string }> */
|
|
510
|
+
menu?: {
|
|
511
|
+
itemsExpr: string;
|
|
512
|
+
ariaLabel?: string;
|
|
513
|
+
};
|
|
514
|
+
/** HTML (sanitizado) com tokens [[field]] */
|
|
515
|
+
html?: {
|
|
516
|
+
template: string;
|
|
517
|
+
sanitize?: 'strict' | 'basic';
|
|
518
|
+
emptyFallback?: string;
|
|
519
|
+
};
|
|
520
|
+
/** Compose (multi-itens) */
|
|
521
|
+
compose?: {
|
|
522
|
+
items: Array<{
|
|
523
|
+
type: 'icon';
|
|
524
|
+
icon?: {
|
|
525
|
+
name?: string;
|
|
526
|
+
nameField?: string;
|
|
527
|
+
color?: string;
|
|
528
|
+
size?: number;
|
|
529
|
+
ariaLabel?: string;
|
|
530
|
+
};
|
|
531
|
+
} | {
|
|
532
|
+
type: 'image';
|
|
533
|
+
image?: {
|
|
534
|
+
src?: string;
|
|
535
|
+
srcField?: string;
|
|
536
|
+
alt?: string;
|
|
537
|
+
altField?: string;
|
|
538
|
+
width?: number;
|
|
539
|
+
height?: number;
|
|
540
|
+
shape?: 'square' | 'rounded' | 'circle';
|
|
541
|
+
fit?: 'cover' | 'contain';
|
|
542
|
+
lazy?: boolean;
|
|
543
|
+
};
|
|
544
|
+
} | {
|
|
545
|
+
type: 'badge';
|
|
546
|
+
badge?: {
|
|
547
|
+
text?: string;
|
|
548
|
+
textField?: string;
|
|
549
|
+
color?: string;
|
|
550
|
+
variant?: 'filled' | 'outlined' | 'soft';
|
|
551
|
+
icon?: string;
|
|
552
|
+
};
|
|
553
|
+
} | {
|
|
554
|
+
type: 'link';
|
|
555
|
+
link?: {
|
|
556
|
+
text?: string;
|
|
557
|
+
textField?: string;
|
|
558
|
+
href?: string;
|
|
559
|
+
hrefField?: string;
|
|
560
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
561
|
+
rel?: string;
|
|
562
|
+
};
|
|
563
|
+
} | {
|
|
564
|
+
type: 'button';
|
|
565
|
+
button?: {
|
|
566
|
+
label?: string;
|
|
567
|
+
labelField?: string;
|
|
568
|
+
icon?: string;
|
|
569
|
+
color?: string;
|
|
570
|
+
variant?: 'filled' | 'outlined' | 'text';
|
|
571
|
+
size?: 'sm' | 'md' | 'lg';
|
|
572
|
+
disabledCondition?: string;
|
|
573
|
+
action?: {
|
|
574
|
+
id: string;
|
|
575
|
+
payloadExpr?: string;
|
|
576
|
+
};
|
|
577
|
+
};
|
|
578
|
+
} | {
|
|
579
|
+
type: 'chip';
|
|
580
|
+
chip?: {
|
|
581
|
+
text?: string;
|
|
582
|
+
textField?: string;
|
|
583
|
+
color?: string;
|
|
584
|
+
icon?: string;
|
|
585
|
+
variant?: 'filled' | 'outlined' | 'soft';
|
|
586
|
+
};
|
|
587
|
+
} | {
|
|
588
|
+
type: 'progress';
|
|
589
|
+
progress?: {
|
|
590
|
+
valueExpr: string;
|
|
591
|
+
color?: string;
|
|
592
|
+
showLabel?: boolean;
|
|
593
|
+
};
|
|
594
|
+
} | {
|
|
595
|
+
type: 'avatar';
|
|
596
|
+
avatar?: {
|
|
597
|
+
src?: string;
|
|
598
|
+
srcField?: string;
|
|
599
|
+
alt?: string;
|
|
600
|
+
altField?: string;
|
|
601
|
+
initialsExpr?: string;
|
|
602
|
+
shape?: 'square' | 'rounded' | 'circle';
|
|
603
|
+
size?: number;
|
|
604
|
+
};
|
|
605
|
+
} | {
|
|
606
|
+
type: 'toggle';
|
|
607
|
+
toggle?: {
|
|
608
|
+
stateExpr: string;
|
|
609
|
+
disabledCondition?: string;
|
|
610
|
+
action?: {
|
|
611
|
+
id: string;
|
|
612
|
+
payloadExpr?: string;
|
|
613
|
+
};
|
|
614
|
+
};
|
|
615
|
+
} | {
|
|
616
|
+
type: 'menu';
|
|
617
|
+
menu?: {
|
|
618
|
+
itemsExpr: string;
|
|
619
|
+
ariaLabel?: string;
|
|
620
|
+
};
|
|
621
|
+
} | {
|
|
622
|
+
type: 'rating';
|
|
623
|
+
rating?: {
|
|
624
|
+
valueExpr?: string;
|
|
625
|
+
max?: number;
|
|
626
|
+
color?: string;
|
|
627
|
+
outlineColor?: string;
|
|
628
|
+
size?: 'small' | 'medium' | 'large';
|
|
629
|
+
ariaLabel?: string;
|
|
630
|
+
readonly?: boolean;
|
|
631
|
+
};
|
|
632
|
+
} | {
|
|
633
|
+
type: 'html';
|
|
634
|
+
html?: {
|
|
635
|
+
template: string;
|
|
636
|
+
sanitize?: 'strict' | 'basic';
|
|
637
|
+
emptyFallback?: string;
|
|
638
|
+
};
|
|
639
|
+
}>;
|
|
640
|
+
layout?: {
|
|
641
|
+
direction?: 'row' | 'column';
|
|
642
|
+
gap?: number;
|
|
643
|
+
align?: 'start' | 'center' | 'end';
|
|
644
|
+
wrap?: boolean;
|
|
645
|
+
ellipsis?: boolean;
|
|
646
|
+
};
|
|
647
|
+
};
|
|
129
648
|
};
|
|
649
|
+
/** Overrides condicionais do renderer por linha (first‑match wins) */
|
|
650
|
+
conditionalRenderers?: Array<{
|
|
651
|
+
condition: string;
|
|
652
|
+
renderer: Partial<ColumnDefinition['renderer']>;
|
|
653
|
+
description?: string;
|
|
654
|
+
enabled?: boolean;
|
|
655
|
+
}>;
|
|
130
656
|
/**
|
|
131
657
|
* Regras de estilo condicionais por coluna (experimental)
|
|
132
658
|
* Cada regra contém uma expressão/DSL em `condition` e o efeito visual a aplicar.
|
|
@@ -165,6 +691,8 @@ interface ConfigMetadata {
|
|
|
165
691
|
updatedAt?: string;
|
|
166
692
|
/** Autor da configuração */
|
|
167
693
|
author?: string;
|
|
694
|
+
/** Ambiente de execução esperado para política de runtime (ex.: dev, hml, prod) */
|
|
695
|
+
environment?: 'dev' | 'hml' | 'prod' | 'qa' | 'staging' | string;
|
|
168
696
|
/** Se é um template ou configuração específica */
|
|
169
697
|
isTemplate?: boolean;
|
|
170
698
|
/** Configuração derivada de outra (parent ID) */
|
|
@@ -206,6 +734,163 @@ interface TableBehaviorConfig {
|
|
|
206
734
|
resizing?: ResizingConfig;
|
|
207
735
|
/** Configurações de reorganização por drag & drop */
|
|
208
736
|
dragging?: DraggingConfig;
|
|
737
|
+
/** Configurações do modo local via input `[data]` */
|
|
738
|
+
localDataMode?: TableLocalDataModeConfig;
|
|
739
|
+
/** Configurações de linhas expansíveis (detail rows) */
|
|
740
|
+
expansion?: TableExpansionConfig;
|
|
741
|
+
}
|
|
742
|
+
interface TableLocalDataModeConfig {
|
|
743
|
+
/** Habilita a trilha de modo local via input `[data]` */
|
|
744
|
+
enabled?: boolean;
|
|
745
|
+
}
|
|
746
|
+
interface TableExpansionConfig {
|
|
747
|
+
/** Habilita o recurso de expansão de linhas */
|
|
748
|
+
enabled?: boolean;
|
|
749
|
+
/** Versão local do contrato de expansão */
|
|
750
|
+
contractVersion?: '1.0.0' | string;
|
|
751
|
+
/** Identidade e rastreabilidade de linha expandível */
|
|
752
|
+
identity?: {
|
|
753
|
+
rowKeySource?: 'table.idField';
|
|
754
|
+
requireStableIdField?: boolean;
|
|
755
|
+
};
|
|
756
|
+
/** Governança de estado (controlado vs não-controlado) */
|
|
757
|
+
state?: {
|
|
758
|
+
mode?: 'controlled' | 'uncontrolled';
|
|
759
|
+
expandedRowKeys?: string[];
|
|
760
|
+
emitChanges?: boolean;
|
|
761
|
+
sourceOfTruth?: 'input' | 'runtime';
|
|
762
|
+
onSetExpandedKeys?: 'emitOnly' | 'mutateInternal';
|
|
763
|
+
};
|
|
764
|
+
/** Regras de interação para abrir/fechar detalhes */
|
|
765
|
+
interaction?: {
|
|
766
|
+
trigger?: 'icon' | 'row' | 'both';
|
|
767
|
+
toggleOnRowClick?: boolean;
|
|
768
|
+
keyboard?: {
|
|
769
|
+
profile?: 'disclosure' | 'grid';
|
|
770
|
+
enterSpace?: boolean;
|
|
771
|
+
arrowLeftRight?: boolean;
|
|
772
|
+
};
|
|
773
|
+
};
|
|
774
|
+
/** Limites de expansão simultânea */
|
|
775
|
+
limits?: {
|
|
776
|
+
allowMultiple?: boolean;
|
|
777
|
+
maxExpandedRows?: number;
|
|
778
|
+
onOverflow?: 'collapseOldest' | 'denyNew' | 'collapseAll';
|
|
779
|
+
};
|
|
780
|
+
/** Eventos estruturais que colapsam os detalhes */
|
|
781
|
+
collapseOn?: {
|
|
782
|
+
sortChange?: boolean;
|
|
783
|
+
pageChange?: boolean;
|
|
784
|
+
filterChange?: boolean;
|
|
785
|
+
dataRefresh?: boolean;
|
|
786
|
+
};
|
|
787
|
+
/** Condição para permitir expansão por linha */
|
|
788
|
+
rowExpandableWhen?: {
|
|
789
|
+
expr?: string;
|
|
790
|
+
onError?: 'deny' | 'allow';
|
|
791
|
+
context?: Array<'row' | 'computed' | 'user' | 'env'>;
|
|
792
|
+
};
|
|
793
|
+
/** Detalhe schema-driven (fonte + renderização) */
|
|
794
|
+
detail?: {
|
|
795
|
+
schemaContract?: {
|
|
796
|
+
kind?: 'praxis.detail.schema';
|
|
797
|
+
version?: string;
|
|
798
|
+
compat?: 'semver' | 'strict';
|
|
799
|
+
allowedNodes?: Array<'layout' | 'stack' | 'tabs' | 'tab' | 'card' | 'value' | 'action' | 'list' | 'formRef' | 'tableRef' | 'chartRef' | 'richText' | 'templateRef'>;
|
|
800
|
+
sanitization?: 'strict';
|
|
801
|
+
};
|
|
802
|
+
source?: {
|
|
803
|
+
mode?: 'inline' | 'resource' | 'resourcePath';
|
|
804
|
+
inlineSchema?: Record<string, unknown>;
|
|
805
|
+
resource?: {
|
|
806
|
+
kind?: 'ui-composition' | 'form-schema' | 'table-schema' | 'dashboard-schema';
|
|
807
|
+
id?: string;
|
|
808
|
+
version?: string;
|
|
809
|
+
};
|
|
810
|
+
resourcePath?: {
|
|
811
|
+
path?: string;
|
|
812
|
+
paramsMap?: Record<string, string>;
|
|
813
|
+
method?: 'GET' | 'POST';
|
|
814
|
+
};
|
|
815
|
+
contextMap?: Record<string, string>;
|
|
816
|
+
resourceAllowList?: string[];
|
|
817
|
+
fallbackMode?: 'none' | 'inline' | 'resource';
|
|
818
|
+
};
|
|
819
|
+
rendering?: {
|
|
820
|
+
strategy?: 'registry';
|
|
821
|
+
registryId?: string;
|
|
822
|
+
hostLayout?: 'auto' | 'stack' | 'tabs';
|
|
823
|
+
fallbackNodePolicy?: 'failClosed' | 'renderPlaceholder';
|
|
824
|
+
};
|
|
825
|
+
height?: {
|
|
826
|
+
mode?: 'fixed' | 'dynamic';
|
|
827
|
+
px?: number;
|
|
828
|
+
};
|
|
829
|
+
lazyLoad?: {
|
|
830
|
+
enabled?: boolean;
|
|
831
|
+
actionId?: string;
|
|
832
|
+
cache?: {
|
|
833
|
+
enabled?: boolean;
|
|
834
|
+
ttlMs?: number;
|
|
835
|
+
};
|
|
836
|
+
retry?: {
|
|
837
|
+
maxAttempts?: number;
|
|
838
|
+
};
|
|
839
|
+
cancelOnCollapse?: boolean;
|
|
840
|
+
dedupeByRowKey?: boolean;
|
|
841
|
+
};
|
|
842
|
+
};
|
|
843
|
+
/** Política extra para coexistência com virtualização */
|
|
844
|
+
virtualization?: {
|
|
845
|
+
policy?: 'fixed-height-only' | 'allow-dynamic-under-flag';
|
|
846
|
+
};
|
|
847
|
+
/** Persistência de estado expandido */
|
|
848
|
+
persistence?: {
|
|
849
|
+
enabled?: boolean;
|
|
850
|
+
storageKey?: string;
|
|
851
|
+
storageKeyStrategy?: {
|
|
852
|
+
namespace?: string;
|
|
853
|
+
version?: string;
|
|
854
|
+
hashScope?: boolean;
|
|
855
|
+
};
|
|
856
|
+
scope?: Array<'tableId' | 'componentInstance' | 'user' | 'tenant'>;
|
|
857
|
+
clearOn?: Array<'resetPreferences' | 'logout' | 'tenantChange'>;
|
|
858
|
+
};
|
|
859
|
+
/** Segurança de payload/evento */
|
|
860
|
+
security?: {
|
|
861
|
+
eventExposureDefault?: {
|
|
862
|
+
rowId?: 'redacted' | 'hashed' | 'raw';
|
|
863
|
+
expandedKeys?: 'none' | 'hashed' | 'raw';
|
|
864
|
+
};
|
|
865
|
+
allowRawExposure?: boolean;
|
|
866
|
+
};
|
|
867
|
+
/** Deep-link de expansão (P1+) */
|
|
868
|
+
deepLink?: {
|
|
869
|
+
enabled?: boolean;
|
|
870
|
+
queryParam?: string;
|
|
871
|
+
encoding?: 'csv';
|
|
872
|
+
keyFormat?: string;
|
|
873
|
+
maxKeys?: number;
|
|
874
|
+
maxLength?: number;
|
|
875
|
+
parsing?: {
|
|
876
|
+
duplicateParams?: 'firstWins' | 'reject';
|
|
877
|
+
decodePasses?: 1;
|
|
878
|
+
trimWhitespace?: boolean;
|
|
879
|
+
sortKeysBeforeApply?: boolean;
|
|
880
|
+
};
|
|
881
|
+
integrity?: {
|
|
882
|
+
mode?: 'opaqueToken';
|
|
883
|
+
exchange?: {
|
|
884
|
+
endpointId?: string;
|
|
885
|
+
ttlMs?: number;
|
|
886
|
+
errors?: Array<'expired' | 'invalid' | 'rate_limited'>;
|
|
887
|
+
};
|
|
888
|
+
};
|
|
889
|
+
privacy?: {
|
|
890
|
+
mode?: 'denyByDefault' | 'allowByDefault';
|
|
891
|
+
allowListTables?: string[];
|
|
892
|
+
};
|
|
893
|
+
};
|
|
209
894
|
}
|
|
210
895
|
interface PaginationConfig {
|
|
211
896
|
/** Habilitar paginação */
|
|
@@ -289,20 +974,54 @@ interface FilteringConfig {
|
|
|
289
974
|
savePresets?: boolean;
|
|
290
975
|
/** Configurações específicas do componente praxis-filter */
|
|
291
976
|
settings?: {
|
|
292
|
-
/** Campo de busca rápida */
|
|
293
|
-
quickField?: string;
|
|
294
977
|
/** Campos sempre visíveis */
|
|
295
978
|
alwaysVisibleFields?: string[];
|
|
296
|
-
/**
|
|
297
|
-
|
|
979
|
+
/** Overrides de metadata por campo sempre visível (merge sobre o DTO de filtro) */
|
|
980
|
+
alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, any>>;
|
|
981
|
+
/** Campos extras selecionados pelo usuário */
|
|
982
|
+
selectedFieldIds?: string[];
|
|
298
983
|
/** Exibir opções avançadas por padrão */
|
|
299
984
|
showAdvanced?: boolean;
|
|
300
985
|
/** Permitir salvar tags/atalhos de filtro */
|
|
301
986
|
allowSaveTags?: boolean;
|
|
302
987
|
/** Debounce de alterações para auto-aplicar filtros (ms) */
|
|
303
988
|
changeDebounceMs?: number;
|
|
304
|
-
/** Modo de exibição do componente de filtro */
|
|
305
|
-
mode?: '
|
|
989
|
+
/** Modo de exibição do componente de filtro (modo único) */
|
|
990
|
+
mode?: 'filter';
|
|
991
|
+
/** UX: move booleans para ações */
|
|
992
|
+
placeBooleansInActions?: boolean;
|
|
993
|
+
/** UX: mostrar labels dos toggles */
|
|
994
|
+
showToggleLabels?: boolean;
|
|
995
|
+
/** Largura mínima para campos sempre visíveis */
|
|
996
|
+
alwaysMinWidth?: number;
|
|
997
|
+
/** Colunas md para campos sempre visíveis */
|
|
998
|
+
alwaysColsMd?: number;
|
|
999
|
+
/** Colunas lg para campos sempre visíveis */
|
|
1000
|
+
alwaysColsLg?: number;
|
|
1001
|
+
/** Confirma remoção de tags */
|
|
1002
|
+
confirmTagDelete?: boolean;
|
|
1003
|
+
/** Tema das tags */
|
|
1004
|
+
tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
1005
|
+
/** Variante das tags */
|
|
1006
|
+
tagVariant?: 'filled' | 'outlined';
|
|
1007
|
+
/** Cor do botão das tags */
|
|
1008
|
+
tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
1009
|
+
/** Cor dos botões de ação */
|
|
1010
|
+
actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
1011
|
+
/** Variante dos botões de ação */
|
|
1012
|
+
actionsVariant?: 'standard' | 'outlined';
|
|
1013
|
+
/** Aparência do overlay */
|
|
1014
|
+
overlayVariant?: 'card' | 'frosted';
|
|
1015
|
+
/** Backdrop do overlay */
|
|
1016
|
+
overlayBackdrop?: boolean;
|
|
1017
|
+
/** Modo de abertura do painel avançado */
|
|
1018
|
+
advancedOpenMode?: 'overlay' | 'modal' | 'drawer';
|
|
1019
|
+
/** Botão de limpar nos campos do formulário avançado */
|
|
1020
|
+
advancedClearButtonsEnabled?: boolean;
|
|
1021
|
+
/** Nível de log */
|
|
1022
|
+
logLevel?: 'none' | 'error' | 'warn' | 'info' | 'debug';
|
|
1023
|
+
/** Métricas de performance */
|
|
1024
|
+
enablePerformanceMetrics?: boolean;
|
|
306
1025
|
};
|
|
307
1026
|
};
|
|
308
1027
|
/** Estratégia de filtragem */
|
|
@@ -605,6 +1324,10 @@ interface ToolbarConfig {
|
|
|
605
1324
|
visible: boolean;
|
|
606
1325
|
/** Posição da toolbar */
|
|
607
1326
|
position: 'top' | 'bottom' | 'both';
|
|
1327
|
+
/** Posição das ações da toolbar */
|
|
1328
|
+
actionsPosition?: 'top' | 'bottom' | 'both';
|
|
1329
|
+
/** Cor de fundo da barra de ações */
|
|
1330
|
+
actionsBackgroundColor?: string;
|
|
608
1331
|
/** Configurações de layout */
|
|
609
1332
|
layout?: ToolbarLayoutConfig;
|
|
610
1333
|
/** Título da tabela */
|
|
@@ -651,6 +1374,8 @@ interface ToolbarAction {
|
|
|
651
1374
|
tooltip?: string;
|
|
652
1375
|
/** Tecla de atalho */
|
|
653
1376
|
shortcut?: string;
|
|
1377
|
+
/** Escopo do atalho: somente toolbar ativa ou global */
|
|
1378
|
+
shortcutScope?: 'toolbar' | 'global';
|
|
654
1379
|
/** Posição na toolbar */
|
|
655
1380
|
position: 'start' | 'end';
|
|
656
1381
|
/** Ordem de exibição */
|
|
@@ -1441,6 +2166,9 @@ interface GlobalDialogAction {
|
|
|
1441
2166
|
role?: 'primary' | 'secondary' | 'danger' | 'close' | 'custom';
|
|
1442
2167
|
close?: boolean;
|
|
1443
2168
|
icon?: string | null;
|
|
2169
|
+
svgIcon?: string | null;
|
|
2170
|
+
fillMode?: 'solid' | 'flat' | 'outline';
|
|
2171
|
+
themeColor?: 'primary' | 'accent' | 'warn' | 'neutral';
|
|
1444
2172
|
cssClass?: string | string[] | Record<string, boolean>;
|
|
1445
2173
|
}
|
|
1446
2174
|
interface GlobalDialogAnimation {
|
|
@@ -1456,443 +2184,196 @@ interface GlobalDialogStyles {
|
|
|
1456
2184
|
containerMaxWidth?: string;
|
|
1457
2185
|
containerMinWidth?: string;
|
|
1458
2186
|
containerShape?: string;
|
|
2187
|
+
containerBorderColor?: string;
|
|
1459
2188
|
containerSmallMaxWidth?: string;
|
|
1460
2189
|
contentPadding?: string;
|
|
1461
|
-
headlinePadding?: string;
|
|
1462
|
-
withActionsContentPadding?: string;
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
message?: string;
|
|
1481
|
-
icon?: string | null;
|
|
1482
|
-
width?: string | number | null;
|
|
1483
|
-
height?: string | number | null;
|
|
1484
|
-
minWidth?: string | number | null;
|
|
1485
|
-
maxWidth?: string | number | null;
|
|
1486
|
-
minHeight?: string | number | null;
|
|
1487
|
-
maxHeight?: string | number | null;
|
|
1488
|
-
disableClose?: boolean;
|
|
1489
|
-
hasBackdrop?: boolean;
|
|
1490
|
-
closeOnBackdropClick?: boolean;
|
|
1491
|
-
panelClass?: string | string[] | Record<string, boolean>;
|
|
1492
|
-
backdropClass?: string | string[] | Record<string, boolean>;
|
|
1493
|
-
position?: GlobalDialogPosition;
|
|
1494
|
-
animation?: boolean | GlobalDialogAnimation;
|
|
1495
|
-
styles?: GlobalDialogStyles;
|
|
1496
|
-
actions?: GlobalDialogAction[];
|
|
1497
|
-
}
|
|
1498
|
-
interface GlobalDialogConfig {
|
|
1499
|
-
defaults?: {
|
|
1500
|
-
confirm?: GlobalDialogConfigEntry;
|
|
1501
|
-
alert?: GlobalDialogConfigEntry;
|
|
1502
|
-
prompt?: GlobalDialogConfigEntry;
|
|
1503
|
-
};
|
|
1504
|
-
variants?: Record<string, GlobalDialogConfigEntry>;
|
|
1505
|
-
}
|
|
1506
|
-
|
|
1507
|
-
type FormOpenMode = 'route' | 'modal' | 'drawer';
|
|
1508
|
-
interface GlobalCrudActionDefaults {
|
|
1509
|
-
openMode?: FormOpenMode;
|
|
1510
|
-
route?: string;
|
|
1511
|
-
formId?: string;
|
|
1512
|
-
}
|
|
1513
|
-
interface GlobalCrudDefaults {
|
|
1514
|
-
openMode?: FormOpenMode;
|
|
1515
|
-
modal?: Record<string, any>;
|
|
1516
|
-
back?: Record<string, any>;
|
|
1517
|
-
header?: Record<string, any>;
|
|
1518
|
-
}
|
|
1519
|
-
interface GlobalCrudConfig {
|
|
1520
|
-
defaults?: GlobalCrudDefaults;
|
|
1521
|
-
actionDefaults?: Record<string, GlobalCrudActionDefaults>;
|
|
1522
|
-
}
|
|
1523
|
-
interface GlobalDynamicFieldsAsyncSelectConfig {
|
|
1524
|
-
loadOn?: 'open' | 'init' | 'none';
|
|
1525
|
-
pageSize?: number;
|
|
1526
|
-
useCursor?: boolean;
|
|
1527
|
-
}
|
|
1528
|
-
interface GlobalDynamicFieldsCascadeConfig {
|
|
1529
|
-
enable?: boolean;
|
|
1530
|
-
loadOnChange?: 'respectLoadOn' | 'immediate' | 'manual';
|
|
1531
|
-
debounceMs?: number;
|
|
1532
|
-
}
|
|
1533
|
-
interface GlobalDynamicFieldsConfig {
|
|
1534
|
-
asyncSelect?: GlobalDynamicFieldsAsyncSelectConfig;
|
|
1535
|
-
cascade?: GlobalDynamicFieldsCascadeConfig;
|
|
1536
|
-
}
|
|
1537
|
-
type GlobalTableConfig = (Partial<Pick<TableConfig, 'behavior' | 'appearance' | 'toolbar' | 'actions' | 'messages' | 'localization' | 'performance'>> & {
|
|
1538
|
-
/** UI defaults specific to the PraxisFilter (above the table) */
|
|
1539
|
-
filteringUi?: {
|
|
1540
|
-
overlayVariant?: 'card' | 'frosted';
|
|
1541
|
-
overlayBackdrop?: boolean;
|
|
1542
|
-
advancedOpenMode?: 'overlay' | 'modal' | 'drawer';
|
|
1543
|
-
};
|
|
1544
|
-
});
|
|
1545
|
-
interface GlobalConfig {
|
|
1546
|
-
crud?: GlobalCrudConfig;
|
|
1547
|
-
dynamicFields?: GlobalDynamicFieldsConfig;
|
|
1548
|
-
table?: GlobalTableConfig;
|
|
1549
|
-
dialog?: GlobalDialogConfig;
|
|
1550
|
-
}
|
|
1551
|
-
|
|
1552
|
-
declare const GLOBAL_CONFIG: InjectionToken<Partial<GlobalConfig>>;
|
|
1553
|
-
declare function provideGlobalConfig(partial: Partial<GlobalConfig>): Provider;
|
|
1554
|
-
|
|
1555
|
-
/** Set the current tenant for GlobalConfigService at app boot. */
|
|
1556
|
-
declare function provideGlobalConfigTenant(tenantId: string): Provider;
|
|
1557
|
-
/** Seed global config once when no storage exists yet (idempotent). */
|
|
1558
|
-
declare function provideGlobalConfigSeed(seed: Partial<GlobalConfig>): Provider;
|
|
1559
|
-
/** Fetch remote JSON and merge as global config at boot. */
|
|
1560
|
-
declare function provideRemoteGlobalConfig(url: string): Provider;
|
|
1561
|
-
|
|
1562
|
-
interface SettingsPanelRef<T = any> {
|
|
1563
|
-
applied$: Observable<T>;
|
|
1564
|
-
saved$: Observable<T>;
|
|
1565
|
-
}
|
|
1566
|
-
interface SettingsPanelOpenContent<TInputs = any> {
|
|
1567
|
-
component: Type<any>;
|
|
1568
|
-
inputs?: TInputs;
|
|
1569
|
-
}
|
|
1570
|
-
interface SettingsPanelOpenOptions<TInputs = any> {
|
|
1571
|
-
id: string;
|
|
1572
|
-
title: string;
|
|
1573
|
-
content: SettingsPanelOpenContent<TInputs>;
|
|
1574
|
-
}
|
|
1575
|
-
interface SettingsPanelBridge {
|
|
1576
|
-
open<TInputs = any, TOut = any>(opts: SettingsPanelOpenOptions<TInputs>): SettingsPanelRef<TOut>;
|
|
1577
|
-
}
|
|
1578
|
-
declare const SETTINGS_PANEL_BRIDGE: InjectionToken<SettingsPanelBridge>;
|
|
1579
|
-
declare const SETTINGS_PANEL_DATA: InjectionToken<any>;
|
|
1580
|
-
interface SettingsValueProvider {
|
|
1581
|
-
isDirty$: Observable<boolean>;
|
|
1582
|
-
isValid$: Observable<boolean>;
|
|
1583
|
-
isBusy$: Observable<boolean>;
|
|
1584
|
-
getSettingsValue(): any;
|
|
1585
|
-
onSave?(): any;
|
|
1586
|
-
reset?(): void;
|
|
1587
|
-
}
|
|
1588
|
-
|
|
1589
|
-
declare const TABLE_CONFIG_EDITOR: InjectionToken<Type<any>>;
|
|
1590
|
-
declare const STEPPER_CONFIG_EDITOR: InjectionToken<Type<any>>;
|
|
1591
|
-
|
|
1592
|
-
interface HateoasLink {
|
|
1593
|
-
href: string;
|
|
1594
|
-
templated?: boolean;
|
|
1595
|
-
type?: string;
|
|
1596
|
-
deprecation?: string;
|
|
1597
|
-
profile?: string;
|
|
1598
|
-
name?: string;
|
|
1599
|
-
title?: string;
|
|
1600
|
-
hreflang?: string;
|
|
1601
|
-
[prop: string]: any;
|
|
1602
|
-
}
|
|
1603
|
-
interface RestApiLinks {
|
|
1604
|
-
[rel: string]: HateoasLink | HateoasLink[];
|
|
1605
|
-
}
|
|
1606
|
-
interface RestApiResponse<T> {
|
|
1607
|
-
status?: string;
|
|
1608
|
-
message?: string;
|
|
1609
|
-
data: T;
|
|
1610
|
-
_links?: RestApiLinks;
|
|
1611
|
-
errors?: any;
|
|
1612
|
-
timestamp?: string;
|
|
1613
|
-
}
|
|
1614
|
-
|
|
1615
|
-
interface Page<T> {
|
|
1616
|
-
content: T[];
|
|
1617
|
-
totalElements: number;
|
|
1618
|
-
totalPages: number;
|
|
1619
|
-
size: number;
|
|
1620
|
-
number: number;
|
|
1621
|
-
}
|
|
1622
|
-
interface CursorPage<T> {
|
|
1623
|
-
content: T[];
|
|
1624
|
-
next?: string | null;
|
|
1625
|
-
prev?: string | null;
|
|
1626
|
-
size: number;
|
|
1627
|
-
}
|
|
1628
|
-
|
|
1629
|
-
interface OptionDTO<ID = string | number> {
|
|
1630
|
-
id: ID;
|
|
1631
|
-
label: string;
|
|
1632
|
-
extra?: Record<string, unknown>;
|
|
1633
|
-
}
|
|
1634
|
-
|
|
1635
|
-
interface PageableRequest {
|
|
1636
|
-
pageNumber: number;
|
|
1637
|
-
pageSize: number;
|
|
1638
|
-
sort?: string[];
|
|
1639
|
-
}
|
|
1640
|
-
interface FilterOptions<ID = string | number> {
|
|
1641
|
-
includeIds?: ID[];
|
|
1642
|
-
observeVersionHeader?: boolean;
|
|
1643
|
-
}
|
|
1644
|
-
interface CursorRequest {
|
|
1645
|
-
size?: number;
|
|
1646
|
-
sort?: string[];
|
|
1647
|
-
after?: string | null;
|
|
1648
|
-
before?: string | null;
|
|
1649
|
-
}
|
|
1650
|
-
interface LocateRequest {
|
|
1651
|
-
size: number;
|
|
1652
|
-
sort?: string[];
|
|
1653
|
-
}
|
|
1654
|
-
|
|
1655
|
-
/**
|
|
1656
|
-
* Contrato de saída do normalizador de esquema (SchemaNormalizerService):
|
|
1657
|
-
* - Converte metadados `x-ui` em FieldDefinition tipado.
|
|
1658
|
-
* - Todas as funções expostas são funções reais (nunca strings):
|
|
1659
|
-
* - conditionalDisplay: () => boolean
|
|
1660
|
-
* - conditionalRequired: () => boolean
|
|
1661
|
-
* - transformValueFunction: (val: any) => any
|
|
1662
|
-
* - Suporte completo a ValidatorOptions (sincronos e assíncronos),
|
|
1663
|
-
* incluindo mensagens e comportamento de validação (gatilhos, debounce, exibição de erros).
|
|
1664
|
-
*/
|
|
1665
|
-
interface FieldDefinition {
|
|
1666
|
-
name: string;
|
|
1667
|
-
label?: string;
|
|
1668
|
-
description?: string;
|
|
1669
|
-
type?: string;
|
|
1670
|
-
controlType?: string;
|
|
1671
|
-
placeholder?: string;
|
|
1672
|
-
defaultValue?: any;
|
|
1673
|
-
group?: string;
|
|
1674
|
-
order?: number;
|
|
1675
|
-
width?: number | string;
|
|
1676
|
-
isFlex?: boolean;
|
|
1677
|
-
displayOrientation?: string;
|
|
1678
|
-
disabled?: boolean;
|
|
1679
|
-
readOnly?: boolean;
|
|
1680
|
-
multiple?: boolean;
|
|
1681
|
-
editable?: boolean;
|
|
1682
|
-
validationMode?: string;
|
|
1683
|
-
unique?: boolean;
|
|
1684
|
-
mask?: string;
|
|
1685
|
-
sortable?: boolean;
|
|
1686
|
-
/** Função que define obrigatoriedade condicional. */
|
|
1687
|
-
conditionalRequired?: () => boolean;
|
|
1688
|
-
viewOnlyStyle?: string;
|
|
1689
|
-
/** Lista de gatilhos de validação, ex.: ["blur", "change"]. */
|
|
1690
|
-
validationTriggers?: string[];
|
|
1691
|
-
hidden?: boolean;
|
|
1692
|
-
tableHidden?: boolean;
|
|
1693
|
-
formHidden?: boolean;
|
|
1694
|
-
filterable?: boolean;
|
|
1695
|
-
/** Função que controla se o campo é exibido. */
|
|
1696
|
-
conditionalDisplay?: () => boolean;
|
|
1697
|
-
dependentField?: string;
|
|
1698
|
-
resetOnDependentChange?: boolean;
|
|
1699
|
-
inlineEditing?: boolean;
|
|
1700
|
-
/** Função de transformação de valor antes de salvar/exibir. */
|
|
1701
|
-
transformValueFunction?: (val: any) => any;
|
|
1702
|
-
debounceTime?: number;
|
|
1703
|
-
helpText?: string;
|
|
1704
|
-
hint?: string;
|
|
1705
|
-
hiddenCondition?: any;
|
|
1706
|
-
tooltipOnHover?: boolean;
|
|
1707
|
-
icon?: string;
|
|
1708
|
-
iconPosition?: string;
|
|
1709
|
-
iconSize?: string | number;
|
|
1710
|
-
iconColor?: string;
|
|
1711
|
-
iconClass?: string;
|
|
1712
|
-
iconStyle?: string;
|
|
1713
|
-
iconFontSize?: string | number;
|
|
1714
|
-
valueField?: string;
|
|
1715
|
-
displayField?: string;
|
|
1716
|
-
endpoint?: string;
|
|
1717
|
-
resourcePath?: string;
|
|
1718
|
-
emptyOptionText?: string;
|
|
1719
|
-
options?: {
|
|
1720
|
-
key: string;
|
|
1721
|
-
value: string;
|
|
1722
|
-
}[];
|
|
1723
|
-
filter?: any;
|
|
1724
|
-
filterCriteria?: any;
|
|
1725
|
-
searchable?: boolean;
|
|
1726
|
-
selectAll?: boolean;
|
|
1727
|
-
maxSelections?: number;
|
|
1728
|
-
optionLabelKey?: string;
|
|
1729
|
-
optionValueKey?: string;
|
|
1730
|
-
filterOptions?: any[];
|
|
1731
|
-
filterControlType?: string;
|
|
1732
|
-
numericFormat?: string;
|
|
1733
|
-
numericStep?: number;
|
|
1734
|
-
numericMin?: number;
|
|
1735
|
-
numericMax?: number;
|
|
1736
|
-
numericMaxLength?: number;
|
|
1737
|
-
optionGroups?: {
|
|
1738
|
-
key: string;
|
|
1739
|
-
value: string;
|
|
1740
|
-
}[];
|
|
1741
|
-
disabledOptions?: string[];
|
|
1742
|
-
buttons?: any[];
|
|
1743
|
-
/** Obrigatório. */
|
|
1744
|
-
required?: boolean;
|
|
1745
|
-
requiredMessage?: string;
|
|
1746
|
-
/** Tamanho mínimo/máximo (strings). */
|
|
1747
|
-
minLength?: number;
|
|
1748
|
-
minLengthMessage?: string;
|
|
1749
|
-
maxLength?: number;
|
|
1750
|
-
maxLengthMessage?: string;
|
|
1751
|
-
/** Limites numéricos. */
|
|
1752
|
-
min?: number;
|
|
1753
|
-
max?: number;
|
|
1754
|
-
/** Mensagens dedicadas para min/max numéricos. */
|
|
1755
|
-
minMessage?: string;
|
|
1756
|
-
maxMessage?: string;
|
|
1757
|
-
/** Mensagem quando ambos limites (range) são aplicados. */
|
|
1758
|
-
rangeMessage?: string;
|
|
1759
|
-
/** Padrão (regex). Aceita pattern/regex. */
|
|
1760
|
-
pattern?: string;
|
|
1761
|
-
patternMessage?: string;
|
|
1762
|
-
/** Validação de e-mail. */
|
|
1763
|
-
email?: boolean;
|
|
1764
|
-
emailMessage?: string;
|
|
1765
|
-
/** Validação de URL. */
|
|
1766
|
-
url?: boolean;
|
|
1767
|
-
urlMessage?: string;
|
|
1768
|
-
/** Requer que valor combine com outro campo. */
|
|
1769
|
-
matchField?: string;
|
|
1770
|
-
matchFieldMessage?: string;
|
|
1771
|
-
/** Requer que o checkbox esteja marcado. */
|
|
1772
|
-
requiredChecked?: boolean;
|
|
1773
|
-
/** Tipos de arquivo permitidos e tamanho máximo. */
|
|
1774
|
-
allowedFileTypes?: string[];
|
|
1775
|
-
fileTypeMessage?: string;
|
|
1776
|
-
maxFileSize?: number;
|
|
1777
|
-
/** Validador customizado síncrono. */
|
|
1778
|
-
customValidator?: (value: any, model?: any) => any;
|
|
1779
|
-
/** Validador customizado assíncrono. */
|
|
1780
|
-
asyncValidator?: (value: any, model?: any) => Promise<any>;
|
|
1781
|
-
/** Validador de unicidade (ex.: consulta ao backend). */
|
|
1782
|
-
uniqueValidator?: (value: any, model?: any) => boolean | Promise<boolean>;
|
|
1783
|
-
uniqueMessage?: string;
|
|
1784
|
-
/** Validação condicional baseada em outro(s) campos/estado. */
|
|
1785
|
-
conditionalValidation?: (value: any, model?: any) => boolean | string | Promise<boolean | string>;
|
|
1786
|
-
/** Mínimo de palavras (para textos longos). */
|
|
1787
|
-
minWords?: number;
|
|
1788
|
-
/** Gatilho(s) de validação (alias de validationTriggers). */
|
|
1789
|
-
/** Tempo de debounce (ms) para executar validação. */
|
|
1790
|
-
validationDebounce?: number;
|
|
1791
|
-
/** Exibir erros inline no campo. */
|
|
1792
|
-
showInlineErrors?: boolean;
|
|
1793
|
-
/** Posição preferida da mensagem de erro (ex.: below, right). */
|
|
1794
|
-
errorPosition?: string;
|
|
1795
|
-
[key: string]: any;
|
|
2190
|
+
headlinePadding?: string;
|
|
2191
|
+
withActionsContentPadding?: string;
|
|
2192
|
+
backdropColor?: string;
|
|
2193
|
+
actionButtonRadius?: string;
|
|
2194
|
+
actionButtonMinHeight?: string;
|
|
2195
|
+
actionButtonPadding?: string;
|
|
2196
|
+
containerColor?: string;
|
|
2197
|
+
subheadColor?: string;
|
|
2198
|
+
supportingTextColor?: string;
|
|
2199
|
+
subheadFont?: string;
|
|
2200
|
+
subheadLineHeight?: string;
|
|
2201
|
+
subheadSize?: string;
|
|
2202
|
+
subheadTracking?: string;
|
|
2203
|
+
subheadWeight?: string | number;
|
|
2204
|
+
supportingTextFont?: string;
|
|
2205
|
+
supportingTextLineHeight?: string;
|
|
2206
|
+
supportingTextSize?: string;
|
|
2207
|
+
supportingTextTracking?: string;
|
|
2208
|
+
supportingTextWeight?: string | number;
|
|
1796
2209
|
}
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
2210
|
+
interface GlobalDialogConfigEntry {
|
|
2211
|
+
title?: string;
|
|
2212
|
+
themeColor?: 'primary' | 'light' | 'dark';
|
|
2213
|
+
ariaRole?: GlobalDialogAriaRole;
|
|
2214
|
+
message?: string;
|
|
2215
|
+
icon?: string | null;
|
|
2216
|
+
width?: string | number | null;
|
|
2217
|
+
height?: string | number | null;
|
|
2218
|
+
minWidth?: string | number | null;
|
|
2219
|
+
maxWidth?: string | number | null;
|
|
2220
|
+
minHeight?: string | number | null;
|
|
2221
|
+
maxHeight?: string | number | null;
|
|
2222
|
+
disableClose?: boolean;
|
|
2223
|
+
hasBackdrop?: boolean;
|
|
2224
|
+
closeOnBackdropClick?: boolean;
|
|
2225
|
+
panelClass?: string | string[] | Record<string, boolean>;
|
|
2226
|
+
backdropClass?: string | string[] | Record<string, boolean>;
|
|
2227
|
+
position?: GlobalDialogPosition;
|
|
2228
|
+
animation?: boolean | GlobalDialogAnimation;
|
|
2229
|
+
styles?: GlobalDialogStyles;
|
|
2230
|
+
actions?: GlobalDialogAction[];
|
|
2231
|
+
}
|
|
2232
|
+
interface GlobalDialogConfig {
|
|
2233
|
+
defaults?: {
|
|
2234
|
+
confirm?: GlobalDialogConfigEntry;
|
|
2235
|
+
alert?: GlobalDialogConfigEntry;
|
|
2236
|
+
prompt?: GlobalDialogConfigEntry;
|
|
2237
|
+
};
|
|
2238
|
+
variants?: Record<string, GlobalDialogConfigEntry>;
|
|
1802
2239
|
}
|
|
1803
2240
|
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
*
|
|
1816
|
-
* Saída (FieldDefinition[])
|
|
1817
|
-
* - Tipagem forte de campos com funções reais (nunca strings) para regras condicionais e validadores customizados.
|
|
1818
|
-
* - Todas as propriedades de validação e comportamento consolidadas no mesmo objeto do campo.
|
|
1819
|
-
*
|
|
1820
|
-
* Segurança e observações
|
|
1821
|
-
* - Este serviço aceita funções em formato string dentro do x-ui (ex.: uniqueValidator, conditionalValidation),
|
|
1822
|
-
* e as converte via new Function. Isso exige backend confiável e controlado.
|
|
1823
|
-
* Em ambientes não confiáveis, evite funções como string ou implemente um sandbox/whitelist.
|
|
1824
|
-
* - Valores booleanos/numéricos são normalizados para tipos nativos.
|
|
1825
|
-
* - Arrays de opções são convertidos para pares { key, value } previsíveis.
|
|
1826
|
-
*
|
|
1827
|
-
* Exemplo mínimo de entrada
|
|
1828
|
-
* const schema = {
|
|
1829
|
-
* properties: {
|
|
1830
|
-
* email: {
|
|
1831
|
-
* type: 'string',
|
|
1832
|
-
* title: 'E-mail',
|
|
1833
|
-
* 'x-ui': { controlType: 'input', type: 'string', required: true, email: true }
|
|
1834
|
-
* }
|
|
1835
|
-
* }
|
|
1836
|
-
* };
|
|
1837
|
-
* const fields = normalizer.normalizeSchema(schema);
|
|
1838
|
-
* // fields: [{ name: 'email', label: 'E-mail', type: 'string', controlType: 'input', required: true, email: true }]
|
|
1839
|
-
*/
|
|
1840
|
-
declare class SchemaNormalizerService {
|
|
1841
|
-
/** Convert value to boolean. Accepts boolean, string or number. */
|
|
1842
|
-
private parseBoolean;
|
|
1843
|
-
/** Ensure an array of strings from various inputs. */
|
|
1844
|
-
private parseStringArray;
|
|
1845
|
-
/** Parse option arrays into `{ key, value }` objects. */
|
|
1846
|
-
private parseOptions;
|
|
1847
|
-
/**
|
|
1848
|
-
* Converte string/Function em função real.
|
|
1849
|
-
* Atenção: usa `new Function` para avaliar strings – requer backend confiável.
|
|
1850
|
-
*/
|
|
1851
|
-
private parseFunction;
|
|
1852
|
-
/** Parse a predicate function: () => boolean */
|
|
1853
|
-
private parsePredicateFunction;
|
|
1854
|
-
/** Parse a transform function: (val: any) => any */
|
|
1855
|
-
private parseTransformFunction;
|
|
2241
|
+
type FormOpenMode = 'route' | 'modal' | 'drawer';
|
|
2242
|
+
interface GlobalCrudActionDefaults {
|
|
2243
|
+
openMode?: FormOpenMode;
|
|
2244
|
+
route?: string;
|
|
2245
|
+
formId?: string;
|
|
2246
|
+
}
|
|
2247
|
+
interface GlobalCrudDefaults {
|
|
2248
|
+
openMode?: FormOpenMode;
|
|
2249
|
+
modal?: Record<string, any>;
|
|
2250
|
+
back?: Record<string, any>;
|
|
2251
|
+
header?: Record<string, any>;
|
|
1856
2252
|
/**
|
|
1857
|
-
*
|
|
2253
|
+
* Quando usado via <praxis-crud>, habilita automaticamente a coluna de ações por linha
|
|
2254
|
+
* com base nas ações declaradas (ex.: view/edit). Desligue para controlar manualmente.
|
|
2255
|
+
* Default: true
|
|
1858
2256
|
*/
|
|
1859
|
-
|
|
2257
|
+
autoRowActions?: boolean;
|
|
1860
2258
|
/**
|
|
1861
|
-
*
|
|
1862
|
-
*
|
|
1863
|
-
* matchField, uniqueValidator (+message), conditionalValidation, requiredChecked,
|
|
1864
|
-
* arquivos (allowedFileTypes, fileTypeMessage, maxFileSize), custom/async validators,
|
|
1865
|
-
* minWords e comportamento (validationTrigger(s), validationDebounce, showInlineErrors, errorPosition).
|
|
2259
|
+
* Formato padrão para exibição das ações de linha geradas automaticamente.
|
|
2260
|
+
* Default: 'icons'
|
|
1866
2261
|
*/
|
|
1867
|
-
|
|
1868
|
-
/** Parse array of button definitions. */
|
|
1869
|
-
private parseButtons;
|
|
2262
|
+
rowActionsDisplay?: 'icons' | 'buttons' | 'menu';
|
|
1870
2263
|
/**
|
|
1871
|
-
*
|
|
1872
|
-
*
|
|
1873
|
-
* - Ignora propriedades sem x-ui.
|
|
1874
|
-
* - Garante ordenação por 'order' quando presente.
|
|
1875
|
-
* - Funções condicionais/transformações sempre viram funções reais.
|
|
1876
|
-
*
|
|
1877
|
-
* @param schema Objeto OpenAPI/JSON Schema com properties e x-ui por propriedade.
|
|
1878
|
-
* @returns FieldDefinition[] prontos para mapeamento/uso no restante do sistema.
|
|
2264
|
+
* Inclui ação de delete na coluna de ações quando houver ação 'delete' declarada.
|
|
2265
|
+
* Por padrão permanece desabilitado para evitar comportamentos não intencionais.
|
|
1879
2266
|
*/
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
2267
|
+
includeDeleteInRow?: boolean;
|
|
2268
|
+
}
|
|
2269
|
+
interface GlobalCrudConfig {
|
|
2270
|
+
defaults?: GlobalCrudDefaults;
|
|
2271
|
+
actionDefaults?: Record<string, GlobalCrudActionDefaults>;
|
|
2272
|
+
}
|
|
2273
|
+
interface GlobalDynamicFieldsAsyncSelectConfig {
|
|
2274
|
+
loadOn?: 'open' | 'init' | 'none';
|
|
2275
|
+
pageSize?: number;
|
|
2276
|
+
useCursor?: boolean;
|
|
2277
|
+
}
|
|
2278
|
+
interface GlobalDynamicFieldsCascadeConfig {
|
|
2279
|
+
enable?: boolean;
|
|
2280
|
+
loadOnChange?: 'respectLoadOn' | 'immediate' | 'manual';
|
|
2281
|
+
debounceMs?: number;
|
|
2282
|
+
}
|
|
2283
|
+
interface GlobalDynamicFieldsConfig {
|
|
2284
|
+
asyncSelect?: GlobalDynamicFieldsAsyncSelectConfig;
|
|
2285
|
+
cascade?: GlobalDynamicFieldsCascadeConfig;
|
|
2286
|
+
}
|
|
2287
|
+
type GlobalTableConfig = (Partial<Pick<TableConfig, 'behavior' | 'appearance' | 'toolbar' | 'actions' | 'messages' | 'localization' | 'performance'>> & {
|
|
2288
|
+
/** UI defaults specific to the PraxisFilter (above the table) */
|
|
2289
|
+
filteringUi?: {
|
|
2290
|
+
overlayVariant?: 'card' | 'frosted';
|
|
2291
|
+
overlayBackdrop?: boolean;
|
|
2292
|
+
advancedOpenMode?: 'overlay' | 'modal' | 'drawer';
|
|
2293
|
+
};
|
|
2294
|
+
});
|
|
2295
|
+
type GlobalAiProvider = 'gemini' | 'openai' | 'xai' | 'mock';
|
|
2296
|
+
interface GlobalAiEmbeddingConfig {
|
|
2297
|
+
useSameAsLlm?: boolean;
|
|
2298
|
+
provider?: GlobalAiProvider;
|
|
2299
|
+
apiKey?: string;
|
|
2300
|
+
apiKeyLast4?: string;
|
|
2301
|
+
hasApiKey?: boolean;
|
|
2302
|
+
model?: string;
|
|
2303
|
+
dimensions?: number;
|
|
2304
|
+
}
|
|
2305
|
+
interface GlobalAiConfig {
|
|
2306
|
+
provider?: GlobalAiProvider;
|
|
2307
|
+
/** Policy for UI confirmation on risky AI patches. */
|
|
2308
|
+
riskPolicy?: 'strict' | 'standard';
|
|
2309
|
+
apiKey?: string;
|
|
2310
|
+
apiKeyLast4?: string;
|
|
2311
|
+
hasApiKey?: boolean;
|
|
2312
|
+
model?: string;
|
|
2313
|
+
temperature?: number;
|
|
2314
|
+
maxTokens?: number;
|
|
2315
|
+
embedding?: GlobalAiEmbeddingConfig;
|
|
2316
|
+
}
|
|
2317
|
+
interface GlobalCacheConfig {
|
|
2318
|
+
/**
|
|
2319
|
+
* Se verdadeiro, desabilita o cache persistente (LocalStorage) para schemas de metadados.
|
|
2320
|
+
* Isso força o download do schema a cada recarga da aplicação, útil quando se deseja
|
|
2321
|
+
* priorizar a configuração vinda do servidor ou durante desenvolvimento intenso de API.
|
|
2322
|
+
* Default: false
|
|
2323
|
+
*/
|
|
2324
|
+
disableSchemaCache?: boolean;
|
|
2325
|
+
}
|
|
2326
|
+
interface GlobalConfig {
|
|
2327
|
+
crud?: GlobalCrudConfig;
|
|
2328
|
+
dynamicFields?: GlobalDynamicFieldsConfig;
|
|
2329
|
+
table?: GlobalTableConfig;
|
|
2330
|
+
dialog?: GlobalDialogConfig;
|
|
2331
|
+
/** Dynamic routes registered at runtime (host-resolved). */
|
|
2332
|
+
routes?: {
|
|
2333
|
+
dynamic?: Array<{
|
|
2334
|
+
path: string;
|
|
2335
|
+
componentId?: string;
|
|
2336
|
+
loadChildren?: any;
|
|
2337
|
+
data?: Record<string, any>;
|
|
2338
|
+
resolve?: Record<string, any>;
|
|
2339
|
+
guards?: string[];
|
|
2340
|
+
canMatch?: string[];
|
|
2341
|
+
canActivateChild?: string[];
|
|
2342
|
+
replace?: boolean;
|
|
2343
|
+
position?: 'append' | 'prepend' | 'before-wildcard';
|
|
2344
|
+
}>;
|
|
2345
|
+
};
|
|
2346
|
+
ai?: GlobalAiConfig;
|
|
2347
|
+
cache?: GlobalCacheConfig;
|
|
1883
2348
|
}
|
|
1884
2349
|
|
|
1885
2350
|
declare class GlobalConfigService {
|
|
1886
2351
|
private readonly storage;
|
|
2352
|
+
private readonly bootstrapReady;
|
|
2353
|
+
private readonly tenantResolver;
|
|
2354
|
+
private readonly bootstrapOptions;
|
|
1887
2355
|
private tenant;
|
|
2356
|
+
private configCache;
|
|
2357
|
+
private configCacheKey;
|
|
2358
|
+
private configLoadPromise;
|
|
2359
|
+
private configLoadKey;
|
|
2360
|
+
private storageSnapshot;
|
|
2361
|
+
private storageSnapshotKey;
|
|
1888
2362
|
private readonly providerPartials;
|
|
1889
2363
|
private readonly changes$;
|
|
1890
2364
|
/** Emits when the global configuration changes (e.g., saved to storage). */
|
|
1891
2365
|
readonly configChanges$: rxjs.Observable<GlobalConfig | null>;
|
|
2366
|
+
constructor();
|
|
1892
2367
|
/** Returns merged global configuration using precedence: defaults < providers < storage */
|
|
1893
2368
|
private buildConfig;
|
|
2369
|
+
/** Blocks until the current global configuration (for the active tenant) is loaded. */
|
|
2370
|
+
ready(): Promise<GlobalConfig | null>;
|
|
2371
|
+
/** Ensure config cache is populated (fire-and-forget); resolves with last merged config. */
|
|
2372
|
+
ensureConfigLoaded(opts?: {
|
|
2373
|
+
silent?: boolean;
|
|
2374
|
+
}): Promise<GlobalConfig | null>;
|
|
1894
2375
|
/** Persist and broadcast a new global configuration, merged on top of providers. */
|
|
1895
|
-
saveGlobalConfig(partial: Partial<GlobalConfig>): void
|
|
2376
|
+
saveGlobalConfig(partial: Partial<GlobalConfig>): Promise<void>;
|
|
1896
2377
|
/**
|
|
1897
2378
|
* Retrieve value at a dot-path (e.g., 'crud.defaults.openMode').
|
|
1898
2379
|
* When no path is provided, returns the entire merged configuration.
|
|
@@ -1906,8 +2387,13 @@ declare class GlobalConfigService {
|
|
|
1906
2387
|
setTenant(tenantId?: string): void;
|
|
1907
2388
|
/** Get current tenant id (if any). */
|
|
1908
2389
|
getTenant(): string | undefined;
|
|
2390
|
+
clearGlobalConfig(): Promise<void>;
|
|
2391
|
+
hasStoredConfig(): boolean;
|
|
1909
2392
|
/** Compute the storage key considering current tenant */
|
|
1910
2393
|
private storageKey;
|
|
2394
|
+
private shouldFail;
|
|
2395
|
+
private waitForBootstrap;
|
|
2396
|
+
private updateStorageSnapshot;
|
|
1911
2397
|
/**
|
|
1912
2398
|
* Read global schema verification preferences.
|
|
1913
2399
|
* Returns undefined when not set to allow callers to fallback to library defaults.
|
|
@@ -1969,6 +2455,7 @@ interface CrudOperationOptions {
|
|
|
1969
2455
|
parentPath?: string;
|
|
1970
2456
|
/** Chave do endpoint configurado via ApiUrlConfig */
|
|
1971
2457
|
endpointKey?: ApiEndpoint;
|
|
2458
|
+
httpContext?: HttpContext;
|
|
1972
2459
|
}
|
|
1973
2460
|
interface BatchDeleteProgress<ID = string | number> {
|
|
1974
2461
|
id: ID;
|
|
@@ -2018,7 +2505,10 @@ declare class GenericCrudService<T, ID extends string | number = string | number
|
|
|
2018
2505
|
private _schemaUrl;
|
|
2019
2506
|
private configured;
|
|
2020
2507
|
private _filterSchemaCache;
|
|
2021
|
-
private
|
|
2508
|
+
private _rangeFilterFieldHints;
|
|
2509
|
+
private _filterSchemaLoaded;
|
|
2510
|
+
private _schemaCache?;
|
|
2511
|
+
private schemaCacheReady?;
|
|
2022
2512
|
private _lastResourceMeta;
|
|
2023
2513
|
private _lastSchemaInfo;
|
|
2024
2514
|
/**
|
|
@@ -2029,6 +2519,7 @@ declare class GenericCrudService<T, ID extends string | number = string | number
|
|
|
2029
2519
|
* @param apiUrlInjected URL base da API (via token de injeção).
|
|
2030
2520
|
*/
|
|
2031
2521
|
constructor(http: HttpClient, schemaNormalizer: SchemaNormalizerService, globalConfig: GlobalConfigService, apiUrlInjected: ApiUrlConfig);
|
|
2522
|
+
private ensureSchemaCacheReady;
|
|
2032
2523
|
private get errorMessages();
|
|
2033
2524
|
configure(resourcePath: string, endpointKey?: ApiEndpoint): void;
|
|
2034
2525
|
/**
|
|
@@ -2118,6 +2609,8 @@ declare class GenericCrudService<T, ID extends string | number = string | number
|
|
|
2118
2609
|
operation?: string;
|
|
2119
2610
|
includeInternalSchemas?: boolean;
|
|
2120
2611
|
schemaType?: string;
|
|
2612
|
+
endpointKey?: ApiEndpoint;
|
|
2613
|
+
httpContext?: HttpContext;
|
|
2121
2614
|
}): Observable<FieldDefinition[]>;
|
|
2122
2615
|
/**
|
|
2123
2616
|
* Retorna todos os registros do recurso.
|
|
@@ -2322,6 +2815,31 @@ declare class GenericCrudService<T, ID extends string | number = string | number
|
|
|
2322
2815
|
* Resolve `/schemas/filtered` base URL honoring ApiUrlConfig (supports APIs on another origin).
|
|
2323
2816
|
*/
|
|
2324
2817
|
getSchemasFilteredBaseUrl(endpointKey?: ApiEndpoint): string;
|
|
2818
|
+
private normalizeRangeCriteria;
|
|
2819
|
+
private normalizeRangeNode;
|
|
2820
|
+
private tryCollapseRangeObject;
|
|
2821
|
+
private coerceBoundsArray;
|
|
2822
|
+
private buildCanonicalBounds;
|
|
2823
|
+
private shouldSwapBounds;
|
|
2824
|
+
private tryParseNumeric;
|
|
2825
|
+
private tryParseDateMillis;
|
|
2826
|
+
private isRangeOnlyObject;
|
|
2827
|
+
private resolveRangeAliases;
|
|
2828
|
+
private findExistingKey;
|
|
2829
|
+
private normalizeRangeBound;
|
|
2830
|
+
private isRangeValue;
|
|
2831
|
+
private isPlainObject;
|
|
2832
|
+
private updateRangeFieldHints;
|
|
2833
|
+
private hasRangeFieldMetadata;
|
|
2834
|
+
private normalizeControlTypeToken;
|
|
2835
|
+
private isRangeControlType;
|
|
2836
|
+
private looksLikeRangeFieldName;
|
|
2837
|
+
private lowerDateAliases;
|
|
2838
|
+
private upperDateAliases;
|
|
2839
|
+
private lowerMoneyAliases;
|
|
2840
|
+
private upperMoneyAliases;
|
|
2841
|
+
private lowerGenericAliases;
|
|
2842
|
+
private upperGenericAliases;
|
|
2325
2843
|
/**
|
|
2326
2844
|
* Manipula erros de requisição HTTP.
|
|
2327
2845
|
*/
|
|
@@ -2491,36 +3009,307 @@ interface ConfigStorage {
|
|
|
2491
3009
|
saveConfig<T>(key: string, config: T): void;
|
|
2492
3010
|
clearConfig(key: string): void;
|
|
2493
3011
|
}
|
|
3012
|
+
/**
|
|
3013
|
+
* Async contract for config storage (HTTP-friendly).
|
|
3014
|
+
*/
|
|
3015
|
+
interface AsyncConfigStorage {
|
|
3016
|
+
/**
|
|
3017
|
+
* Reads config for a key.
|
|
3018
|
+
*
|
|
3019
|
+
* Success contract:
|
|
3020
|
+
* - emit one `next` value (can be `null`) and complete.
|
|
3021
|
+
* Failure contract:
|
|
3022
|
+
* - emit `error`.
|
|
3023
|
+
*/
|
|
3024
|
+
loadConfig<T>(key: string): Observable<T | null>;
|
|
3025
|
+
/**
|
|
3026
|
+
* Persists config for a key.
|
|
3027
|
+
*
|
|
3028
|
+
* Success contract (strong ack):
|
|
3029
|
+
* - emit at least one `next` (typically `void 0`) and then complete.
|
|
3030
|
+
* Not-acknowledged contract (soft-fail path):
|
|
3031
|
+
* - complete without any `next`.
|
|
3032
|
+
* Hard-failure contract:
|
|
3033
|
+
* - emit `error`.
|
|
3034
|
+
*
|
|
3035
|
+
* Important:
|
|
3036
|
+
* - table runtime treats complete without `next` as
|
|
3037
|
+
* "persistence not acknowledged".
|
|
3038
|
+
*/
|
|
3039
|
+
saveConfig<T>(key: string, config: T): Observable<void>;
|
|
3040
|
+
/**
|
|
3041
|
+
* Clears config for a key.
|
|
3042
|
+
*
|
|
3043
|
+
* Success contract (strong ack):
|
|
3044
|
+
* - emit at least one `next` (typically `void 0`) and then complete.
|
|
3045
|
+
* Not-acknowledged contract (soft-fail path):
|
|
3046
|
+
* - complete without any `next`.
|
|
3047
|
+
* Hard-failure contract:
|
|
3048
|
+
* - emit `error`.
|
|
3049
|
+
*
|
|
3050
|
+
* Important:
|
|
3051
|
+
* - table runtime treats complete without `next` as
|
|
3052
|
+
* "clear not acknowledged".
|
|
3053
|
+
*/
|
|
3054
|
+
clearConfig(key: string): Observable<void>;
|
|
3055
|
+
}
|
|
2494
3056
|
declare class LocalStorageConfigService implements ConfigStorage {
|
|
2495
3057
|
loadConfig<T>(key: string): T | null;
|
|
2496
3058
|
saveConfig<T>(key: string, config: T): void;
|
|
2497
3059
|
clearConfig(key: string): void;
|
|
3060
|
+
trySaveConfig<T>(key: string, config: T): boolean;
|
|
3061
|
+
tryClearConfig(key: string): boolean;
|
|
2498
3062
|
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageConfigService, never>;
|
|
2499
3063
|
static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageConfigService>;
|
|
2500
3064
|
}
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
3065
|
+
/**
|
|
3066
|
+
* Async adapter over the sync LocalStorage service.
|
|
3067
|
+
*/
|
|
3068
|
+
declare class LocalStorageAsyncAdapter implements AsyncConfigStorage {
|
|
3069
|
+
private readonly delegate;
|
|
3070
|
+
constructor(delegate: LocalStorageConfigService);
|
|
3071
|
+
loadConfig<T>(key: string): Observable<T | null>;
|
|
3072
|
+
saveConfig<T>(key: string, config: T): Observable<void>;
|
|
3073
|
+
clearConfig(key: string): Observable<void>;
|
|
3074
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageAsyncAdapter, never>;
|
|
3075
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageAsyncAdapter>;
|
|
3076
|
+
}
|
|
3077
|
+
/**
|
|
3078
|
+
* Defers async storage operations until a gate resolves.
|
|
3079
|
+
* Useful to ensure auth/tenant context is ready before HTTP requests.
|
|
3080
|
+
*/
|
|
3081
|
+
declare class DeferredAsyncConfigStorage implements AsyncConfigStorage {
|
|
3082
|
+
private readonly delegate;
|
|
3083
|
+
private readonly gate?;
|
|
3084
|
+
constructor(delegate: AsyncConfigStorage, gate?: (() => Promise<void>) | undefined);
|
|
3085
|
+
loadConfig<T>(key: string): Observable<T | null>;
|
|
3086
|
+
saveConfig<T>(key: string, config: T): Observable<void>;
|
|
3087
|
+
clearConfig(key: string): Observable<void>;
|
|
3088
|
+
}
|
|
3089
|
+
declare const ASYNC_CONFIG_STORAGE: InjectionToken<AsyncConfigStorage>;
|
|
3090
|
+
declare class RemoteConfigStorage implements ConfigStorage {
|
|
3091
|
+
private readonly asyncStorage;
|
|
3092
|
+
private readonly localStorage;
|
|
3093
|
+
private readonly cache;
|
|
3094
|
+
private readonly inflight;
|
|
3095
|
+
loadConfig<T>(key: string): T | null;
|
|
3096
|
+
saveConfig<T>(key: string, config: T): void;
|
|
3097
|
+
clearConfig(key: string): void;
|
|
3098
|
+
private refreshRemote;
|
|
3099
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RemoteConfigStorage, never>;
|
|
3100
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RemoteConfigStorage>;
|
|
3101
|
+
}
|
|
3102
|
+
declare const CONFIG_STORAGE: InjectionToken<ConfigStorage>;
|
|
3103
|
+
/**
|
|
3104
|
+
* Options for ApiConfigStorage.
|
|
3105
|
+
*/
|
|
3106
|
+
interface ApiConfigStorageOptions {
|
|
3107
|
+
baseUrl?: string;
|
|
3108
|
+
/** Factory to supply headers (tenant/user/env/updatedBy) per request. */
|
|
3109
|
+
headersFactory?: () => Record<string, string | undefined>;
|
|
3110
|
+
/** Default headers applied when the headersFactory omits them. */
|
|
3111
|
+
defaultHeaders?: Record<string, string>;
|
|
3112
|
+
/** Resolve componentType from the storage key (use the component selector, e.g. praxis-table). */
|
|
3113
|
+
componentTypeResolver?: (key: string) => string;
|
|
3114
|
+
/** Controls whether load errors for global config should propagate. */
|
|
3115
|
+
errorPolicy?: 'fail' | 'ignore';
|
|
3116
|
+
}
|
|
3117
|
+
declare const API_CONFIG_STORAGE_OPTIONS: InjectionToken<ApiConfigStorageOptions>;
|
|
3118
|
+
/**
|
|
3119
|
+
* HTTP-based storage that talks to praxis-config-starter user-config API.
|
|
3120
|
+
*/
|
|
3121
|
+
declare class ApiConfigStorage implements AsyncConfigStorage {
|
|
3122
|
+
private readonly http;
|
|
3123
|
+
private readonly opts;
|
|
3124
|
+
private readonly baseUrl;
|
|
3125
|
+
private readonly headersFactory;
|
|
3126
|
+
private readonly defaultHeaders;
|
|
3127
|
+
private readonly componentTypeResolver;
|
|
3128
|
+
private readonly cache;
|
|
3129
|
+
constructor();
|
|
3130
|
+
loadConfig<T>(key: string): Observable<T | null>;
|
|
3131
|
+
saveConfig<T>(key: string, config: T): Observable<void>;
|
|
3132
|
+
private shouldPropagateSaveError;
|
|
3133
|
+
private shouldPropagateClearError;
|
|
3134
|
+
private shouldPropagateLoadError;
|
|
3135
|
+
private isCriticalPersistenceKey;
|
|
3136
|
+
clearConfig(key: string): Observable<void>;
|
|
3137
|
+
private buildHeaders;
|
|
3138
|
+
private buildParams;
|
|
3139
|
+
private resolveKey;
|
|
3140
|
+
private inferComponentType;
|
|
3141
|
+
private looksLikePageKey;
|
|
3142
|
+
private stripQuotes;
|
|
3143
|
+
private formatEtag;
|
|
3144
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ApiConfigStorage, never>;
|
|
3145
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ApiConfigStorage>;
|
|
3146
|
+
}
|
|
3147
|
+
|
|
3148
|
+
type GlobalActionResult = {
|
|
3149
|
+
success: boolean;
|
|
3150
|
+
data?: any;
|
|
3151
|
+
error?: string;
|
|
3152
|
+
};
|
|
3153
|
+
type GlobalActionContext = {
|
|
3154
|
+
sourceId?: string;
|
|
3155
|
+
widgetKey?: string;
|
|
3156
|
+
output?: string;
|
|
3157
|
+
payload?: any;
|
|
3158
|
+
pageContext?: Record<string, any> | null;
|
|
3159
|
+
meta?: Record<string, any>;
|
|
3160
|
+
};
|
|
3161
|
+
type GlobalActionHandler = (payload?: any, context?: GlobalActionContext) => Promise<GlobalActionResult> | GlobalActionResult;
|
|
3162
|
+
interface GlobalActionHandlerEntry {
|
|
3163
|
+
id: string;
|
|
3164
|
+
handler: GlobalActionHandler;
|
|
3165
|
+
}
|
|
3166
|
+
interface GlobalDialogService {
|
|
3167
|
+
alert: (payload: {
|
|
3168
|
+
title?: string;
|
|
3169
|
+
message?: string;
|
|
3170
|
+
variant?: string;
|
|
3171
|
+
}) => Promise<any> | any;
|
|
3172
|
+
confirm: (payload: {
|
|
3173
|
+
title?: string;
|
|
3174
|
+
message?: string;
|
|
3175
|
+
confirmLabel?: string;
|
|
3176
|
+
cancelLabel?: string;
|
|
3177
|
+
type?: 'danger' | 'warning' | 'info';
|
|
3178
|
+
}) => Promise<boolean> | boolean;
|
|
3179
|
+
prompt: (payload: {
|
|
3180
|
+
title?: string;
|
|
3181
|
+
message?: string;
|
|
3182
|
+
placeholder?: string;
|
|
3183
|
+
defaultValue?: string;
|
|
3184
|
+
}) => Promise<any> | any;
|
|
3185
|
+
open: (payload: {
|
|
3186
|
+
componentId?: string;
|
|
3187
|
+
inputs?: any;
|
|
3188
|
+
size?: any;
|
|
3189
|
+
data?: any;
|
|
3190
|
+
}) => Promise<any> | any;
|
|
3191
|
+
}
|
|
3192
|
+
interface GlobalToastService {
|
|
3193
|
+
success: (message: string, opts?: any) => void;
|
|
3194
|
+
error: (message: string, opts?: any) => void;
|
|
3195
|
+
}
|
|
3196
|
+
interface GlobalAnalyticsService {
|
|
3197
|
+
track: (eventName: string, payload?: any) => void;
|
|
3198
|
+
}
|
|
3199
|
+
interface GlobalApiClient {
|
|
3200
|
+
get: (url: string, params?: Record<string, any>) => Promise<any> | any;
|
|
3201
|
+
post: (url: string, body?: any) => Promise<any> | any;
|
|
3202
|
+
patch: (url: string, body?: any) => Promise<any> | any;
|
|
3203
|
+
}
|
|
3204
|
+
interface GlobalRouteGuardResolver {
|
|
3205
|
+
resolve: (guardId: string) => any;
|
|
3206
|
+
}
|
|
3207
|
+
|
|
3208
|
+
declare class GlobalActionService {
|
|
3209
|
+
private readonly handlers;
|
|
3210
|
+
private readonly router;
|
|
3211
|
+
private readonly location;
|
|
3212
|
+
private readonly registry;
|
|
3213
|
+
private readonly globalConfig;
|
|
3214
|
+
private readonly dialog;
|
|
3215
|
+
private readonly toast;
|
|
3216
|
+
private readonly analytics;
|
|
3217
|
+
private readonly api;
|
|
3218
|
+
private readonly guardResolver;
|
|
3219
|
+
constructor();
|
|
3220
|
+
register(id: string, handler: GlobalActionHandler): void;
|
|
3221
|
+
has(id: string): boolean;
|
|
3222
|
+
execute(id: string, payload?: any, context?: GlobalActionContext): Promise<GlobalActionResult>;
|
|
3223
|
+
private registerBuiltins;
|
|
3224
|
+
private handleApi;
|
|
3225
|
+
private handleRouteRegister;
|
|
3226
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GlobalActionService, never>;
|
|
3227
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<GlobalActionService>;
|
|
3228
|
+
}
|
|
3229
|
+
|
|
3230
|
+
interface ConnectionConfigV1 {
|
|
3231
|
+
resourcePath: string;
|
|
3232
|
+
version: 1;
|
|
3233
|
+
updatedAt: string;
|
|
3234
|
+
origin?: 'quick-connect' | 'editor' | 'input';
|
|
3235
|
+
}
|
|
3236
|
+
interface ConnectionStorage {
|
|
3237
|
+
loadConnection(key: string): Observable<ConnectionConfigV1 | null>;
|
|
3238
|
+
saveConnection(key: string, cfg: ConnectionConfigV1): Observable<void>;
|
|
3239
|
+
clearConnection(key: string): Observable<void>;
|
|
3240
|
+
}
|
|
3241
|
+
declare class LocalConnectionStorage implements ConnectionStorage {
|
|
3242
|
+
private storage;
|
|
3243
|
+
constructor(storage: AsyncConfigStorage);
|
|
3244
|
+
loadConnection(key: string): Observable<ConnectionConfigV1 | null>;
|
|
3245
|
+
saveConnection(key: string, cfg: ConnectionConfigV1): Observable<void>;
|
|
3246
|
+
clearConnection(key: string): Observable<void>;
|
|
3247
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalConnectionStorage, never>;
|
|
3248
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalConnectionStorage>;
|
|
3249
|
+
}
|
|
3250
|
+
declare const CONNECTION_STORAGE: InjectionToken<ConnectionStorage>;
|
|
3251
|
+
|
|
3252
|
+
type DeviceKind = 'mobile' | 'tablet' | 'desktop';
|
|
3253
|
+
type OverlayPattern = 'modal' | 'drawer' | 'page' | 'bottom-sheet' | 'full-screen-dialog';
|
|
3254
|
+
interface OverlayDecisionContext {
|
|
3255
|
+
device: DeviceKind;
|
|
3256
|
+
fieldCount: number;
|
|
3257
|
+
dependencyCount: number;
|
|
3258
|
+
}
|
|
3259
|
+
interface OverlayDecision {
|
|
3260
|
+
pattern: OverlayPattern;
|
|
3261
|
+
config?: Record<string, unknown>;
|
|
3262
|
+
reason?: string;
|
|
3263
|
+
}
|
|
3264
|
+
interface OverlayRange {
|
|
3265
|
+
min?: number;
|
|
3266
|
+
max?: number;
|
|
3267
|
+
}
|
|
3268
|
+
interface OverlayRuleMatch {
|
|
3269
|
+
device?: DeviceKind[];
|
|
3270
|
+
fieldCount?: OverlayRange;
|
|
3271
|
+
dependencyCount?: OverlayRange;
|
|
3272
|
+
any?: OverlayRuleMatch[];
|
|
3273
|
+
}
|
|
3274
|
+
interface OverlayRule {
|
|
3275
|
+
match: OverlayRuleMatch;
|
|
3276
|
+
use: OverlayDecision;
|
|
3277
|
+
}
|
|
3278
|
+
interface OverlayThresholds {
|
|
3279
|
+
fieldCount: {
|
|
3280
|
+
small_max: number;
|
|
3281
|
+
medium_max: number;
|
|
3282
|
+
};
|
|
3283
|
+
dependencyCount: {
|
|
3284
|
+
low_max: number;
|
|
3285
|
+
medium_max: number;
|
|
3286
|
+
};
|
|
2508
3287
|
}
|
|
2509
|
-
interface
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
3288
|
+
interface OverlayDecisionMatrix {
|
|
3289
|
+
version: string;
|
|
3290
|
+
description?: string;
|
|
3291
|
+
thresholds: OverlayThresholds;
|
|
3292
|
+
rules_ordered: OverlayRule[];
|
|
3293
|
+
fallback: OverlayDecision;
|
|
3294
|
+
ui_hints?: Record<string, unknown>;
|
|
2513
3295
|
}
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
3296
|
+
interface OverlayDecider {
|
|
3297
|
+
decide(ctx: OverlayDecisionContext): OverlayDecision;
|
|
3298
|
+
explain?(ctx: OverlayDecisionContext): string;
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3301
|
+
declare const OVERLAY_DECIDER_DEBUG: InjectionToken<boolean>;
|
|
3302
|
+
declare class OverlayDeciderService {
|
|
3303
|
+
private readonly matrix;
|
|
3304
|
+
private readonly debug;
|
|
3305
|
+
decide(ctx: OverlayDecisionContext): OverlayDecision;
|
|
3306
|
+
explain(ctx: OverlayDecisionContext): string;
|
|
3307
|
+
private evaluate;
|
|
3308
|
+
private matches;
|
|
3309
|
+
private log;
|
|
3310
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OverlayDeciderService, never>;
|
|
3311
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OverlayDeciderService>;
|
|
2522
3312
|
}
|
|
2523
|
-
declare const CONNECTION_STORAGE: InjectionToken<ConnectionStorage>;
|
|
2524
3313
|
|
|
2525
3314
|
/**
|
|
2526
3315
|
* Enum que define os tipos de dados (`TYPE`) disponíveis para configuração dos campos de formulário.
|
|
@@ -2551,6 +3340,7 @@ declare const FieldControlType: {
|
|
|
2551
3340
|
readonly APP_BAR: "appBar";
|
|
2552
3341
|
readonly ARC_GAUGE: "arcGauge";
|
|
2553
3342
|
readonly ARRAY_INPUT: "array";
|
|
3343
|
+
readonly ASYNC_SELECT: "async-select";
|
|
2554
3344
|
readonly AUTO_COMPLETE: "autoComplete";
|
|
2555
3345
|
readonly AVATAR: "avatar";
|
|
2556
3346
|
readonly BARCODE_GENERATOR: "barcodeGenerator";
|
|
@@ -2624,6 +3414,7 @@ declare const FieldControlType: {
|
|
|
2624
3414
|
readonly RIPPLE: "ripple";
|
|
2625
3415
|
readonly SCROLL_VIEW: "scrollView";
|
|
2626
3416
|
readonly SEARCH_INPUT: "search";
|
|
3417
|
+
readonly SEARCHABLE_SELECT: "searchable-select";
|
|
2627
3418
|
readonly SELECTION_LIST: "selectionList";
|
|
2628
3419
|
readonly SELECT: "select";
|
|
2629
3420
|
readonly SIGNATURE: "signature";
|
|
@@ -2945,6 +3736,10 @@ interface FieldMetadata extends ComponentMetadata {
|
|
|
2945
3736
|
suffixIcon?: string;
|
|
2946
3737
|
iconPosition?: 'start' | 'end';
|
|
2947
3738
|
iconSize?: 'small' | 'medium' | 'large';
|
|
3739
|
+
/** Tooltip for suffix icon (used for help actions) */
|
|
3740
|
+
suffixIconTooltip?: string;
|
|
3741
|
+
/** ARIA label for suffix icon when used as help */
|
|
3742
|
+
suffixIconAriaLabel?: string;
|
|
2948
3743
|
/** Input masking pattern */
|
|
2949
3744
|
mask?: string;
|
|
2950
3745
|
/** Format for display values */
|
|
@@ -3087,19 +3882,6 @@ type CoreFieldMetadata = Pick<FieldMetadata, 'name' | 'label' | 'controlType'>;
|
|
|
3087
3882
|
/** Helper type for field metadata without computed properties */
|
|
3088
3883
|
type SerializableFieldMetadata = Omit<FieldMetadata, 'conditionalRequired' | 'conditionalDisplay' | 'transformDisplayValue' | 'transformSaveValue'>;
|
|
3089
3884
|
|
|
3090
|
-
/**
|
|
3091
|
-
* @fileoverview Specialized metadata interfaces for Angular Material components
|
|
3092
|
-
*
|
|
3093
|
-
* This file extends the base FieldMetadata interface with component-specific
|
|
3094
|
-
* properties for each Material Design component type.
|
|
3095
|
-
*
|
|
3096
|
-
* Each interface follows the pattern:
|
|
3097
|
-
* - Extends FieldMetadata
|
|
3098
|
-
* - Adds component-specific properties
|
|
3099
|
-
* - Maintains type safety with literal types
|
|
3100
|
-
* - Supports Material Design 3 specifications
|
|
3101
|
-
*/
|
|
3102
|
-
|
|
3103
3885
|
/**
|
|
3104
3886
|
* Enhanced validation context with type safety
|
|
3105
3887
|
* Provides comprehensive context for custom validation functions
|
|
@@ -3309,6 +4091,8 @@ interface MaterialInputMetadata extends BaseMaterialInputMetadata {
|
|
|
3309
4091
|
enabled: boolean;
|
|
3310
4092
|
/** Nome do ícone Material (default: 'clear') */
|
|
3311
4093
|
icon?: string;
|
|
4094
|
+
/** Cor do ícone (tema ou CSS) */
|
|
4095
|
+
iconColor?: string;
|
|
3312
4096
|
/** Posição fixa no 'end' conforme Material Design */
|
|
3313
4097
|
position?: 'end';
|
|
3314
4098
|
/** Tooltip text for accessibility */
|
|
@@ -3696,6 +4480,36 @@ interface MaterialNumericMetadata extends BaseMaterialInputMetadata {
|
|
|
3696
4480
|
min?: number;
|
|
3697
4481
|
/** Maximum allowed value */
|
|
3698
4482
|
max?: number;
|
|
4483
|
+
/** Minimum allowed value for start input */
|
|
4484
|
+
startMin?: number;
|
|
4485
|
+
/** Maximum allowed value for start input */
|
|
4486
|
+
startMax?: number;
|
|
4487
|
+
/** Minimum allowed value for end input */
|
|
4488
|
+
endMin?: number;
|
|
4489
|
+
/** Maximum allowed value for end input */
|
|
4490
|
+
endMax?: number;
|
|
4491
|
+
/** Custom message for start min validation */
|
|
4492
|
+
startMinMessage?: string;
|
|
4493
|
+
/** Custom message for start max validation */
|
|
4494
|
+
startMaxMessage?: string;
|
|
4495
|
+
/** Custom message for end min validation */
|
|
4496
|
+
endMinMessage?: string;
|
|
4497
|
+
/** Custom message for end max validation */
|
|
4498
|
+
endMaxMessage?: string;
|
|
4499
|
+
/**
|
|
4500
|
+
* Offset mínimo do fim em relação ao início.
|
|
4501
|
+
* Ex.: 10 => fim >= início + 10
|
|
4502
|
+
*/
|
|
4503
|
+
endMinOffset?: number;
|
|
4504
|
+
/**
|
|
4505
|
+
* Offset máximo do início em relação ao fim.
|
|
4506
|
+
* Ex.: 10 => início <= fim - 10
|
|
4507
|
+
*/
|
|
4508
|
+
startMaxOffset?: number;
|
|
4509
|
+
/** Custom message for endMinOffset validation */
|
|
4510
|
+
endMinOffsetMessage?: string;
|
|
4511
|
+
/** Custom message for startMaxOffset validation */
|
|
4512
|
+
startMaxOffsetMessage?: string;
|
|
3699
4513
|
/** Step increment for number controls */
|
|
3700
4514
|
step?: number;
|
|
3701
4515
|
/** Number formatting options */
|
|
@@ -3741,6 +4555,18 @@ interface MaterialSelectMetadata extends FieldMetadata {
|
|
|
3741
4555
|
selectAll?: boolean;
|
|
3742
4556
|
/** Maximum number of selections (for multiple) */
|
|
3743
4557
|
maxSelections?: number;
|
|
4558
|
+
/** Inline/runtime compatibility for panel search icon. */
|
|
4559
|
+
panelSearchIcon?: string;
|
|
4560
|
+
/** Inline/runtime compatibility for panel search icon color. */
|
|
4561
|
+
panelSearchIconColor?: string;
|
|
4562
|
+
/** Inline/runtime compatibility for panel reset icon. */
|
|
4563
|
+
panelResetIcon?: string;
|
|
4564
|
+
/** Inline/runtime compatibility for panel reset icon color. */
|
|
4565
|
+
panelResetIconColor?: string;
|
|
4566
|
+
/** Inline/runtime compatibility for selected option icon. */
|
|
4567
|
+
optionSelectedIcon?: string;
|
|
4568
|
+
/** Inline/runtime compatibility for selected option icon color. */
|
|
4569
|
+
optionSelectedIconColor?: string;
|
|
3744
4570
|
}
|
|
3745
4571
|
/**
|
|
3746
4572
|
* Metadata for Material Autocomplete components.
|
|
@@ -3990,6 +4816,57 @@ interface MaterialDateRangeMetadata extends FieldMetadata {
|
|
|
3990
4816
|
endAriaLabel?: string;
|
|
3991
4817
|
/** Start view (month, year, multi-year) */
|
|
3992
4818
|
startView?: 'month' | 'year' | 'multi-year';
|
|
4819
|
+
/** Enable sidebar shortcuts overlay (phase 1). */
|
|
4820
|
+
showShortcuts?: boolean;
|
|
4821
|
+
/**
|
|
4822
|
+
* Shortcuts configuration. Accepts built-in identifiers or custom presets.
|
|
4823
|
+
* Example: ['thisMonth', 'lastMonth', { id: 'last7', label: 'Últimos 7 dias', calculateRange: fn }]
|
|
4824
|
+
*/
|
|
4825
|
+
shortcuts?: (string | DateRangePreset)[];
|
|
4826
|
+
/**
|
|
4827
|
+
* Inline quick presets for compact filters (`filter-date-range-inline`).
|
|
4828
|
+
* - `true`: enabled with defaults
|
|
4829
|
+
* - `false`: disabled
|
|
4830
|
+
* - object: fine-grained control
|
|
4831
|
+
*/
|
|
4832
|
+
inlineQuickPresets?: boolean | {
|
|
4833
|
+
enabled?: boolean;
|
|
4834
|
+
maxVisible?: number;
|
|
4835
|
+
};
|
|
4836
|
+
/** Accessibility label for the inline quick presets group. */
|
|
4837
|
+
inlineQuickPresetsAriaLabel?: string;
|
|
4838
|
+
/** Action label shown in the overlay footer for cancel. */
|
|
4839
|
+
inlineQuickPresetsCancelLabel?: string;
|
|
4840
|
+
/** Accessibility label for the cancel action in overlay footer. */
|
|
4841
|
+
inlineQuickPresetsCancelAriaLabel?: string;
|
|
4842
|
+
/** Action label shown in the overlay footer for apply. */
|
|
4843
|
+
inlineQuickPresetsApplyLabel?: string;
|
|
4844
|
+
/** Accessibility label for the apply action in overlay footer. */
|
|
4845
|
+
inlineQuickPresetsApplyAriaLabel?: string;
|
|
4846
|
+
/**
|
|
4847
|
+
* Apply behavior for inline quick presets:
|
|
4848
|
+
* - `auto`: applies immediately and closes the overlay
|
|
4849
|
+
* - `confirm`: keeps selection as draft and only commits on explicit confirmation
|
|
4850
|
+
*/
|
|
4851
|
+
inlineQuickPresetsApplyMode?: 'auto' | 'confirm';
|
|
4852
|
+
/** Position of shortcuts sidebar relative to the form field. */
|
|
4853
|
+
shortcutsPosition?: 'left' | 'right';
|
|
4854
|
+
/** Apply immediately when clicking a shortcut. Defaults to true. */
|
|
4855
|
+
applyOnShortcutClick?: boolean;
|
|
4856
|
+
/** Timezone identifier (e.g., 'America/Sao_Paulo') for normalization. */
|
|
4857
|
+
timezone?: string;
|
|
4858
|
+
/** First day of week override; otherwise use DateAdapter.getFirstDayOfWeek(). */
|
|
4859
|
+
startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
4860
|
+
/**
|
|
4861
|
+
* Localized labels for built-in shortcuts.
|
|
4862
|
+
* Keys: today, yesterday, thisWeek, lastWeek, thisMonth, lastMonth, thisYear, lastYear
|
|
4863
|
+
*/
|
|
4864
|
+
i18nShortcuts?: Partial<Record<'today' | 'yesterday' | 'thisWeek' | 'lastWeek' | 'thisMonth' | 'lastMonth' | 'thisYear' | 'lastYear', string>>;
|
|
4865
|
+
/**
|
|
4866
|
+
* Now provider for deterministic testing and reporting alignment.
|
|
4867
|
+
* Defaults to () => new Date().
|
|
4868
|
+
*/
|
|
4869
|
+
nowProvider?: () => Date;
|
|
3993
4870
|
}
|
|
3994
4871
|
/**
|
|
3995
4872
|
* Metadata for a price range input using two currency fields.
|
|
@@ -4024,10 +4901,104 @@ interface MaterialPriceRangeMetadata extends FieldMetadata {
|
|
|
4024
4901
|
startLabel?: string;
|
|
4025
4902
|
/** Label for end input */
|
|
4026
4903
|
endLabel?: string;
|
|
4904
|
+
/** Hide labels for start/end sub-inputs (compact mode). */
|
|
4905
|
+
hideSubLabels?: boolean;
|
|
4906
|
+
/** Layout dos inputs (lado a lado ou em linhas). */
|
|
4907
|
+
layout?: 'row' | 'column';
|
|
4908
|
+
/** Espaçamento entre os inputs (px ou CSS). */
|
|
4909
|
+
gap?: number | string;
|
|
4910
|
+
/** Onde exibir o botão clear: no grupo ou em cada subinput. */
|
|
4911
|
+
clearButtonPlacement?: 'group' | 'subinputs';
|
|
4912
|
+
/**
|
|
4913
|
+
* Configuração do botão de limpar a faixa.
|
|
4914
|
+
* Aceita boolean para compatibilidade ou objeto detalhado.
|
|
4915
|
+
*/
|
|
4916
|
+
clearButton?: boolean | {
|
|
4917
|
+
enabled: boolean;
|
|
4918
|
+
icon?: string;
|
|
4919
|
+
iconColor?: string;
|
|
4920
|
+
tooltip?: string;
|
|
4921
|
+
ariaLabel?: string;
|
|
4922
|
+
showOnlyWhenFilled?: boolean;
|
|
4923
|
+
};
|
|
4924
|
+
/**
|
|
4925
|
+
* Optional mini histogram/bars rendered above the inline range slider track.
|
|
4926
|
+
* Accepts array shorthand, object config, or JSON string for editor compatibility.
|
|
4927
|
+
*/
|
|
4928
|
+
inlineDistribution?: InlineRangeDistributionConfig | Array<number | InlineRangeDistributionBin> | string;
|
|
4929
|
+
/**
|
|
4930
|
+
* Alias accepted by inline range components for legacy payloads.
|
|
4931
|
+
*/
|
|
4932
|
+
distribution?: InlineRangeDistributionConfig | Array<number | InlineRangeDistributionBin> | string;
|
|
4027
4933
|
}
|
|
4028
4934
|
/**
|
|
4029
4935
|
* Metadata for the generic numeric range slider component.
|
|
4030
4936
|
*/
|
|
4937
|
+
interface InlineRangeDistributionBin {
|
|
4938
|
+
/** Optional unique identifier */
|
|
4939
|
+
id?: string;
|
|
4940
|
+
/** Primary numeric amount for the bin */
|
|
4941
|
+
value?: number;
|
|
4942
|
+
/** Alias for `value` used by analytics payloads */
|
|
4943
|
+
count?: number;
|
|
4944
|
+
/** Alias for `value` used by finance payloads */
|
|
4945
|
+
amount?: number;
|
|
4946
|
+
/** Optional custom bar color */
|
|
4947
|
+
color?: string;
|
|
4948
|
+
/** Optional label for accessibility/reporting */
|
|
4949
|
+
label?: string;
|
|
4950
|
+
}
|
|
4951
|
+
interface InlineRangeDistributionConfig {
|
|
4952
|
+
/**
|
|
4953
|
+
* Histogram bins as numeric shorthand or rich objects.
|
|
4954
|
+
* Accepts array or JSON string for editor compatibility.
|
|
4955
|
+
*/
|
|
4956
|
+
bins?: Array<number | InlineRangeDistributionBin> | string;
|
|
4957
|
+
/** Optional normalization ceiling; defaults to the highest bin value. */
|
|
4958
|
+
maxValue?: number;
|
|
4959
|
+
/** Optional minimum visible ratio in the [0..1] range for non-zero bars. */
|
|
4960
|
+
minBarRatio?: number;
|
|
4961
|
+
/** Alias for `minBarRatio`. */
|
|
4962
|
+
minVisibleRatio?: number;
|
|
4963
|
+
/** Optional container height in px. */
|
|
4964
|
+
height?: number;
|
|
4965
|
+
/** Optional gap between bars in px. */
|
|
4966
|
+
gap?: number;
|
|
4967
|
+
/** Optional top border radius for bars in px. */
|
|
4968
|
+
radius?: number;
|
|
4969
|
+
/** Optional global opacity multiplier in the [0..1] range. */
|
|
4970
|
+
opacity?: number;
|
|
4971
|
+
/** Optional accessibility label for the bars group. */
|
|
4972
|
+
ariaLabel?: string;
|
|
4973
|
+
}
|
|
4974
|
+
interface RangeSliderQuickPreset {
|
|
4975
|
+
/** Optional unique identifier */
|
|
4976
|
+
id?: string;
|
|
4977
|
+
/** Label shown in the inline preset chip/button */
|
|
4978
|
+
label: string;
|
|
4979
|
+
/** Optional icon (Material icon name) */
|
|
4980
|
+
icon?: string;
|
|
4981
|
+
/** Preset for single mode */
|
|
4982
|
+
value?: number | null;
|
|
4983
|
+
/** Preset start for range mode */
|
|
4984
|
+
start?: number | null;
|
|
4985
|
+
/** Preset end for range mode */
|
|
4986
|
+
end?: number | null;
|
|
4987
|
+
}
|
|
4988
|
+
interface RangeSliderInlineTexts {
|
|
4989
|
+
minLabel?: string;
|
|
4990
|
+
maxLabel?: string;
|
|
4991
|
+
valueLabel?: string;
|
|
4992
|
+
quickPresetsLabel?: string;
|
|
4993
|
+
}
|
|
4994
|
+
interface RangeSliderQuickPresetLabels {
|
|
4995
|
+
low?: string;
|
|
4996
|
+
middle?: string;
|
|
4997
|
+
high?: string;
|
|
4998
|
+
uptoMid?: string;
|
|
4999
|
+
fromMid?: string;
|
|
5000
|
+
full?: string;
|
|
5001
|
+
}
|
|
4031
5002
|
interface MaterialRangeSliderMetadata extends FieldMetadata {
|
|
4032
5003
|
controlType: typeof FieldControlType.RANGE_SLIDER;
|
|
4033
5004
|
/** Slider mode */
|
|
@@ -4056,6 +5027,64 @@ interface MaterialRangeSliderMetadata extends FieldMetadata {
|
|
|
4056
5027
|
displayWith?: (value: number) => string;
|
|
4057
5028
|
/** Show numeric input boxes */
|
|
4058
5029
|
showInputs?: boolean;
|
|
5030
|
+
/**
|
|
5031
|
+
* Optional mini histogram/bars rendered above the inline slider track.
|
|
5032
|
+
* Accepts array shorthand, object config, or JSON string for editor compatibility.
|
|
5033
|
+
*/
|
|
5034
|
+
inlineDistribution?: InlineRangeDistributionConfig | Array<number | InlineRangeDistributionBin> | string;
|
|
5035
|
+
/**
|
|
5036
|
+
* Alias accepted by inline range components for legacy payloads.
|
|
5037
|
+
*/
|
|
5038
|
+
distribution?: InlineRangeDistributionConfig | Array<number | InlineRangeDistributionBin> | string;
|
|
5039
|
+
/**
|
|
5040
|
+
* Quick presets shown in compact inline variant.
|
|
5041
|
+
* Accepts a typed array or JSON string for editor/backward compatibility.
|
|
5042
|
+
*/
|
|
5043
|
+
quickPresets?: RangeSliderQuickPreset[] | string;
|
|
5044
|
+
/** Enables auto-generated quick presets when `quickPresets` is not provided. */
|
|
5045
|
+
quickPresetsAuto?: boolean;
|
|
5046
|
+
/**
|
|
5047
|
+
* Optional labels for auto-generated presets.
|
|
5048
|
+
* Accepts object or JSON string for editor/backward compatibility.
|
|
5049
|
+
*/
|
|
5050
|
+
quickPresetsLabels?: RangeSliderQuickPresetLabels | string;
|
|
5051
|
+
/**
|
|
5052
|
+
* Compact inline textual labels (inputs and quick presets group).
|
|
5053
|
+
* Accepts object or JSON string for editor/backward compatibility.
|
|
5054
|
+
*/
|
|
5055
|
+
inlineTexts?: RangeSliderInlineTexts | string;
|
|
5056
|
+
/**
|
|
5057
|
+
* Enables half-step interactions for inline rating ranges.
|
|
5058
|
+
* When `true`, the rating range defaults to step `0.5` unless an explicit step is set.
|
|
5059
|
+
*/
|
|
5060
|
+
allowHalf?: boolean;
|
|
5061
|
+
/**
|
|
5062
|
+
* Legacy alias for `allowHalf` used by some integrations.
|
|
5063
|
+
*/
|
|
5064
|
+
ratingAllowHalf?: boolean;
|
|
5065
|
+
/**
|
|
5066
|
+
* Optional precision hint for rating-range interpretation (`0.5` enables half-step).
|
|
5067
|
+
*/
|
|
5068
|
+
ratingPrecision?: number;
|
|
5069
|
+
/**
|
|
5070
|
+
* Optional precision token for rating-range interpretation (`half` enables half-step).
|
|
5071
|
+
*/
|
|
5072
|
+
precision?: string | number;
|
|
5073
|
+
/**
|
|
5074
|
+
* Optional aliases consumed by inline rating implementations.
|
|
5075
|
+
* `ratingMin` and `ratingMax` are fallbacks when `min`/`max` are omitted.
|
|
5076
|
+
*/
|
|
5077
|
+
ratingMin?: number;
|
|
5078
|
+
ratingMax?: number;
|
|
5079
|
+
ratingStep?: number;
|
|
5080
|
+
itemsCount?: number;
|
|
5081
|
+
/**
|
|
5082
|
+
* Optional visual customization for inline rating tone colors.
|
|
5083
|
+
*/
|
|
5084
|
+
ratingToneLowColor?: string;
|
|
5085
|
+
ratingToneMidColor?: string;
|
|
5086
|
+
ratingToneHighColor?: string;
|
|
5087
|
+
ratingBadgeColor?: string;
|
|
4059
5088
|
/** Custom validator messages */
|
|
4060
5089
|
validators?: FieldMetadata['validators'] & {
|
|
4061
5090
|
minMessage?: string;
|
|
@@ -4197,6 +5226,18 @@ interface MaterialColorPickerMetadata extends FieldMetadata {
|
|
|
4197
5226
|
showInput?: boolean;
|
|
4198
5227
|
/** Show color preview */
|
|
4199
5228
|
showPreview?: boolean;
|
|
5229
|
+
/**
|
|
5230
|
+
* Configuração do botão de limpar no painel do color picker.
|
|
5231
|
+
* Aceita boolean para compatibilidade ou objeto detalhado.
|
|
5232
|
+
*/
|
|
5233
|
+
clearButton?: boolean | {
|
|
5234
|
+
enabled: boolean;
|
|
5235
|
+
icon?: string;
|
|
5236
|
+
iconColor?: string;
|
|
5237
|
+
tooltip?: string;
|
|
5238
|
+
ariaLabel?: string;
|
|
5239
|
+
showOnlyWhenFilled?: boolean;
|
|
5240
|
+
};
|
|
4200
5241
|
}
|
|
4201
5242
|
/**
|
|
4202
5243
|
* Specialized metadata for Material Currency Input components.
|
|
@@ -4324,6 +5365,19 @@ interface MaterialPhoneMetadata extends BaseMaterialInputMetadata {
|
|
|
4324
5365
|
interface MaterialPasswordMetadata extends BaseMaterialInputMetadata {
|
|
4325
5366
|
controlType: typeof FieldControlType.PASSWORD;
|
|
4326
5367
|
inputType: 'password';
|
|
5368
|
+
/**
|
|
5369
|
+
* Optional reveal toggle (show/hide password).
|
|
5370
|
+
* Use style: 'icon' for eye icon, 'text' for a small text button.
|
|
5371
|
+
*/
|
|
5372
|
+
revealToggle?: {
|
|
5373
|
+
enabled?: boolean;
|
|
5374
|
+
style?: 'icon' | 'text';
|
|
5375
|
+
showLabel?: string;
|
|
5376
|
+
hideLabel?: string;
|
|
5377
|
+
iconShow?: string;
|
|
5378
|
+
iconHide?: string;
|
|
5379
|
+
ariaLabel?: string;
|
|
5380
|
+
};
|
|
4327
5381
|
}
|
|
4328
5382
|
/**
|
|
4329
5383
|
* Metadata for Material URL Input components.
|
|
@@ -4434,6 +5488,22 @@ interface MaterialTimeInputMetadata extends BaseMaterialInputMetadata {
|
|
|
4434
5488
|
max?: string;
|
|
4435
5489
|
/** Step for minute increments in seconds. */
|
|
4436
5490
|
step?: number;
|
|
5491
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5492
|
+
interval?: number | string;
|
|
5493
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5494
|
+
timeOptions?: string[];
|
|
5495
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5496
|
+
showSeconds?: boolean;
|
|
5497
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5498
|
+
stepMinute?: number;
|
|
5499
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5500
|
+
stepSecond?: number;
|
|
5501
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5502
|
+
inlineTimeMode?: 'auto' | 'list' | 'columns';
|
|
5503
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5504
|
+
inlineListMaxOptions?: number;
|
|
5505
|
+
/** Inline/runtime compatibility for compact filter variant. */
|
|
5506
|
+
inlineTexts?: MaterialTimepickerMetadata['inlineTexts'];
|
|
4437
5507
|
}
|
|
4438
5508
|
/**
|
|
4439
5509
|
* Metadata for Material Timepicker components.
|
|
@@ -4450,7 +5520,7 @@ interface MaterialTimepickerMetadata extends BaseMaterialInputMetadata {
|
|
|
4450
5520
|
/**
|
|
4451
5521
|
* Interval between options in the timepicker.
|
|
4452
5522
|
* Can be a number of seconds or a string with units like '30m'.
|
|
4453
|
-
* Ignored if `
|
|
5523
|
+
* Ignored if `timeOptions` is provided.
|
|
4454
5524
|
*/
|
|
4455
5525
|
interval?: number | string;
|
|
4456
5526
|
/** Specific selectable time options. Takes precedence over `interval`. */
|
|
@@ -4467,6 +5537,39 @@ interface MaterialTimepickerMetadata extends BaseMaterialInputMetadata {
|
|
|
4467
5537
|
stepMinute?: number;
|
|
4468
5538
|
/** Second increment when entering time manually. */
|
|
4469
5539
|
stepSecond?: number;
|
|
5540
|
+
/**
|
|
5541
|
+
* Rendering mode for inline filter variant:
|
|
5542
|
+
* - `list`: single list of options
|
|
5543
|
+
* - `columns`: independent columns for hour/minute(/second)
|
|
5544
|
+
* - `auto`: chooses best mode based on metadata/options
|
|
5545
|
+
*/
|
|
5546
|
+
inlineTimeMode?: 'auto' | 'list' | 'columns';
|
|
5547
|
+
/**
|
|
5548
|
+
* Max options threshold for `inlineTimeMode: 'auto'` to still prefer list.
|
|
5549
|
+
* Values outside range are clamped by the component.
|
|
5550
|
+
*/
|
|
5551
|
+
inlineListMaxOptions?: number;
|
|
5552
|
+
/**
|
|
5553
|
+
* Text overrides for inline time variant.
|
|
5554
|
+
*/
|
|
5555
|
+
inlineTexts?: {
|
|
5556
|
+
hourLabel?: string;
|
|
5557
|
+
minuteLabel?: string;
|
|
5558
|
+
secondLabel?: string;
|
|
5559
|
+
emptyStateLabel?: string;
|
|
5560
|
+
openPanelAriaLabel?: string;
|
|
5561
|
+
closePanelAriaLabel?: string;
|
|
5562
|
+
};
|
|
5563
|
+
/** Inline/runtime compatibility for panel toggle icon when closed. */
|
|
5564
|
+
panelToggleCloseIcon?: string;
|
|
5565
|
+
/** Inline/runtime compatibility for panel toggle icon when open. */
|
|
5566
|
+
panelToggleOpenIcon?: string;
|
|
5567
|
+
/** Inline/runtime compatibility for panel toggle icon color. */
|
|
5568
|
+
panelToggleIconColor?: string;
|
|
5569
|
+
/** Inline/runtime compatibility for selected option icon. */
|
|
5570
|
+
optionSelectedIcon?: string;
|
|
5571
|
+
/** Inline/runtime compatibility for selected option icon color. */
|
|
5572
|
+
optionSelectedIconColor?: string;
|
|
4470
5573
|
/** Identifier of a custom filter function to disable specific times. */
|
|
4471
5574
|
timeFilter?: string;
|
|
4472
5575
|
}
|
|
@@ -4504,6 +5607,28 @@ interface MaterialTreeSelectMetadata extends FieldMetadata {
|
|
|
4504
5607
|
controlType: typeof FieldControlType.TREE_SELECT;
|
|
4505
5608
|
/** Tree nodes to display */
|
|
4506
5609
|
nodes?: MaterialTreeNode[];
|
|
5610
|
+
/** Enable search input */
|
|
5611
|
+
searchable?: boolean;
|
|
5612
|
+
/** Placeholder text for tree search input */
|
|
5613
|
+
searchPlaceholder?: string;
|
|
5614
|
+
/** Empty state message for filtered tree */
|
|
5615
|
+
emptyStateText?: string;
|
|
5616
|
+
/** Inline/runtime compatibility for panel search icon. */
|
|
5617
|
+
panelSearchIcon?: string;
|
|
5618
|
+
/** Inline/runtime compatibility for panel search icon color. */
|
|
5619
|
+
panelSearchIconColor?: string;
|
|
5620
|
+
/** Inline/runtime compatibility for panel toggle icon when closed. */
|
|
5621
|
+
panelToggleCloseIcon?: string;
|
|
5622
|
+
/** Inline/runtime compatibility for panel toggle icon when open. */
|
|
5623
|
+
panelToggleOpenIcon?: string;
|
|
5624
|
+
/** Inline/runtime compatibility for panel toggle icon color. */
|
|
5625
|
+
panelToggleIconColor?: string;
|
|
5626
|
+
/** Inline/runtime compatibility for expanded tree node icon. */
|
|
5627
|
+
treeNodeExpandedIcon?: string;
|
|
5628
|
+
/** Inline/runtime compatibility for collapsed tree node icon. */
|
|
5629
|
+
treeNodeCollapsedIcon?: string;
|
|
5630
|
+
/** Inline/runtime compatibility for tree node toggle icon color. */
|
|
5631
|
+
treeNodeIconColor?: string;
|
|
4507
5632
|
/** Whether only leaf nodes can be selected */
|
|
4508
5633
|
leafOnly?: boolean;
|
|
4509
5634
|
/** Auto expand matches when searching */
|
|
@@ -4556,7 +5681,7 @@ declare function buildValidatorsFromValidatorOptions(opts?: ValidatorOptions): B
|
|
|
4556
5681
|
* - Injetar validadores específicos de UI conforme o controlType:
|
|
4557
5682
|
* - DATE_PICKER: minDate/maxDate (datas limites).
|
|
4558
5683
|
* - DATE_RANGE: verificação de ordem (start <= end) e min/max date.
|
|
4559
|
-
* - RANGE_SLIDER: verificação de ordem e min/max numérico.
|
|
5684
|
+
* - RANGE_SLIDER/PRICE_RANGE: verificação de ordem e min/max numérico.
|
|
4560
5685
|
* - Tratar campos múltiplos (checkbox/multi-select): valor inicial [] quando não informado.
|
|
4561
5686
|
* - Reconfigurar controles existentes (validators, asyncValidators, enabled/disabled, defaultValue).
|
|
4562
5687
|
*
|
|
@@ -4712,6 +5837,10 @@ declare class ErrorMessageService {
|
|
|
4712
5837
|
interface ComponentDocMeta {
|
|
4713
5838
|
/** Unique identifier used by the registry */
|
|
4714
5839
|
id: string;
|
|
5840
|
+
/** Canonical component type for AI registry (ex: praxis-table) */
|
|
5841
|
+
componentType?: string;
|
|
5842
|
+
/** Display name used by AI docs/catalogs */
|
|
5843
|
+
displayName?: string;
|
|
4715
5844
|
/** Angular component selector */
|
|
4716
5845
|
selector: string;
|
|
4717
5846
|
/** Component class reference */
|
|
@@ -4739,6 +5868,50 @@ interface ComponentDocMeta {
|
|
|
4739
5868
|
/** Optional friendly label for UI (diagram/builders) */
|
|
4740
5869
|
label?: string;
|
|
4741
5870
|
}>;
|
|
5871
|
+
/** Optional reusable actions catalog (shell/toolbar/context/etc). */
|
|
5872
|
+
actions?: Array<{
|
|
5873
|
+
id: string;
|
|
5874
|
+
label: string;
|
|
5875
|
+
/** Optional icon name for UI suggestions. */
|
|
5876
|
+
icon?: string;
|
|
5877
|
+
description?: string;
|
|
5878
|
+
/** Optional command name to dispatch to the component. */
|
|
5879
|
+
command?: string;
|
|
5880
|
+
/** Optional output name to emit by default. */
|
|
5881
|
+
emit?: string;
|
|
5882
|
+
/** Optional payload schema for validation/UI. */
|
|
5883
|
+
payloadSchema?: {
|
|
5884
|
+
type: 'object' | 'string' | 'number' | 'boolean' | 'array';
|
|
5885
|
+
properties?: Record<string, {
|
|
5886
|
+
type: string;
|
|
5887
|
+
description?: string;
|
|
5888
|
+
required?: boolean;
|
|
5889
|
+
}>;
|
|
5890
|
+
required?: string[];
|
|
5891
|
+
example?: any;
|
|
5892
|
+
};
|
|
5893
|
+
/** Optional scope hint for UI placement. */
|
|
5894
|
+
scope?: 'shell' | 'toolbar' | 'context' | 'any';
|
|
5895
|
+
}>;
|
|
5896
|
+
/** Optional commands catalog for advanced actions. */
|
|
5897
|
+
commands?: Array<{
|
|
5898
|
+
name: string;
|
|
5899
|
+
label: string;
|
|
5900
|
+
/** Optional icon name for UI suggestions. */
|
|
5901
|
+
icon?: string;
|
|
5902
|
+
description?: string;
|
|
5903
|
+
/** Optional payload schema for validation/UI. */
|
|
5904
|
+
payloadSchema?: {
|
|
5905
|
+
type: 'object' | 'string' | 'number' | 'boolean' | 'array';
|
|
5906
|
+
properties?: Record<string, {
|
|
5907
|
+
type: string;
|
|
5908
|
+
description?: string;
|
|
5909
|
+
required?: boolean;
|
|
5910
|
+
}>;
|
|
5911
|
+
required?: string[];
|
|
5912
|
+
example?: any;
|
|
5913
|
+
};
|
|
5914
|
+
}>;
|
|
4742
5915
|
/** Tags or categories for search */
|
|
4743
5916
|
tags?: string[];
|
|
4744
5917
|
/** Source library for the component */
|
|
@@ -4762,360 +5935,569 @@ interface ComponentDocMeta {
|
|
|
4762
5935
|
*/
|
|
4763
5936
|
declare class ComponentMetadataRegistry {
|
|
4764
5937
|
private readonly metadataMap;
|
|
5938
|
+
private readonly componentTypeAliases;
|
|
4765
5939
|
/** Register a component metadata entry. */
|
|
4766
5940
|
register(meta: ComponentDocMeta): void;
|
|
4767
5941
|
/** Retrieve metadata by its unique id. */
|
|
4768
|
-
get(id: string): ComponentDocMeta | undefined;
|
|
4769
|
-
/** List all registered metadata entries. */
|
|
4770
|
-
getAll(): ComponentDocMeta[];
|
|
4771
|
-
/**
|
|
4772
|
-
* Ensure friendly labels/descriptions for common inputs/outputs when missing.
|
|
4773
|
-
* This helps diagrams/builders present consistent naming across components.
|
|
4774
|
-
*/
|
|
4775
|
-
private normalizeMeta;
|
|
4776
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentMetadataRegistry, never>;
|
|
4777
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ComponentMetadataRegistry>;
|
|
4778
|
-
}
|
|
4779
|
-
|
|
4780
|
-
interface TelemetryEvent {
|
|
4781
|
-
name: string;
|
|
4782
|
-
payload?: any;
|
|
4783
|
-
timestamp: string;
|
|
4784
|
-
}
|
|
4785
|
-
declare class TelemetryService {
|
|
4786
|
-
record(name: string, payload?: any): void;
|
|
4787
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TelemetryService, never>;
|
|
4788
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<TelemetryService>;
|
|
4789
|
-
}
|
|
4790
|
-
|
|
4791
|
-
interface Specification<T extends object = any> {
|
|
4792
|
-
isSatisfiedBy(obj: T): boolean;
|
|
4793
|
-
}
|
|
4794
|
-
|
|
4795
|
-
interface FormActionButton {
|
|
4796
|
-
id?: string;
|
|
4797
|
-
visible: boolean;
|
|
4798
|
-
label: string;
|
|
4799
|
-
icon?: string;
|
|
4800
|
-
color?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
4801
|
-
disabled?: boolean;
|
|
4802
|
-
type?: 'button' | 'submit' | 'reset';
|
|
4803
|
-
action?: string;
|
|
4804
|
-
tooltip?: string;
|
|
4805
|
-
loading?: boolean;
|
|
4806
|
-
size?: 'small' | 'medium' | 'large';
|
|
4807
|
-
variant?: 'raised' | 'stroked' | 'flat' | 'fab';
|
|
4808
|
-
shortcut?: string;
|
|
4809
|
-
}
|
|
4810
|
-
interface FormActionsLayout {
|
|
4811
|
-
/**
|
|
4812
|
-
* Configuration for the submit button
|
|
4813
|
-
*/
|
|
4814
|
-
submit: FormActionButton;
|
|
4815
|
-
/**
|
|
4816
|
-
* Configuration for the cancel button
|
|
4817
|
-
*/
|
|
4818
|
-
cancel: FormActionButton;
|
|
4819
|
-
/**
|
|
4820
|
-
* Configuration for the reset button
|
|
4821
|
-
*/
|
|
4822
|
-
reset: FormActionButton;
|
|
4823
|
-
/**
|
|
4824
|
-
* Custom buttons
|
|
4825
|
-
*/
|
|
4826
|
-
custom?: FormActionButton[];
|
|
4827
|
-
/**
|
|
4828
|
-
* Layout and behavior
|
|
4829
|
-
*/
|
|
4830
|
-
position?: 'left' | 'center' | 'right' | 'justified' | 'split';
|
|
4831
|
-
orientation?: 'horizontal' | 'vertical';
|
|
4832
|
-
spacing?: 'compact' | 'normal' | 'spacious';
|
|
4833
|
-
sticky?: boolean;
|
|
4834
|
-
/**
|
|
4835
|
-
* Structural placement of the actions bar within the form layout.
|
|
4836
|
-
* - insideLastSection: render inside the last section's container (default)
|
|
4837
|
-
* - afterSections: render once after all sections
|
|
4838
|
-
* - top: render once before all sections
|
|
4839
|
-
*/
|
|
4840
|
-
placement?: 'insideLastSection' | 'afterSections' | 'top';
|
|
4841
|
-
/**
|
|
4842
|
-
* Responsive settings
|
|
4843
|
-
*/
|
|
4844
|
-
mobile?: {
|
|
4845
|
-
position?: 'left' | 'center' | 'right' | 'justified';
|
|
4846
|
-
orientation?: 'horizontal' | 'vertical';
|
|
4847
|
-
collapseToMenu?: boolean;
|
|
4848
|
-
};
|
|
4849
|
-
containerClassName?: string;
|
|
4850
|
-
containerStyles?: {
|
|
4851
|
-
[key: string]: any;
|
|
4852
|
-
};
|
|
4853
|
-
showSaveButton?: boolean;
|
|
4854
|
-
submitButtonLabel?: string;
|
|
4855
|
-
showCancelButton?: boolean;
|
|
4856
|
-
cancelButtonLabel?: string;
|
|
4857
|
-
showResetButton?: boolean;
|
|
4858
|
-
resetButtonLabel?: string;
|
|
4859
|
-
}
|
|
4860
|
-
interface FormApiLayout {
|
|
4861
|
-
saveEndpoint?: string;
|
|
4862
|
-
loadEndpoint?: string;
|
|
4863
|
-
saveMethod?: 'POST' | 'PUT' | 'PATCH';
|
|
4864
|
-
timeout?: number;
|
|
4865
|
-
headers?: Record<string, string>;
|
|
4866
|
-
idField?: string;
|
|
4867
|
-
beforeSave?: string;
|
|
4868
|
-
afterLoad?: string;
|
|
4869
|
-
}
|
|
4870
|
-
interface FormBehaviorLayout {
|
|
4871
|
-
confirmOnUnsavedChanges?: boolean;
|
|
4872
|
-
trackHistory?: boolean;
|
|
4873
|
-
focusFirstError?: boolean;
|
|
4874
|
-
scrollToErrors?: boolean;
|
|
4875
|
-
clearAfterSave?: boolean;
|
|
4876
|
-
redirectAfterSave?: string;
|
|
5942
|
+
get(id: string): ComponentDocMeta | undefined;
|
|
5943
|
+
/** List all registered metadata entries. */
|
|
5944
|
+
getAll(): ComponentDocMeta[];
|
|
4877
5945
|
/**
|
|
4878
|
-
*
|
|
4879
|
-
*
|
|
5946
|
+
* Ensure friendly labels/descriptions for common inputs/outputs when missing.
|
|
5947
|
+
* This helps diagrams/builders present consistent naming across components.
|
|
4880
5948
|
*/
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
5949
|
+
private normalizeMeta;
|
|
5950
|
+
private normalizeComponentType;
|
|
5951
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentMetadataRegistry, never>;
|
|
5952
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ComponentMetadataRegistry>;
|
|
4884
5953
|
}
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
5954
|
+
|
|
5955
|
+
type ComponentKeyParams = {
|
|
5956
|
+
componentType: string;
|
|
5957
|
+
componentId?: string | null;
|
|
5958
|
+
resourcePath?: string | null;
|
|
5959
|
+
instanceKey?: string | null;
|
|
5960
|
+
componentRef?: object;
|
|
5961
|
+
route?: ActivatedRoute | null;
|
|
5962
|
+
requireComponentId?: boolean;
|
|
5963
|
+
useResourcePathFallback?: boolean;
|
|
5964
|
+
};
|
|
5965
|
+
declare class ComponentKeyService {
|
|
5966
|
+
private readonly router;
|
|
5967
|
+
buildComponentId(params: ComponentKeyParams): string | null;
|
|
5968
|
+
private resolveRouteKey;
|
|
5969
|
+
private resolveRouteOverride;
|
|
5970
|
+
private buildRoutePath;
|
|
5971
|
+
private normalizeRouteKey;
|
|
5972
|
+
private stripQueryAndFragment;
|
|
5973
|
+
private normalizeResourcePath;
|
|
5974
|
+
private sanitizeSegment;
|
|
5975
|
+
private buildScopeKey;
|
|
5976
|
+
private resolveInstanceKey;
|
|
5977
|
+
private hashIfNeeded;
|
|
5978
|
+
private shortSegment;
|
|
5979
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentKeyService, never>;
|
|
5980
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ComponentKeyService>;
|
|
4889
5981
|
}
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
confirmations?: {
|
|
4896
|
-
submit?: string;
|
|
4897
|
-
cancel?: string;
|
|
4898
|
-
reset?: string;
|
|
4899
|
-
[customAction: string]: string | undefined;
|
|
4900
|
-
};
|
|
4901
|
-
customActions?: {
|
|
4902
|
-
[actionId: string]: {
|
|
4903
|
-
success?: string;
|
|
4904
|
-
error?: string;
|
|
4905
|
-
confirmation?: string;
|
|
4906
|
-
};
|
|
4907
|
-
};
|
|
4908
|
-
loading?: {
|
|
4909
|
-
submit?: string;
|
|
4910
|
-
cancel?: string;
|
|
4911
|
-
reset?: string;
|
|
4912
|
-
[customAction: string]: string | undefined;
|
|
4913
|
-
};
|
|
4914
|
-
[key: string]: any;
|
|
5982
|
+
|
|
5983
|
+
interface TelemetryEvent {
|
|
5984
|
+
name: string;
|
|
5985
|
+
payload?: unknown;
|
|
5986
|
+
timestamp: string;
|
|
4915
5987
|
}
|
|
4916
|
-
interface
|
|
4917
|
-
|
|
4918
|
-
|
|
5988
|
+
interface TelemetryTransport {
|
|
5989
|
+
emit(event: TelemetryEvent): void;
|
|
5990
|
+
}
|
|
5991
|
+
declare const PRAXIS_TELEMETRY_TRANSPORT: InjectionToken<TelemetryTransport>;
|
|
5992
|
+
declare class TelemetryService {
|
|
5993
|
+
private readonly transport;
|
|
5994
|
+
private readonly eventsSubject;
|
|
5995
|
+
readonly events$: Observable<TelemetryEvent>;
|
|
5996
|
+
record(name: string, payload?: unknown): void;
|
|
5997
|
+
emit(event: TelemetryEvent): void;
|
|
5998
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TelemetryService, never>;
|
|
5999
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TelemetryService>;
|
|
6000
|
+
}
|
|
6001
|
+
|
|
6002
|
+
type FieldSelectorRegistryMap = Record<string, FieldControlType>;
|
|
6003
|
+
declare const FIELD_SELECTOR_REGISTRY_BASE: InjectionToken<FieldSelectorRegistryMap>;
|
|
6004
|
+
declare const FIELD_SELECTOR_REGISTRY_OVERRIDES: InjectionToken<FieldSelectorRegistryMap[]>;
|
|
6005
|
+
declare const FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS: InjectionToken<boolean>;
|
|
6006
|
+
declare function provideFieldSelectorRegistryBase(map: FieldSelectorRegistryMap): Provider;
|
|
6007
|
+
declare function provideFieldSelectorRegistryOverride(map: FieldSelectorRegistryMap): Provider;
|
|
6008
|
+
|
|
6009
|
+
declare class FieldSelectorRegistry {
|
|
6010
|
+
private readonly baseMap;
|
|
6011
|
+
private readonly overrideMaps;
|
|
6012
|
+
private readonly registry;
|
|
6013
|
+
constructor();
|
|
6014
|
+
register(map: FieldSelectorRegistryMap, opts?: {
|
|
6015
|
+
overwrite?: boolean;
|
|
6016
|
+
}): void;
|
|
6017
|
+
resolve(selector: string | undefined | null): FieldControlType | undefined;
|
|
6018
|
+
getAll(): FieldSelectorRegistryMap;
|
|
6019
|
+
private applyMap;
|
|
6020
|
+
private normalizeSelector;
|
|
6021
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FieldSelectorRegistry, never>;
|
|
6022
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FieldSelectorRegistry>;
|
|
6023
|
+
}
|
|
6024
|
+
|
|
6025
|
+
type LoadingPhase$1 = 'schema' | 'mount' | 'data' | 'action';
|
|
6026
|
+
interface LoadingScope {
|
|
6027
|
+
componentType: string;
|
|
6028
|
+
componentId: string;
|
|
6029
|
+
routeKey?: string;
|
|
6030
|
+
}
|
|
6031
|
+
interface LoadingContext {
|
|
6032
|
+
scope: LoadingScope;
|
|
6033
|
+
phase: LoadingPhase$1;
|
|
4919
6034
|
label?: string;
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
styles?: {
|
|
4923
|
-
[key: string]: any;
|
|
4924
|
-
};
|
|
4925
|
-
hiddenCondition?: string | Specification<any> | null;
|
|
4926
|
-
visibilityCondition?: string | Specification<any> | null;
|
|
6035
|
+
blocking?: boolean;
|
|
6036
|
+
priority?: 'low' | 'normal' | 'high';
|
|
4927
6037
|
}
|
|
4928
|
-
|
|
4929
|
-
|
|
6038
|
+
|
|
6039
|
+
declare class LoadingOrchestrator {
|
|
6040
|
+
private readonly counters;
|
|
6041
|
+
private readonly state$;
|
|
6042
|
+
begin(ctx: LoadingContext): string;
|
|
6043
|
+
end(ctx: LoadingContext): void;
|
|
6044
|
+
watch(): Observable<LoadingContext[]>;
|
|
6045
|
+
private keyOf;
|
|
6046
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoadingOrchestrator, never>;
|
|
6047
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LoadingOrchestrator>;
|
|
4930
6048
|
}
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
titleEdit?: string;
|
|
4937
|
-
orientation: 'horizontal' | 'vertical';
|
|
4938
|
-
rows: FormRowLayout[];
|
|
4939
|
-
hiddenCondition?: string | Specification<any> | null;
|
|
6049
|
+
|
|
6050
|
+
interface PraxisLoadingRenderer {
|
|
6051
|
+
show(ctx: LoadingContext): void;
|
|
6052
|
+
update?(ctx: LoadingContext): void;
|
|
6053
|
+
hide(ctx: LoadingContext): void;
|
|
4940
6054
|
}
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
6055
|
+
declare const PRAXIS_LOADING_RENDERER: InjectionToken<PraxisLoadingRenderer>;
|
|
6056
|
+
|
|
6057
|
+
declare class PraxisLoadingInterceptor implements HttpInterceptor {
|
|
6058
|
+
private orchestrator;
|
|
6059
|
+
private renderer?;
|
|
6060
|
+
constructor(orchestrator: LoadingOrchestrator, renderer?: PraxisLoadingRenderer | undefined);
|
|
6061
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
6062
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisLoadingInterceptor, [null, { optional: true; }]>;
|
|
6063
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PraxisLoadingInterceptor>;
|
|
6064
|
+
}
|
|
6065
|
+
|
|
6066
|
+
declare class DefaultLoadingRenderer implements PraxisLoadingRenderer {
|
|
6067
|
+
private readonly rootId;
|
|
6068
|
+
private readonly styleId;
|
|
6069
|
+
show(ctx: LoadingContext): void;
|
|
6070
|
+
update(ctx: LoadingContext): void;
|
|
6071
|
+
hide(ctx: LoadingContext): void;
|
|
6072
|
+
private keyOf;
|
|
6073
|
+
private defaultLabel;
|
|
6074
|
+
private ensureRoot;
|
|
6075
|
+
private ensureStyles;
|
|
6076
|
+
private getDocument;
|
|
6077
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DefaultLoadingRenderer, never>;
|
|
6078
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DefaultLoadingRenderer>;
|
|
6079
|
+
}
|
|
6080
|
+
|
|
6081
|
+
declare function provideFieldSelectorRegistryRuntime(map: FieldSelectorRegistryMap, opts?: {
|
|
6082
|
+
overwrite?: boolean;
|
|
6083
|
+
}): Provider;
|
|
6084
|
+
|
|
6085
|
+
type PraxisToastOptions = {
|
|
6086
|
+
successDurationMs?: number;
|
|
6087
|
+
errorDurationMs?: number;
|
|
6088
|
+
successPanelClass?: string | string[];
|
|
6089
|
+
errorPanelClass?: string | string[];
|
|
6090
|
+
};
|
|
6091
|
+
declare function providePraxisToastGlobalActions(opts?: PraxisToastOptions): Provider;
|
|
6092
|
+
|
|
6093
|
+
type PraxisAnalyticsOptions = {
|
|
6094
|
+
prefix?: string;
|
|
6095
|
+
};
|
|
6096
|
+
declare function providePraxisAnalyticsGlobalActions(opts?: PraxisAnalyticsOptions): Provider;
|
|
6097
|
+
|
|
6098
|
+
declare function providePraxisLoadingDefaults(): Provider[];
|
|
6099
|
+
|
|
6100
|
+
type LoggerLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';
|
|
6101
|
+
type PraxisLoggingEnvironment = 'prod' | 'qa' | 'hml' | 'dev';
|
|
6102
|
+
interface LoggerContext {
|
|
6103
|
+
lib?: string;
|
|
6104
|
+
component?: string;
|
|
6105
|
+
actionId?: string;
|
|
6106
|
+
correlationId?: string;
|
|
6107
|
+
feature?: string;
|
|
6108
|
+
[key: string]: unknown;
|
|
6109
|
+
}
|
|
6110
|
+
interface LoggerEvent {
|
|
6111
|
+
level: LoggerLevel;
|
|
6112
|
+
message: string;
|
|
6113
|
+
timestamp: string;
|
|
6114
|
+
environment: PraxisLoggingEnvironment;
|
|
6115
|
+
context?: LoggerContext;
|
|
6116
|
+
data?: unknown;
|
|
6117
|
+
}
|
|
6118
|
+
interface LoggerThrottleConfig {
|
|
6119
|
+
enabled: boolean;
|
|
6120
|
+
windowMs: number;
|
|
6121
|
+
maxOccurrences: number;
|
|
6122
|
+
}
|
|
6123
|
+
interface LoggerPIIConfig {
|
|
6124
|
+
enabled: boolean;
|
|
6125
|
+
sensitiveKeys: string[];
|
|
6126
|
+
redactionText: string;
|
|
6127
|
+
}
|
|
6128
|
+
interface LoggerConfig {
|
|
6129
|
+
environment: PraxisLoggingEnvironment;
|
|
6130
|
+
minLevel: LoggerLevel;
|
|
6131
|
+
warnOnceEnabled: boolean;
|
|
6132
|
+
throttle: LoggerThrottleConfig;
|
|
6133
|
+
pii: LoggerPIIConfig;
|
|
6134
|
+
defaultContext?: LoggerContext;
|
|
6135
|
+
}
|
|
6136
|
+
interface LoggerLogOptions {
|
|
6137
|
+
context?: LoggerContext;
|
|
6138
|
+
data?: unknown;
|
|
6139
|
+
dedupeKey?: string;
|
|
6140
|
+
throttleKey?: string;
|
|
6141
|
+
skipThrottle?: boolean;
|
|
6142
|
+
}
|
|
6143
|
+
interface LoggerSink {
|
|
6144
|
+
log(event: LoggerEvent): void;
|
|
6145
|
+
}
|
|
6146
|
+
interface LoggerNormalizedError {
|
|
4944
6147
|
name: string;
|
|
4945
|
-
|
|
4946
|
-
|
|
4947
|
-
description?: string;
|
|
4948
|
-
effect: {
|
|
4949
|
-
condition: string | Specification<any> | null;
|
|
4950
|
-
styleClass?: string;
|
|
4951
|
-
style?: {
|
|
4952
|
-
[key: string]: any;
|
|
4953
|
-
};
|
|
4954
|
-
/** Optional validation overrides to apply when condition is satisfied */
|
|
4955
|
-
validatorOverrides?: Partial<ValidatorOptions>;
|
|
4956
|
-
};
|
|
6148
|
+
message: string;
|
|
6149
|
+
stack?: string;
|
|
4957
6150
|
}
|
|
4958
|
-
interface
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
styles?: {
|
|
4969
|
-
[key: string]: any;
|
|
6151
|
+
interface LoggerTelemetryPayload {
|
|
6152
|
+
timestamp: string;
|
|
6153
|
+
level: LoggerLevel;
|
|
6154
|
+
message: string;
|
|
6155
|
+
environment: PraxisLoggingEnvironment;
|
|
6156
|
+
context: {
|
|
6157
|
+
lib: string;
|
|
6158
|
+
component: string;
|
|
6159
|
+
actionId?: string;
|
|
6160
|
+
correlationId?: string;
|
|
4970
6161
|
};
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
6162
|
+
error?: LoggerNormalizedError;
|
|
6163
|
+
data?: unknown;
|
|
6164
|
+
}
|
|
6165
|
+
interface PraxisLoggingOptions {
|
|
6166
|
+
environment?: PraxisLoggingEnvironment;
|
|
6167
|
+
minLevel?: LoggerLevel;
|
|
6168
|
+
warnOnceEnabled?: boolean;
|
|
6169
|
+
throttle?: Partial<LoggerThrottleConfig>;
|
|
6170
|
+
pii?: Partial<LoggerPIIConfig>;
|
|
6171
|
+
defaultContext?: LoggerContext;
|
|
6172
|
+
enableConsoleSink?: boolean;
|
|
6173
|
+
enableTelemetrySink?: boolean;
|
|
6174
|
+
telemetryEventName?: string;
|
|
6175
|
+
enableGlobalErrorHandler?: boolean;
|
|
6176
|
+
sinks?: ReadonlyArray<LoggerSink>;
|
|
4978
6177
|
}
|
|
4979
6178
|
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
|
|
4987
|
-
|
|
6179
|
+
declare const LOGGER_LEVEL_PRIORITY: Record<LoggerLevel, number>;
|
|
6180
|
+
declare const LOGGER_LEVEL_BY_ENV: Record<PraxisLoggingEnvironment, LoggerLevel>;
|
|
6181
|
+
declare const PRAXIS_CORPORATE_SENSITIVE_KEYS: string[];
|
|
6182
|
+
declare function createCorporateLoggerConfig(environment?: PraxisLoggingEnvironment): LoggerConfig;
|
|
6183
|
+
declare function resolveLoggerConfig(options?: PraxisLoggingOptions): LoggerConfig;
|
|
6184
|
+
|
|
6185
|
+
declare const PRAXIS_LOGGER_CONFIG: InjectionToken<LoggerConfig>;
|
|
6186
|
+
declare const PRAXIS_LOGGER_SINKS: InjectionToken<readonly LoggerSink[]>;
|
|
6187
|
+
|
|
6188
|
+
declare class LoggerService {
|
|
6189
|
+
private readonly config;
|
|
6190
|
+
private readonly sinks;
|
|
6191
|
+
private readonly warnOnceTracker;
|
|
6192
|
+
private readonly throttleTracker;
|
|
6193
|
+
private readonly sensitiveKeys;
|
|
6194
|
+
constructor(config: LoggerConfig, sinks: ReadonlyArray<LoggerSink>);
|
|
6195
|
+
error(message: string, options?: LoggerLogOptions): void;
|
|
6196
|
+
warn(message: string, options?: LoggerLogOptions): void;
|
|
6197
|
+
info(message: string, options?: LoggerLogOptions): void;
|
|
6198
|
+
debug(message: string, options?: LoggerLogOptions): void;
|
|
6199
|
+
trace(message: string, options?: LoggerLogOptions): void;
|
|
6200
|
+
warnOnce(message: string, options?: LoggerLogOptions): void;
|
|
6201
|
+
log(level: LoggerLevel, message: string, options?: LoggerLogOptions): void;
|
|
6202
|
+
private isLevelEnabled;
|
|
6203
|
+
private shouldEmitByThrottle;
|
|
6204
|
+
private composeKey;
|
|
6205
|
+
private buildContext;
|
|
6206
|
+
private sanitizeContext;
|
|
6207
|
+
private sanitizeData;
|
|
6208
|
+
private sanitizeValue;
|
|
6209
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, never>;
|
|
6210
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LoggerService>;
|
|
4988
6211
|
}
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
6212
|
+
|
|
6213
|
+
declare class PraxisGlobalErrorHandler implements ErrorHandler {
|
|
6214
|
+
private readonly logger;
|
|
6215
|
+
private handlingError;
|
|
6216
|
+
constructor(logger: LoggerService);
|
|
6217
|
+
handleError(error: unknown): void;
|
|
6218
|
+
private safeFallback;
|
|
6219
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisGlobalErrorHandler, never>;
|
|
6220
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PraxisGlobalErrorHandler>;
|
|
6221
|
+
}
|
|
6222
|
+
|
|
6223
|
+
declare function providePraxisLogging(options?: PraxisLoggingOptions): Provider[];
|
|
6224
|
+
|
|
6225
|
+
interface NormalizedError {
|
|
6226
|
+
name: string;
|
|
4992
6227
|
message: string;
|
|
4993
|
-
|
|
4994
|
-
expectedValue?: any;
|
|
6228
|
+
stack?: string;
|
|
4995
6229
|
}
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
result?: any;
|
|
5004
|
-
error?: any;
|
|
6230
|
+
declare function normalizeUnknownError(rawError: unknown): NormalizedError;
|
|
6231
|
+
declare function extractNormalizedError(data: unknown): NormalizedError | undefined;
|
|
6232
|
+
|
|
6233
|
+
declare class LoggerWarnOnceTracker {
|
|
6234
|
+
private readonly emittedKeys;
|
|
6235
|
+
shouldEmit(key: string): boolean;
|
|
6236
|
+
clear(): void;
|
|
5005
6237
|
}
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
6238
|
+
|
|
6239
|
+
declare class LoggerThrottleTracker {
|
|
6240
|
+
private readonly config;
|
|
6241
|
+
private readonly windows;
|
|
6242
|
+
constructor(config: LoggerThrottleConfig);
|
|
6243
|
+
shouldEmit(key: string, now?: number): boolean;
|
|
6244
|
+
clear(): void;
|
|
6245
|
+
}
|
|
6246
|
+
|
|
6247
|
+
type ObservabilityAlertSeverity = 'warn' | 'error' | 'critical';
|
|
6248
|
+
type ObservabilityAlertGroupBy = 'global' | 'lib' | 'component' | 'actionId';
|
|
6249
|
+
interface ObservabilityAlertRule {
|
|
6250
|
+
id: string;
|
|
6251
|
+
name: string;
|
|
6252
|
+
severity: ObservabilityAlertSeverity;
|
|
6253
|
+
level: LoggerLevel;
|
|
6254
|
+
threshold: number;
|
|
6255
|
+
windowMs: number;
|
|
6256
|
+
groupBy: ObservabilityAlertGroupBy;
|
|
6257
|
+
throttleMs?: number;
|
|
6258
|
+
}
|
|
6259
|
+
interface ObservabilityCountBucket {
|
|
6260
|
+
key: string;
|
|
6261
|
+
count: number;
|
|
6262
|
+
}
|
|
6263
|
+
interface ObservabilityMetricsSnapshot {
|
|
6264
|
+
generatedAt: string;
|
|
6265
|
+
windowMs: number;
|
|
6266
|
+
totalEvents: number;
|
|
6267
|
+
bySeverity: Record<LoggerLevel, number>;
|
|
6268
|
+
byLib: ReadonlyArray<ObservabilityCountBucket>;
|
|
6269
|
+
byComponent: ReadonlyArray<ObservabilityCountBucket>;
|
|
6270
|
+
topActionIds: ReadonlyArray<ObservabilityCountBucket>;
|
|
6271
|
+
}
|
|
6272
|
+
interface ObservabilityAlert {
|
|
6273
|
+
severity: ObservabilityAlertSeverity;
|
|
6274
|
+
rule: {
|
|
6275
|
+
id: string;
|
|
6276
|
+
name: string;
|
|
6277
|
+
level: LoggerLevel;
|
|
6278
|
+
groupBy: ObservabilityAlertGroupBy;
|
|
6279
|
+
threshold: number;
|
|
6280
|
+
windowMs: number;
|
|
6281
|
+
};
|
|
6282
|
+
timestamp: string;
|
|
6283
|
+
observedCount: number;
|
|
6284
|
+
context: {
|
|
6285
|
+
lib?: string;
|
|
6286
|
+
component?: string;
|
|
6287
|
+
actionId?: string;
|
|
6288
|
+
correlationId?: string;
|
|
5010
6289
|
};
|
|
5011
|
-
validatedFields: string[];
|
|
5012
|
-
invalidFields: string[];
|
|
5013
|
-
formStatus: 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED';
|
|
5014
6290
|
}
|
|
5015
|
-
interface
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
6291
|
+
interface ObservabilityDashboardOptions {
|
|
6292
|
+
enabled: boolean;
|
|
6293
|
+
telemetryEventNames: ReadonlyArray<string>;
|
|
6294
|
+
defaultWindowMs: number;
|
|
6295
|
+
maxStoredEvents: number;
|
|
6296
|
+
maxStoredAlerts: number;
|
|
6297
|
+
topActionsLimit: number;
|
|
6298
|
+
defaultAlertThrottleMs: number;
|
|
6299
|
+
alertRules: ReadonlyArray<ObservabilityAlertRule>;
|
|
6300
|
+
nowProvider?: () => number;
|
|
6301
|
+
}
|
|
6302
|
+
interface ObservabilityIngestInput {
|
|
6303
|
+
payload: LoggerTelemetryPayload;
|
|
5023
6304
|
}
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
6305
|
+
|
|
6306
|
+
declare const PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES: ReadonlyArray<ObservabilityAlertRule>;
|
|
6307
|
+
declare function createCorporateObservabilityOptions(): ObservabilityDashboardOptions;
|
|
6308
|
+
declare function resolveObservabilityOptions(options?: Partial<ObservabilityDashboardOptions>): ObservabilityDashboardOptions;
|
|
6309
|
+
|
|
6310
|
+
declare const PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS: InjectionToken<ObservabilityDashboardOptions>;
|
|
6311
|
+
|
|
6312
|
+
declare class ObservabilityDashboardService {
|
|
6313
|
+
private readonly options;
|
|
6314
|
+
private readonly trackedEventNames;
|
|
6315
|
+
private readonly retentionWindowMs;
|
|
6316
|
+
private readonly recentAlerts;
|
|
6317
|
+
private readonly alertThrottleMap;
|
|
6318
|
+
private readonly records;
|
|
6319
|
+
private readonly alertsSubject;
|
|
6320
|
+
private readonly metricsSubject;
|
|
6321
|
+
readonly alerts$: Observable<ObservabilityAlert>;
|
|
6322
|
+
readonly metrics$: Observable<ObservabilityMetricsSnapshot>;
|
|
6323
|
+
constructor(options: ObservabilityDashboardOptions, telemetryService: TelemetryService | null);
|
|
6324
|
+
ingestPayload(payload: LoggerTelemetryPayload): void;
|
|
6325
|
+
ingestTelemetryEvent(event: TelemetryEvent): void;
|
|
6326
|
+
getSnapshot(windowMs?: number): ObservabilityMetricsSnapshot;
|
|
6327
|
+
getRecentAlerts(limit?: number): ReadonlyArray<ObservabilityAlert>;
|
|
6328
|
+
clear(): void;
|
|
6329
|
+
private evaluateAlerts;
|
|
6330
|
+
private buildAlertContext;
|
|
6331
|
+
private groupRecordsByRule;
|
|
6332
|
+
private trimRecords;
|
|
6333
|
+
private buildSnapshot;
|
|
6334
|
+
private incrementCounter;
|
|
6335
|
+
private toSortedBuckets;
|
|
6336
|
+
private normalizePayload;
|
|
6337
|
+
private toLoggerTelemetryPayload;
|
|
6338
|
+
private toTimestampMs;
|
|
6339
|
+
private normalizeWindowMs;
|
|
6340
|
+
private now;
|
|
6341
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ObservabilityDashboardService, [null, { optional: true; }]>;
|
|
6342
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ObservabilityDashboardService>;
|
|
5030
6343
|
}
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
formId?: string;
|
|
5036
|
-
resourcePath?: string;
|
|
5037
|
-
hasLocalConfig?: boolean;
|
|
5038
|
-
};
|
|
5039
|
-
recoverable: boolean;
|
|
5040
|
-
userMessage: string;
|
|
6344
|
+
|
|
6345
|
+
declare class ConsoleLoggerSink implements LoggerSink {
|
|
6346
|
+
log(event: LoggerEvent): void;
|
|
6347
|
+
private resolveMethod;
|
|
5041
6348
|
}
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
6349
|
+
|
|
6350
|
+
interface TelemetryLoggerSinkOptions {
|
|
6351
|
+
eventName?: string;
|
|
6352
|
+
sensitiveKeys?: string[];
|
|
6353
|
+
redactionText?: string;
|
|
6354
|
+
}
|
|
6355
|
+
declare class TelemetryLoggerSink implements LoggerSink {
|
|
6356
|
+
private readonly telemetry;
|
|
6357
|
+
private readonly options;
|
|
6358
|
+
private readonly sensitiveKeys;
|
|
6359
|
+
private readonly redactionText;
|
|
6360
|
+
constructor(telemetry: TelemetryService, options?: TelemetryLoggerSinkOptions);
|
|
6361
|
+
log(event: LoggerEvent): void;
|
|
6362
|
+
private buildPayload;
|
|
6363
|
+
private sanitizeValue;
|
|
6364
|
+
private sanitizeText;
|
|
5047
6365
|
}
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
6366
|
+
|
|
6367
|
+
declare const OVERLAY_DECISION_MATRIX: InjectionToken<OverlayDecisionMatrix>;
|
|
6368
|
+
declare function provideOverlayDecisionMatrix(matrix?: OverlayDecisionMatrix): EnvironmentProviders;
|
|
6369
|
+
|
|
6370
|
+
declare const GLOBAL_CONFIG: InjectionToken<Partial<GlobalConfig>>;
|
|
6371
|
+
interface PraxisAuthContext {
|
|
6372
|
+
ready?: () => Promise<void>;
|
|
6373
|
+
token?: () => string | undefined;
|
|
6374
|
+
tenant?: () => string | undefined;
|
|
6375
|
+
locale?: () => string | undefined;
|
|
6376
|
+
}
|
|
6377
|
+
interface PraxisGlobalConfigBootstrapOptions {
|
|
6378
|
+
auth?: PraxisAuthContext;
|
|
6379
|
+
remote?: {
|
|
6380
|
+
baseUrl?: string;
|
|
6381
|
+
apiPath?: string;
|
|
6382
|
+
};
|
|
6383
|
+
headers?: Record<string, string>;
|
|
6384
|
+
headersFactory?: () => Record<string, string>;
|
|
6385
|
+
includeDefaultHeaders?: boolean;
|
|
6386
|
+
blocking?: 'auth+global' | 'global' | 'none';
|
|
6387
|
+
errorPolicy?: 'fail' | 'ignore';
|
|
6388
|
+
timeoutMs?: number;
|
|
6389
|
+
}
|
|
6390
|
+
declare const PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS: InjectionToken<PraxisGlobalConfigBootstrapOptions>;
|
|
6391
|
+
declare const PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY: InjectionToken<() => Promise<void>>;
|
|
6392
|
+
declare const PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER: InjectionToken<() => string | undefined>;
|
|
6393
|
+
declare function provideGlobalConfig(partial: Partial<GlobalConfig>): Provider;
|
|
6394
|
+
|
|
6395
|
+
/** Set the current tenant for GlobalConfigService at app boot. */
|
|
6396
|
+
declare function provideGlobalConfigTenant(tenantId: string): Provider;
|
|
6397
|
+
/** Block app bootstrap until the global config is loaded for the active tenant. */
|
|
6398
|
+
declare function provideGlobalConfigReady(): Provider;
|
|
6399
|
+
/** Seed global config once when no storage exists yet (idempotent). */
|
|
6400
|
+
declare function provideGlobalConfigSeed(seed: Partial<GlobalConfig>): Provider;
|
|
6401
|
+
/** Fetch remote JSON and merge as global config at boot. */
|
|
6402
|
+
declare function provideRemoteGlobalConfig(url: string): Provider;
|
|
6403
|
+
declare function providePraxisGlobalConfigBootstrap(options?: PraxisGlobalConfigBootstrapOptions): Provider[];
|
|
6404
|
+
|
|
6405
|
+
type PraxisGlobalActionsOptions = {
|
|
6406
|
+
dialog?: boolean | GlobalDialogService;
|
|
6407
|
+
toast?: boolean | GlobalToastService;
|
|
6408
|
+
analytics?: boolean | GlobalAnalyticsService;
|
|
6409
|
+
api?: boolean | GlobalApiClient;
|
|
6410
|
+
guards?: boolean | GlobalRouteGuardResolver;
|
|
6411
|
+
};
|
|
6412
|
+
declare function providePraxisGlobalActions(opts?: PraxisGlobalActionsOptions): Provider[];
|
|
6413
|
+
|
|
6414
|
+
declare const GLOBAL_ACTION_HANDLERS: InjectionToken<GlobalActionHandlerEntry[]>;
|
|
6415
|
+
declare const GLOBAL_DIALOG_SERVICE: InjectionToken<GlobalDialogService>;
|
|
6416
|
+
declare const GLOBAL_TOAST_SERVICE: InjectionToken<GlobalToastService>;
|
|
6417
|
+
declare const GLOBAL_ANALYTICS_SERVICE: InjectionToken<GlobalAnalyticsService>;
|
|
6418
|
+
declare const GLOBAL_API_CLIENT: InjectionToken<GlobalApiClient>;
|
|
6419
|
+
declare const GLOBAL_ROUTE_GUARD_RESOLVER: InjectionToken<GlobalRouteGuardResolver>;
|
|
6420
|
+
declare function provideGlobalActionHandler(entry: GlobalActionHandlerEntry): Provider;
|
|
6421
|
+
|
|
6422
|
+
type GlobalActionCatalogEntry = {
|
|
6423
|
+
id: string;
|
|
6424
|
+
label: string;
|
|
6425
|
+
description?: string;
|
|
6426
|
+
icon?: string;
|
|
6427
|
+
payloadSchema?: {
|
|
6428
|
+
type: 'object' | 'string' | 'number' | 'boolean' | 'array';
|
|
6429
|
+
properties?: Record<string, {
|
|
6430
|
+
type: string;
|
|
6431
|
+
description?: string;
|
|
6432
|
+
required?: boolean;
|
|
6433
|
+
}>;
|
|
6434
|
+
required?: string[];
|
|
6435
|
+
example?: any;
|
|
6436
|
+
};
|
|
6437
|
+
};
|
|
6438
|
+
declare const GLOBAL_ACTION_CATALOG$1: InjectionToken<readonly GlobalActionCatalogEntry[][]>;
|
|
6439
|
+
declare function provideGlobalActionCatalog(entries: GlobalActionCatalogEntry[]): Provider;
|
|
6440
|
+
declare function getGlobalActionCatalog(catalog: ReadonlyArray<GlobalActionCatalogEntry[]> | null | undefined): GlobalActionCatalogEntry[];
|
|
6441
|
+
declare const PRAXIS_GLOBAL_ACTION_CATALOG: GlobalActionCatalogEntry[];
|
|
6442
|
+
declare function providePraxisGlobalActionCatalog(): Provider[];
|
|
6443
|
+
|
|
6444
|
+
type GlobalActionId = 'navigate' | 'openUrl' | 'showAlert' | 'log' | 'openDialog' | 'confirm' | 'alert' | 'prompt' | 'submitForm' | 'resetForm' | 'validateForm' | 'clearValidation' | 'saveFormDraft' | 'loadFormDraft' | 'clearFormDraft' | 'apiCall' | 'download' | 'copyToClipboard' | 'refreshOptions' | 'loadDependentData';
|
|
6445
|
+
type GlobalActionParam = {
|
|
6446
|
+
required?: boolean;
|
|
6447
|
+
label?: string;
|
|
6448
|
+
placeholder?: string;
|
|
6449
|
+
hint?: string;
|
|
6450
|
+
example?: string;
|
|
6451
|
+
};
|
|
6452
|
+
interface GlobalActionSpec {
|
|
6453
|
+
id: GlobalActionId;
|
|
6454
|
+
label: string;
|
|
6455
|
+
description: string;
|
|
6456
|
+
param?: GlobalActionParam;
|
|
5052
6457
|
}
|
|
6458
|
+
declare const GLOBAL_ACTION_CATALOG: GlobalActionSpec[];
|
|
5053
6459
|
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
device: DeviceKind;
|
|
5058
|
-
fieldCount: number;
|
|
5059
|
-
dependencyCount: number;
|
|
5060
|
-
}
|
|
5061
|
-
interface OverlayDecision {
|
|
5062
|
-
pattern: OverlayPattern;
|
|
5063
|
-
config?: Record<string, unknown>;
|
|
5064
|
-
reason?: string;
|
|
5065
|
-
}
|
|
5066
|
-
interface OverlayRange {
|
|
5067
|
-
min?: number;
|
|
5068
|
-
max?: number;
|
|
5069
|
-
}
|
|
5070
|
-
interface OverlayRuleMatch {
|
|
5071
|
-
device?: DeviceKind[];
|
|
5072
|
-
fieldCount?: OverlayRange;
|
|
5073
|
-
dependencyCount?: OverlayRange;
|
|
5074
|
-
any?: OverlayRuleMatch[];
|
|
6460
|
+
interface SettingsPanelRef<T = any> {
|
|
6461
|
+
applied$: Observable<T>;
|
|
6462
|
+
saved$: Observable<T>;
|
|
5075
6463
|
}
|
|
5076
|
-
interface
|
|
5077
|
-
|
|
5078
|
-
|
|
6464
|
+
interface SettingsPanelOpenContent<TInputs = any> {
|
|
6465
|
+
component: Type<any>;
|
|
6466
|
+
inputs?: TInputs;
|
|
5079
6467
|
}
|
|
5080
|
-
interface
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
};
|
|
5085
|
-
dependencyCount: {
|
|
5086
|
-
low_max: number;
|
|
5087
|
-
medium_max: number;
|
|
5088
|
-
};
|
|
6468
|
+
interface SettingsPanelOpenOptions<TInputs = any> {
|
|
6469
|
+
id: string;
|
|
6470
|
+
title: string;
|
|
6471
|
+
content: SettingsPanelOpenContent<TInputs>;
|
|
5089
6472
|
}
|
|
5090
|
-
interface
|
|
5091
|
-
|
|
5092
|
-
description?: string;
|
|
5093
|
-
thresholds: OverlayThresholds;
|
|
5094
|
-
rules_ordered: OverlayRule[];
|
|
5095
|
-
fallback: OverlayDecision;
|
|
5096
|
-
ui_hints?: Record<string, unknown>;
|
|
6473
|
+
interface SettingsPanelBridge {
|
|
6474
|
+
open<TInputs = any, TOut = any>(opts: SettingsPanelOpenOptions<TInputs>): SettingsPanelRef<TOut>;
|
|
5097
6475
|
}
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
6476
|
+
declare const SETTINGS_PANEL_BRIDGE: InjectionToken<SettingsPanelBridge>;
|
|
6477
|
+
declare const SETTINGS_PANEL_DATA: InjectionToken<any>;
|
|
6478
|
+
interface SettingsValueProvider {
|
|
6479
|
+
isDirty$: Observable<boolean>;
|
|
6480
|
+
isValid$: Observable<boolean>;
|
|
6481
|
+
isBusy$: Observable<boolean>;
|
|
6482
|
+
getSettingsValue(): any;
|
|
6483
|
+
onSave?(): any;
|
|
6484
|
+
reset?(): void;
|
|
5101
6485
|
}
|
|
5102
6486
|
|
|
5103
|
-
declare const
|
|
5104
|
-
declare
|
|
5105
|
-
|
|
5106
|
-
|
|
5107
|
-
decide(ctx: OverlayDecisionContext): OverlayDecision;
|
|
5108
|
-
explain(ctx: OverlayDecisionContext): string;
|
|
5109
|
-
private evaluate;
|
|
5110
|
-
private matches;
|
|
5111
|
-
private log;
|
|
5112
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OverlayDeciderService, never>;
|
|
5113
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OverlayDeciderService>;
|
|
5114
|
-
}
|
|
6487
|
+
declare const TABLE_CONFIG_EDITOR: InjectionToken<Type<any>>;
|
|
6488
|
+
declare const STEPPER_CONFIG_EDITOR: InjectionToken<Type<any>>;
|
|
6489
|
+
declare const DYNAMIC_PAGE_SHELL_EDITOR: InjectionToken<Type<any>>;
|
|
6490
|
+
declare const DYNAMIC_PAGE_CONFIG_EDITOR: InjectionToken<Type<any>>;
|
|
5115
6491
|
|
|
5116
|
-
declare const
|
|
5117
|
-
declare function provideOverlayDecisionMatrix(matrix?: OverlayDecisionMatrix): EnvironmentProviders;
|
|
6492
|
+
declare const PRAXIS_LOADING_CTX: HttpContextToken<LoadingContext | null>;
|
|
5118
6493
|
|
|
6494
|
+
interface MaterialTimeTrackShift {
|
|
6495
|
+
id?: string;
|
|
6496
|
+
label?: string;
|
|
6497
|
+
start?: string | number;
|
|
6498
|
+
end?: string | number;
|
|
6499
|
+
color?: string;
|
|
6500
|
+
}
|
|
5119
6501
|
interface MaterialTimeRangeMetadata extends FieldMetadata {
|
|
5120
6502
|
controlType: typeof FieldControlType.TIME_RANGE;
|
|
5121
6503
|
showSeconds?: boolean;
|
|
@@ -5129,6 +6511,8 @@ interface MaterialTimeRangeMetadata extends FieldMetadata {
|
|
|
5129
6511
|
endPlaceholder?: string;
|
|
5130
6512
|
startLabel?: string;
|
|
5131
6513
|
endLabel?: string;
|
|
6514
|
+
/** Inline gradient segments for turn/shift visualization in range slider track. */
|
|
6515
|
+
inlineTimeTrackShifts?: Array<string | MaterialTimeTrackShift>;
|
|
5132
6516
|
validators?: ValidatorOptions & {
|
|
5133
6517
|
rangeMessage?: string;
|
|
5134
6518
|
minDistanceMessage?: string;
|
|
@@ -5209,14 +6593,227 @@ interface FormHookDeclarationLite {
|
|
|
5209
6593
|
timeoutMs?: number;
|
|
5210
6594
|
args?: any;
|
|
5211
6595
|
}
|
|
5212
|
-
interface FormHooksLayout {
|
|
5213
|
-
beforeInit?: FormHookDeclarationLite[];
|
|
5214
|
-
afterInit?: FormHookDeclarationLite[];
|
|
5215
|
-
beforeValidate?: FormHookDeclarationLite[];
|
|
5216
|
-
afterValidate?: FormHookDeclarationLite[];
|
|
5217
|
-
beforeSubmit?: FormHookDeclarationLite[];
|
|
5218
|
-
afterSubmit?: FormHookDeclarationLite[];
|
|
5219
|
-
onError?: FormHookDeclarationLite[];
|
|
6596
|
+
interface FormHooksLayout {
|
|
6597
|
+
beforeInit?: FormHookDeclarationLite[];
|
|
6598
|
+
afterInit?: FormHookDeclarationLite[];
|
|
6599
|
+
beforeValidate?: FormHookDeclarationLite[];
|
|
6600
|
+
afterValidate?: FormHookDeclarationLite[];
|
|
6601
|
+
beforeSubmit?: FormHookDeclarationLite[];
|
|
6602
|
+
afterSubmit?: FormHookDeclarationLite[];
|
|
6603
|
+
onError?: FormHookDeclarationLite[];
|
|
6604
|
+
}
|
|
6605
|
+
|
|
6606
|
+
interface Specification<T extends object = any> {
|
|
6607
|
+
isSatisfiedBy(obj: T): boolean;
|
|
6608
|
+
}
|
|
6609
|
+
|
|
6610
|
+
interface FormActionButton {
|
|
6611
|
+
id?: string;
|
|
6612
|
+
visible: boolean;
|
|
6613
|
+
label: string;
|
|
6614
|
+
icon?: string;
|
|
6615
|
+
className?: string;
|
|
6616
|
+
style?: Record<string, any>;
|
|
6617
|
+
color?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
6618
|
+
disabled?: boolean;
|
|
6619
|
+
type?: 'button' | 'submit' | 'reset';
|
|
6620
|
+
action?: string;
|
|
6621
|
+
tooltip?: string;
|
|
6622
|
+
loading?: boolean;
|
|
6623
|
+
size?: 'small' | 'medium' | 'large';
|
|
6624
|
+
variant?: 'raised' | 'stroked' | 'flat' | 'fab';
|
|
6625
|
+
shortcut?: string;
|
|
6626
|
+
}
|
|
6627
|
+
interface FormActionsLayout {
|
|
6628
|
+
/**
|
|
6629
|
+
* Configuration for the submit button
|
|
6630
|
+
*/
|
|
6631
|
+
submit: FormActionButton;
|
|
6632
|
+
/**
|
|
6633
|
+
* Configuration for the cancel button
|
|
6634
|
+
*/
|
|
6635
|
+
cancel: FormActionButton;
|
|
6636
|
+
/**
|
|
6637
|
+
* Configuration for the reset button
|
|
6638
|
+
*/
|
|
6639
|
+
reset: FormActionButton;
|
|
6640
|
+
/**
|
|
6641
|
+
* Custom buttons
|
|
6642
|
+
*/
|
|
6643
|
+
custom?: FormActionButton[];
|
|
6644
|
+
/**
|
|
6645
|
+
* Layout and behavior
|
|
6646
|
+
*/
|
|
6647
|
+
position?: 'left' | 'center' | 'right' | 'justified' | 'split';
|
|
6648
|
+
orientation?: 'horizontal' | 'vertical';
|
|
6649
|
+
spacing?: 'compact' | 'normal' | 'spacious';
|
|
6650
|
+
sticky?: boolean;
|
|
6651
|
+
/** Exibir divisor superior (linha) acima da barra de ações */
|
|
6652
|
+
divider?: boolean;
|
|
6653
|
+
/**
|
|
6654
|
+
* Structural placement of the actions bar within the form layout.
|
|
6655
|
+
* - afterSections: render once after all sections (default)
|
|
6656
|
+
* - insideLastSection: render inside the last section's container
|
|
6657
|
+
* - top: render once before all sections
|
|
6658
|
+
*/
|
|
6659
|
+
placement?: 'insideLastSection' | 'afterSections' | 'top';
|
|
6660
|
+
/**
|
|
6661
|
+
* Responsive settings
|
|
6662
|
+
*/
|
|
6663
|
+
mobile?: {
|
|
6664
|
+
position?: 'left' | 'center' | 'right' | 'justified';
|
|
6665
|
+
orientation?: 'horizontal' | 'vertical';
|
|
6666
|
+
collapseToMenu?: boolean;
|
|
6667
|
+
};
|
|
6668
|
+
containerClassName?: string;
|
|
6669
|
+
containerStyles?: {
|
|
6670
|
+
[key: string]: any;
|
|
6671
|
+
};
|
|
6672
|
+
showSaveButton?: boolean;
|
|
6673
|
+
submitButtonLabel?: string;
|
|
6674
|
+
showCancelButton?: boolean;
|
|
6675
|
+
cancelButtonLabel?: string;
|
|
6676
|
+
showResetButton?: boolean;
|
|
6677
|
+
resetButtonLabel?: string;
|
|
6678
|
+
}
|
|
6679
|
+
interface FormApiLayout {
|
|
6680
|
+
saveEndpoint?: string;
|
|
6681
|
+
loadEndpoint?: string;
|
|
6682
|
+
saveMethod?: 'POST' | 'PUT' | 'PATCH';
|
|
6683
|
+
timeout?: number;
|
|
6684
|
+
headers?: Record<string, string>;
|
|
6685
|
+
idField?: string;
|
|
6686
|
+
beforeSave?: string;
|
|
6687
|
+
afterLoad?: string;
|
|
6688
|
+
}
|
|
6689
|
+
interface FormBehaviorLayout {
|
|
6690
|
+
confirmOnUnsavedChanges?: boolean;
|
|
6691
|
+
trackHistory?: boolean;
|
|
6692
|
+
focusFirstError?: boolean;
|
|
6693
|
+
scrollToErrors?: boolean;
|
|
6694
|
+
clearAfterSave?: boolean;
|
|
6695
|
+
redirectAfterSave?: string;
|
|
6696
|
+
/** Disable subtle mount animation on initial render. */
|
|
6697
|
+
disableMountAnimation?: boolean;
|
|
6698
|
+
/** Optional mount animation tuning (ms/px). */
|
|
6699
|
+
mountAnimation?: {
|
|
6700
|
+
durationMs?: number;
|
|
6701
|
+
offsetPx?: number;
|
|
6702
|
+
staggerMs?: number;
|
|
6703
|
+
};
|
|
6704
|
+
/**
|
|
6705
|
+
* Enables afterValidate hooks to run reactively on form.valueChanges.
|
|
6706
|
+
* Default is false.
|
|
6707
|
+
*/
|
|
6708
|
+
reactiveValidation?: boolean;
|
|
6709
|
+
/** Debounce for reactive afterValidate hooks (ms). Default 150ms. */
|
|
6710
|
+
reactiveValidationDebounceMs?: number;
|
|
6711
|
+
}
|
|
6712
|
+
interface FormMetadataLayout {
|
|
6713
|
+
formCode?: string;
|
|
6714
|
+
version?: string;
|
|
6715
|
+
[key: string]: any;
|
|
6716
|
+
}
|
|
6717
|
+
interface FormMessagesLayout {
|
|
6718
|
+
updateRegistrySuccess?: string;
|
|
6719
|
+
createRegistrySuccess?: string;
|
|
6720
|
+
updateRegistryError?: string;
|
|
6721
|
+
createRegistryError?: string;
|
|
6722
|
+
confirmations?: {
|
|
6723
|
+
submit?: string;
|
|
6724
|
+
cancel?: string;
|
|
6725
|
+
reset?: string;
|
|
6726
|
+
[customAction: string]: string | undefined;
|
|
6727
|
+
};
|
|
6728
|
+
customActions?: {
|
|
6729
|
+
[actionId: string]: {
|
|
6730
|
+
success?: string;
|
|
6731
|
+
error?: string;
|
|
6732
|
+
confirmation?: string;
|
|
6733
|
+
};
|
|
6734
|
+
};
|
|
6735
|
+
loading?: {
|
|
6736
|
+
submit?: string;
|
|
6737
|
+
cancel?: string;
|
|
6738
|
+
reset?: string;
|
|
6739
|
+
[customAction: string]: string | undefined;
|
|
6740
|
+
};
|
|
6741
|
+
[key: string]: any;
|
|
6742
|
+
}
|
|
6743
|
+
interface FormRowLayout {
|
|
6744
|
+
id: string;
|
|
6745
|
+
name?: string;
|
|
6746
|
+
label?: string;
|
|
6747
|
+
orientation: 'horizontal' | 'vertical';
|
|
6748
|
+
fields: FieldMetadata[];
|
|
6749
|
+
styles?: {
|
|
6750
|
+
[key: string]: any;
|
|
6751
|
+
};
|
|
6752
|
+
hiddenCondition?: string | Specification<any> | null;
|
|
6753
|
+
visibilityCondition?: string | Specification<any> | null;
|
|
6754
|
+
}
|
|
6755
|
+
interface NestedFieldsetLayout extends FormRowLayout {
|
|
6756
|
+
fieldsets?: FieldsetLayout[];
|
|
6757
|
+
}
|
|
6758
|
+
interface FieldsetLayout {
|
|
6759
|
+
id: string;
|
|
6760
|
+
title: string;
|
|
6761
|
+
titleNew?: string;
|
|
6762
|
+
titleView?: string;
|
|
6763
|
+
titleEdit?: string;
|
|
6764
|
+
orientation: 'horizontal' | 'vertical';
|
|
6765
|
+
rows: FormRowLayout[];
|
|
6766
|
+
hiddenCondition?: string | Specification<any> | null;
|
|
6767
|
+
}
|
|
6768
|
+
type FormRuleTargetType = 'field' | 'section' | 'action' | 'row' | 'column';
|
|
6769
|
+
interface FormLayoutRule {
|
|
6770
|
+
id: string;
|
|
6771
|
+
name: string;
|
|
6772
|
+
description?: string;
|
|
6773
|
+
/**
|
|
6774
|
+
* Tipo de alvo. Ausente em regras legadas — deve ser inferido como 'field'.
|
|
6775
|
+
*/
|
|
6776
|
+
targetType?: FormRuleTargetType;
|
|
6777
|
+
/**
|
|
6778
|
+
* IDs canônicos dos alvos (sem prefixo). Para compatibilidade, `targets` pode
|
|
6779
|
+
* vir vazio e deve ser inferido a partir de `targetFields` legados.
|
|
6780
|
+
*/
|
|
6781
|
+
targets?: string[];
|
|
6782
|
+
/**
|
|
6783
|
+
* Alias legado para alvos de campo (mantido para retrocompatibilidade).
|
|
6784
|
+
*/
|
|
6785
|
+
targetFields?: string[];
|
|
6786
|
+
/**
|
|
6787
|
+
* Contexto legado (ex.: visibility/readOnly/validation). O runtime deve
|
|
6788
|
+
* inferir propriedades a partir dele quando `properties` não for informado.
|
|
6789
|
+
*/
|
|
6790
|
+
context?: 'visibility' | 'readOnly' | 'style' | 'validation' | 'notification';
|
|
6791
|
+
effect: {
|
|
6792
|
+
condition: string | Specification<any> | null;
|
|
6793
|
+
properties?: Record<string, any>;
|
|
6794
|
+
propertiesWhenFalse?: Record<string, any>;
|
|
6795
|
+
};
|
|
6796
|
+
}
|
|
6797
|
+
interface FormLayout {
|
|
6798
|
+
formTitle?: string;
|
|
6799
|
+
formDescription?: string;
|
|
6800
|
+
formTitleCreate?: string;
|
|
6801
|
+
formDescriptionCreate?: string;
|
|
6802
|
+
formTitleView?: string;
|
|
6803
|
+
formDescriptionView?: string;
|
|
6804
|
+
formTitleEdit?: string;
|
|
6805
|
+
formDescriptionEdit?: string;
|
|
6806
|
+
className?: string;
|
|
6807
|
+
styles?: {
|
|
6808
|
+
[key: string]: any;
|
|
6809
|
+
};
|
|
6810
|
+
actions?: FormActionsLayout;
|
|
6811
|
+
api?: FormApiLayout;
|
|
6812
|
+
behavior?: FormBehaviorLayout;
|
|
6813
|
+
metadata?: FormMetadataLayout;
|
|
6814
|
+
messages?: FormMessagesLayout;
|
|
6815
|
+
fieldsets: FieldsetLayout[];
|
|
6816
|
+
formRules?: FormLayoutRule[];
|
|
5220
6817
|
}
|
|
5221
6818
|
|
|
5222
6819
|
type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
@@ -5277,6 +6874,10 @@ interface FormSection {
|
|
|
5277
6874
|
/** Optional icon name (Material Icons ligature or SVG name) */
|
|
5278
6875
|
icon?: string;
|
|
5279
6876
|
description?: string;
|
|
6877
|
+
/** When true, allows the section content to be collapsed/expanded in the UI. */
|
|
6878
|
+
collapsible?: boolean;
|
|
6879
|
+
/** Initial collapsed state when `collapsible` is true. */
|
|
6880
|
+
collapsed?: boolean;
|
|
5280
6881
|
/** Optional extra space after the entire section (px). */
|
|
5281
6882
|
gapBottom?: number;
|
|
5282
6883
|
/** Optional gap below the title (px) */
|
|
@@ -5287,6 +6888,13 @@ interface FormSection {
|
|
|
5287
6888
|
titleStyle?: string;
|
|
5288
6889
|
/** Optional typography preset for the description */
|
|
5289
6890
|
descriptionStyle?: string;
|
|
6891
|
+
/** Optional colors for title/description (CSS color or token) */
|
|
6892
|
+
titleColor?: string;
|
|
6893
|
+
descriptionColor?: string;
|
|
6894
|
+
/** Optional alignment for the header content */
|
|
6895
|
+
headerAlign?: 'start' | 'center';
|
|
6896
|
+
/** Optional tooltip for the section header */
|
|
6897
|
+
headerTooltip?: string;
|
|
5290
6898
|
rows: FormRow[];
|
|
5291
6899
|
}
|
|
5292
6900
|
interface FormConfig {
|
|
@@ -5313,6 +6921,24 @@ interface FormConfig {
|
|
|
5313
6921
|
formRulesState?: unknown;
|
|
5314
6922
|
/** Optional lifecycle hooks declared per stage */
|
|
5315
6923
|
hooks?: FormHooksLayout;
|
|
6924
|
+
/**
|
|
6925
|
+
* Dicas e tooltips para modos de dados e modos globais de UI.
|
|
6926
|
+
* Útil para padronizar mensagens didáticas no host.
|
|
6927
|
+
*/
|
|
6928
|
+
hints?: FormModeHints;
|
|
6929
|
+
}
|
|
6930
|
+
interface FormModeHints {
|
|
6931
|
+
dataModes: {
|
|
6932
|
+
create: string;
|
|
6933
|
+
edit: string;
|
|
6934
|
+
view: string;
|
|
6935
|
+
};
|
|
6936
|
+
uiModes: {
|
|
6937
|
+
presentation: string;
|
|
6938
|
+
readonly: string;
|
|
6939
|
+
disabled: string;
|
|
6940
|
+
visible: string;
|
|
6941
|
+
};
|
|
5316
6942
|
}
|
|
5317
6943
|
interface FormConfigMetadata {
|
|
5318
6944
|
/** Configuration version for migration support */
|
|
@@ -5367,6 +6993,10 @@ declare function isValidFormConfig(config: any): config is FormConfig;
|
|
|
5367
6993
|
* Cria configuração vazia para inicialização
|
|
5368
6994
|
*/
|
|
5369
6995
|
declare function createEmptyFormConfig(): FormConfig;
|
|
6996
|
+
/**
|
|
6997
|
+
* Default hint texts for data and UI modes.
|
|
6998
|
+
*/
|
|
6999
|
+
declare function getDefaultFormHints(): FormModeHints;
|
|
5370
7000
|
/**
|
|
5371
7001
|
* Merges field metadata into a FormConfig
|
|
5372
7002
|
* Useful when combining layout with server-loaded metadata
|
|
@@ -5412,8 +7042,99 @@ declare function syncWithServerMetadata(localConfig: FormConfig, serverMetadata:
|
|
|
5412
7042
|
*/
|
|
5413
7043
|
declare function convertFormLayoutToConfig(formLayout: any): FormConfig;
|
|
5414
7044
|
|
|
7045
|
+
interface FormValueChangeEvent {
|
|
7046
|
+
formData: any;
|
|
7047
|
+
changedField?: string;
|
|
7048
|
+
previousValue?: any;
|
|
7049
|
+
currentValue?: any;
|
|
7050
|
+
changedFields: string[];
|
|
7051
|
+
isValid: boolean;
|
|
7052
|
+
entityId?: string | number;
|
|
7053
|
+
}
|
|
7054
|
+
interface ValidationError {
|
|
7055
|
+
field: string;
|
|
7056
|
+
type: 'required' | 'pattern' | 'min' | 'max' | 'email' | 'custom';
|
|
7057
|
+
message: string;
|
|
7058
|
+
currentValue?: any;
|
|
7059
|
+
expectedValue?: any;
|
|
7060
|
+
}
|
|
7061
|
+
interface FormSubmitEvent {
|
|
7062
|
+
stage: 'before' | 'after' | 'error';
|
|
7063
|
+
formData: any;
|
|
7064
|
+
isValid: boolean;
|
|
7065
|
+
validationErrors?: ValidationError[];
|
|
7066
|
+
entityId?: string | number;
|
|
7067
|
+
operation: 'create' | 'update';
|
|
7068
|
+
result?: any;
|
|
7069
|
+
error?: any;
|
|
7070
|
+
}
|
|
7071
|
+
interface FormValidationEvent {
|
|
7072
|
+
isValid: boolean;
|
|
7073
|
+
errors: {
|
|
7074
|
+
[fieldName: string]: ValidationError[];
|
|
7075
|
+
};
|
|
7076
|
+
validatedFields: string[];
|
|
7077
|
+
invalidFields: string[];
|
|
7078
|
+
formStatus: 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED';
|
|
7079
|
+
}
|
|
7080
|
+
interface FormEntityEvent {
|
|
7081
|
+
operation: 'load' | 'create' | 'update' | 'delete';
|
|
7082
|
+
entityId?: string | number;
|
|
7083
|
+
entityData?: any;
|
|
7084
|
+
success: boolean;
|
|
7085
|
+
result?: any;
|
|
7086
|
+
error?: any;
|
|
7087
|
+
timestamp: Date;
|
|
7088
|
+
}
|
|
7089
|
+
interface FormReadyEvent {
|
|
7090
|
+
formGroup: FormGroup;
|
|
7091
|
+
fieldsMetadata: FieldMetadata[];
|
|
7092
|
+
layout?: FormLayout;
|
|
7093
|
+
hasEntity: boolean;
|
|
7094
|
+
entityId?: string | number;
|
|
7095
|
+
}
|
|
7096
|
+
interface FormInitializationError {
|
|
7097
|
+
stage: 'config-load' | 'schema-fetch' | 'sync' | 'form-build';
|
|
7098
|
+
error: Error;
|
|
7099
|
+
context?: {
|
|
7100
|
+
formId?: string;
|
|
7101
|
+
resourcePath?: string;
|
|
7102
|
+
hasLocalConfig?: boolean;
|
|
7103
|
+
};
|
|
7104
|
+
recoverable: boolean;
|
|
7105
|
+
userMessage: string;
|
|
7106
|
+
}
|
|
7107
|
+
interface FormCustomActionEvent {
|
|
7108
|
+
actionId: string;
|
|
7109
|
+
formData: any;
|
|
7110
|
+
isValid: boolean;
|
|
7111
|
+
source: 'button' | 'shortcut';
|
|
7112
|
+
}
|
|
7113
|
+
interface FormActionConfirmationEvent {
|
|
7114
|
+
actionId: 'submit' | 'cancel' | 'reset' | string;
|
|
7115
|
+
message: string;
|
|
7116
|
+
confirmed: boolean;
|
|
7117
|
+
}
|
|
7118
|
+
|
|
7119
|
+
type RulePropertyType = 'string' | 'boolean' | 'object' | 'enum' | 'number';
|
|
7120
|
+
interface RulePropertyDefinition {
|
|
7121
|
+
name: string;
|
|
7122
|
+
type: RulePropertyType;
|
|
7123
|
+
label: string;
|
|
7124
|
+
description?: string;
|
|
7125
|
+
enumValues?: Array<{
|
|
7126
|
+
value: string;
|
|
7127
|
+
label: string;
|
|
7128
|
+
}>;
|
|
7129
|
+
category?: 'content' | 'appearance' | 'behavior' | 'layout' | 'validation';
|
|
7130
|
+
}
|
|
7131
|
+
type RulePropertySchema = Record<'field' | 'section' | 'action' | 'row' | 'column', RulePropertyDefinition[]>;
|
|
7132
|
+
declare const RULE_PROPERTY_SCHEMA: RulePropertySchema;
|
|
7133
|
+
|
|
5415
7134
|
type ActionDefinition = {
|
|
7135
|
+
/** Global action id to execute (e.g., 'navigation.back', 'dialog.alert'). */
|
|
5416
7136
|
type?: string;
|
|
7137
|
+
/** Optional payload template for the action. */
|
|
5417
7138
|
params?: Record<string, any>;
|
|
5418
7139
|
};
|
|
5419
7140
|
interface WidgetDefinition {
|
|
@@ -5421,7 +7142,7 @@ interface WidgetDefinition {
|
|
|
5421
7142
|
id: string;
|
|
5422
7143
|
/** Inputs to bind into the component instance */
|
|
5423
7144
|
inputs?: Record<string, any>;
|
|
5424
|
-
/** Map of component output name to action (
|
|
7145
|
+
/** Map of component output name to action (global action or 'emit'). */
|
|
5425
7146
|
outputs?: Record<string, ActionDefinition | 'emit'>;
|
|
5426
7147
|
/**
|
|
5427
7148
|
* Optional explicit order for applying inputs. Keys listed here are applied first
|
|
@@ -5430,6 +7151,100 @@ interface WidgetDefinition {
|
|
|
5430
7151
|
bindingOrder?: string[];
|
|
5431
7152
|
}
|
|
5432
7153
|
|
|
7154
|
+
type WidgetShellActionPlacement = 'header' | 'window';
|
|
7155
|
+
interface WidgetShellAction {
|
|
7156
|
+
/** Unique action id used for tracking and default emit name. */
|
|
7157
|
+
id: string;
|
|
7158
|
+
/** Optional label for text or outlined buttons. */
|
|
7159
|
+
label?: string;
|
|
7160
|
+
/** Optional icon name (Material or Praxis icon registry). */
|
|
7161
|
+
icon?: string;
|
|
7162
|
+
/** Tooltip text for the action. */
|
|
7163
|
+
tooltip?: string;
|
|
7164
|
+
/** Visual style of the action button. */
|
|
7165
|
+
variant?: 'icon' | 'text' | 'outlined';
|
|
7166
|
+
/** Placement inside the shell header. Defaults to 'header'. */
|
|
7167
|
+
placement?: WidgetShellActionPlacement;
|
|
7168
|
+
/** Output name to emit to the page builder (defaults to `shell:${id}`). */
|
|
7169
|
+
emit?: string;
|
|
7170
|
+
/** Optional command name to dispatch to the inner widget. */
|
|
7171
|
+
command?: string;
|
|
7172
|
+
/** Optional payload for action dispatch/emit. */
|
|
7173
|
+
payload?: any;
|
|
7174
|
+
/** Whether the action is disabled. */
|
|
7175
|
+
disabled?: boolean;
|
|
7176
|
+
/** Whether the action is visible. */
|
|
7177
|
+
visible?: boolean;
|
|
7178
|
+
}
|
|
7179
|
+
interface WidgetShellWindowActions {
|
|
7180
|
+
/** Show collapse/expand control in the header. */
|
|
7181
|
+
collapsible?: boolean;
|
|
7182
|
+
/** Show fullscreen toggle in the header. */
|
|
7183
|
+
fullscreen?: boolean;
|
|
7184
|
+
}
|
|
7185
|
+
interface WidgetShellConfig {
|
|
7186
|
+
/** Shell type. 'dashboard-card' enables the default dashboard styling. */
|
|
7187
|
+
kind?: 'dashboard-card' | 'none';
|
|
7188
|
+
/** Optional preset id to resolve appearance defaults. */
|
|
7189
|
+
preset?: string;
|
|
7190
|
+
/** Header icon name. */
|
|
7191
|
+
icon?: string;
|
|
7192
|
+
/** Header title. */
|
|
7193
|
+
title?: string;
|
|
7194
|
+
/** Header subtitle. */
|
|
7195
|
+
subtitle?: string;
|
|
7196
|
+
/** Whether to show the header; defaults to true when title/icon/actions exist. */
|
|
7197
|
+
showHeader?: boolean;
|
|
7198
|
+
/** Header + window actions. */
|
|
7199
|
+
actions?: WidgetShellAction[];
|
|
7200
|
+
/** Built-in window actions configuration. */
|
|
7201
|
+
windowActions?: WidgetShellWindowActions;
|
|
7202
|
+
/** Initial collapsed state. */
|
|
7203
|
+
collapsed?: boolean;
|
|
7204
|
+
/** Initial expanded (fullscreen) state. */
|
|
7205
|
+
expanded?: boolean;
|
|
7206
|
+
/** Initial fullscreen state. */
|
|
7207
|
+
fullscreen?: boolean;
|
|
7208
|
+
/** Optional appearance overrides for card, header, and typography. */
|
|
7209
|
+
appearance?: {
|
|
7210
|
+
card?: {
|
|
7211
|
+
background?: string;
|
|
7212
|
+
borderColor?: string;
|
|
7213
|
+
borderRadius?: string;
|
|
7214
|
+
shadow?: string;
|
|
7215
|
+
};
|
|
7216
|
+
header?: {
|
|
7217
|
+
background?: string;
|
|
7218
|
+
borderColor?: string;
|
|
7219
|
+
titleColor?: string;
|
|
7220
|
+
subtitleColor?: string;
|
|
7221
|
+
iconColor?: string;
|
|
7222
|
+
};
|
|
7223
|
+
body?: {
|
|
7224
|
+
background?: string;
|
|
7225
|
+
textColor?: string;
|
|
7226
|
+
padding?: string;
|
|
7227
|
+
};
|
|
7228
|
+
typography?: {
|
|
7229
|
+
titleSize?: string;
|
|
7230
|
+
titleWeight?: string;
|
|
7231
|
+
subtitleSize?: string;
|
|
7232
|
+
};
|
|
7233
|
+
};
|
|
7234
|
+
}
|
|
7235
|
+
interface WidgetShellActionEvent {
|
|
7236
|
+
/** Action id. */
|
|
7237
|
+
id: string;
|
|
7238
|
+
/** Optional command name to dispatch to the inner widget. */
|
|
7239
|
+
command?: string;
|
|
7240
|
+
/** Optional emit name to propagate to the page builder. */
|
|
7241
|
+
emit?: string;
|
|
7242
|
+
/** Optional payload for the action. */
|
|
7243
|
+
payload?: any;
|
|
7244
|
+
/** Original action definition, when available. */
|
|
7245
|
+
action?: WidgetShellAction;
|
|
7246
|
+
}
|
|
7247
|
+
|
|
5433
7248
|
interface GridItemLayout {
|
|
5434
7249
|
/** 1-based column start */
|
|
5435
7250
|
col: number;
|
|
@@ -5445,6 +7260,7 @@ interface GridWidgetInstance {
|
|
|
5445
7260
|
definition: WidgetDefinition;
|
|
5446
7261
|
layout: GridItemLayout;
|
|
5447
7262
|
className?: string;
|
|
7263
|
+
shell?: WidgetShellConfig;
|
|
5448
7264
|
}
|
|
5449
7265
|
interface GridPageDefinition {
|
|
5450
7266
|
widgets: GridWidgetInstance[];
|
|
@@ -5573,6 +7389,24 @@ interface BackConfig {
|
|
|
5573
7389
|
confirmOnDirty?: boolean;
|
|
5574
7390
|
}
|
|
5575
7391
|
|
|
7392
|
+
type LoadingPhase = 'config' | 'schema' | 'render' | 'data' | 'idle';
|
|
7393
|
+
type LoadingStatus = 'loading' | 'success' | 'error';
|
|
7394
|
+
interface LoadingState {
|
|
7395
|
+
phase: LoadingPhase;
|
|
7396
|
+
status: LoadingStatus;
|
|
7397
|
+
message?: string;
|
|
7398
|
+
percent?: number;
|
|
7399
|
+
error?: unknown;
|
|
7400
|
+
context?: {
|
|
7401
|
+
componentType?: string;
|
|
7402
|
+
componentId?: string;
|
|
7403
|
+
resourcePath?: string;
|
|
7404
|
+
};
|
|
7405
|
+
timestamp?: string;
|
|
7406
|
+
}
|
|
7407
|
+
|
|
7408
|
+
declare const DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP: Record<string, FieldControlType>;
|
|
7409
|
+
|
|
5576
7410
|
declare const AllowedFileTypes: {
|
|
5577
7411
|
readonly ALL: "*/*";
|
|
5578
7412
|
readonly IMAGES: "image/*";
|
|
@@ -5761,6 +7595,12 @@ declare function resolveOffset(offset?: ColumnOffset): Required<ColumnOffset>;
|
|
|
5761
7595
|
declare function resolveOrder(order?: ColumnOrder): Required<ColumnOrder>;
|
|
5762
7596
|
declare function resolveHidden(hidden?: ColumnHidden): Required<ColumnHidden>;
|
|
5763
7597
|
|
|
7598
|
+
/**
|
|
7599
|
+
* Migra regras legadas (context/targetFields) para o formato canônico
|
|
7600
|
+
* `targetType/targets/effect.properties`.
|
|
7601
|
+
*/
|
|
7602
|
+
declare function migrateFormLayoutRule(rule: any): FormLayoutRule;
|
|
7603
|
+
|
|
5764
7604
|
/**
|
|
5765
7605
|
* Text transformation utilities for display and persistence.
|
|
5766
7606
|
*
|
|
@@ -5800,6 +7640,265 @@ declare function deepMerge<T>(left: T, right: Partial<T> | undefined): T;
|
|
|
5800
7640
|
*/
|
|
5801
7641
|
declare function fillUndefined<T>(target: T, defaults: Partial<T> | undefined): T;
|
|
5802
7642
|
|
|
7643
|
+
interface ResolvePresetOptions {
|
|
7644
|
+
timezone?: string;
|
|
7645
|
+
startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
7646
|
+
now?: Date;
|
|
7647
|
+
/** If true, require every day in range to pass filter, else only start/end. */
|
|
7648
|
+
strictFilter?: boolean;
|
|
7649
|
+
/** Optional date filter to validate computed ranges. */
|
|
7650
|
+
dateFilter?: (d: Date | null) => boolean;
|
|
7651
|
+
/** Optional min/max clamp. */
|
|
7652
|
+
minDate?: Date | null;
|
|
7653
|
+
maxDate?: Date | null;
|
|
7654
|
+
}
|
|
7655
|
+
/** Normalize a date to start of day (00:00:00.000) respecting timezone if provided. */
|
|
7656
|
+
declare function normalizeStart(date: Date, timezone?: string): Date;
|
|
7657
|
+
/** Normalize a date to end of day (23:59:59.999) respecting timezone if provided. */
|
|
7658
|
+
declare function normalizeEnd(date: Date, timezone?: string): Date;
|
|
7659
|
+
declare function clampRange(range: DateRangeValue, minDate?: Date | null, maxDate?: Date | null, timezone?: string): DateRangeValue;
|
|
7660
|
+
declare function isRangeValidForFilter(range: DateRangeValue, dateFilter?: (d: Date | null) => boolean, strict?: boolean): boolean;
|
|
7661
|
+
/** Build built-in presets based on locale and DateAdapter. */
|
|
7662
|
+
declare function resolveBuiltinPresets(locale: string, dateAdapter: DateAdapter<Date>, opts?: ResolvePresetOptions): Record<string, DateRangePreset>;
|
|
7663
|
+
|
|
7664
|
+
type FieldControlTypeValue$1 = (typeof FieldControlType)[keyof typeof FieldControlType];
|
|
7665
|
+
declare function normalizeControlTypeToken(value: unknown): string;
|
|
7666
|
+
declare function normalizeControlTypeKey(value: unknown): string;
|
|
7667
|
+
declare function resolveControlTypeAlias(value: unknown, fallback?: FieldControlTypeValue$1 | string): FieldControlTypeValue$1 | string;
|
|
7668
|
+
|
|
7669
|
+
type FieldControlTypeValue = (typeof FieldControlType)[keyof typeof FieldControlType];
|
|
7670
|
+
declare const INLINE_FILTER_CONTROL_TYPES: Readonly<{
|
|
7671
|
+
readonly SELECT: "filter-select-inline";
|
|
7672
|
+
readonly SEARCHABLE_SELECT: "filter-searchable-select-inline";
|
|
7673
|
+
readonly ASYNC_SELECT: "filter-async-select-inline";
|
|
7674
|
+
readonly ENTITY_LOOKUP: "filter-entity-lookup-inline";
|
|
7675
|
+
readonly AUTOCOMPLETE: "filter-autocomplete-inline";
|
|
7676
|
+
readonly NUMBER: "filter-number-inline";
|
|
7677
|
+
readonly CURRENCY: "filter-currency-inline";
|
|
7678
|
+
readonly CURRENCY_RANGE: "filter-currency-range-inline";
|
|
7679
|
+
readonly MULTI_SELECT: "filter-multiselect-inline";
|
|
7680
|
+
readonly INPUT: "filter-input-inline";
|
|
7681
|
+
readonly TOGGLE: "filter-toggle-inline";
|
|
7682
|
+
readonly RANGE: "filter-range-inline";
|
|
7683
|
+
readonly DATE: "filter-date-inline";
|
|
7684
|
+
readonly DATE_RANGE: "filter-date-range-inline";
|
|
7685
|
+
readonly TIME: "filter-time-inline";
|
|
7686
|
+
readonly TIME_RANGE: "filter-time-range-inline";
|
|
7687
|
+
readonly TREE_SELECT: "filter-tree-select-inline";
|
|
7688
|
+
readonly RATING: "filter-rating-inline";
|
|
7689
|
+
readonly DISTANCE_RADIUS: "filter-distance-radius-inline";
|
|
7690
|
+
readonly PIPELINE_STATUS: "filter-pipeline-status-inline";
|
|
7691
|
+
readonly SCORE_PRIORITY: "filter-score-priority-inline";
|
|
7692
|
+
readonly RELATIVE_PERIOD: "filter-relative-period-inline";
|
|
7693
|
+
readonly SENTIMENT: "filter-sentiment-inline";
|
|
7694
|
+
readonly COLOR_LABEL: "filter-color-label-inline";
|
|
7695
|
+
}>;
|
|
7696
|
+
type InlineFilterControlType = (typeof INLINE_FILTER_CONTROL_TYPES)[keyof typeof INLINE_FILTER_CONTROL_TYPES];
|
|
7697
|
+
declare const INLINE_FILTER_CONTROL_TYPE_VALUES: readonly InlineFilterControlType[];
|
|
7698
|
+
declare const INLINE_FILTER_CONTROL_TYPE_SET: ReadonlySet<InlineFilterControlType>;
|
|
7699
|
+
declare const INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE: Readonly<Record<string, InlineFilterControlType>>;
|
|
7700
|
+
declare const INLINE_FILTER_ALIAS_TOKENS: readonly string[];
|
|
7701
|
+
declare const INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE: Readonly<Record<string, FieldControlTypeValue>>;
|
|
7702
|
+
declare function resolveInlineFilterControlTypeAlias(value: unknown): InlineFilterControlType | undefined;
|
|
7703
|
+
declare function resolveInlineFilterAliasToBaseControlType(value: unknown): FieldControlTypeValue | undefined;
|
|
7704
|
+
declare function isInlineFilterControlType(value: unknown): value is InlineFilterControlType;
|
|
7705
|
+
|
|
7706
|
+
type GlobalActionFieldType = 'text' | 'textarea' | 'number' | 'select' | 'toggle' | 'json';
|
|
7707
|
+
interface GlobalActionFieldOption {
|
|
7708
|
+
value: string;
|
|
7709
|
+
label: string;
|
|
7710
|
+
}
|
|
7711
|
+
interface GlobalActionField {
|
|
7712
|
+
key: string;
|
|
7713
|
+
label: string;
|
|
7714
|
+
type: GlobalActionFieldType;
|
|
7715
|
+
hint?: string;
|
|
7716
|
+
placeholder?: string;
|
|
7717
|
+
required?: boolean;
|
|
7718
|
+
options?: GlobalActionFieldOption[];
|
|
7719
|
+
rows?: number;
|
|
7720
|
+
dependsOnKey?: string;
|
|
7721
|
+
dependsOnValue?: string;
|
|
7722
|
+
}
|
|
7723
|
+
interface GlobalActionUiSchema {
|
|
7724
|
+
id: GlobalActionId;
|
|
7725
|
+
label: string;
|
|
7726
|
+
fields: GlobalActionField[];
|
|
7727
|
+
}
|
|
7728
|
+
declare const GLOBAL_ACTION_UI_SCHEMAS: GlobalActionUiSchema[];
|
|
7729
|
+
declare function getGlobalActionUiSchema(id: string | undefined): GlobalActionUiSchema | undefined;
|
|
7730
|
+
|
|
7731
|
+
type AiValueKind = 'boolean' | 'string' | 'number' | 'enum' | 'expression' | 'object' | 'array';
|
|
7732
|
+
interface AiCapabilityCategoryMap {
|
|
7733
|
+
identity: true;
|
|
7734
|
+
appearance: true;
|
|
7735
|
+
validation: true;
|
|
7736
|
+
data: true;
|
|
7737
|
+
behavior: true;
|
|
7738
|
+
layout: true;
|
|
7739
|
+
accessibility: true;
|
|
7740
|
+
dependency: true;
|
|
7741
|
+
transform: true;
|
|
7742
|
+
form_config: true;
|
|
7743
|
+
events: true;
|
|
7744
|
+
misc: true;
|
|
7745
|
+
}
|
|
7746
|
+
type AiCapabilityCategory = keyof AiCapabilityCategoryMap;
|
|
7747
|
+
interface AiCapability {
|
|
7748
|
+
/** Path com [] para arrays (ex.: fieldMetadata[].label) */
|
|
7749
|
+
path: string;
|
|
7750
|
+
/** Categoria lógica para agrupamento */
|
|
7751
|
+
category: AiCapabilityCategory;
|
|
7752
|
+
/** Tipo de dado esperado */
|
|
7753
|
+
valueKind: AiValueKind;
|
|
7754
|
+
/** Valores permitidos para enums */
|
|
7755
|
+
allowedValues?: Array<string | number>;
|
|
7756
|
+
/** Descrição semântica para a IA */
|
|
7757
|
+
description?: string;
|
|
7758
|
+
/** Se true, exige confirmação extra por ser destrutivo ou impactante */
|
|
7759
|
+
critical?: boolean;
|
|
7760
|
+
/** Exemplos de intenção do usuário (Few-Shot) */
|
|
7761
|
+
intentExamples?: string[];
|
|
7762
|
+
/** Dependência condicional (ex.: requer outro campo) */
|
|
7763
|
+
dependsOn?: string;
|
|
7764
|
+
/** Exemplo de valor */
|
|
7765
|
+
example?: string;
|
|
7766
|
+
/** Observações de segurança */
|
|
7767
|
+
safetyNotes?: string;
|
|
7768
|
+
}
|
|
7769
|
+
interface AiCapabilityCatalog {
|
|
7770
|
+
version: string;
|
|
7771
|
+
capabilities: AiCapability[];
|
|
7772
|
+
notes: string[];
|
|
7773
|
+
enums: Record<string, Array<string | number>>;
|
|
7774
|
+
targets?: string[];
|
|
7775
|
+
}
|
|
7776
|
+
interface AiConcept {
|
|
7777
|
+
id: string;
|
|
7778
|
+
title: string;
|
|
7779
|
+
description: string;
|
|
7780
|
+
rules: string[];
|
|
7781
|
+
syntax?: string;
|
|
7782
|
+
examples: string[];
|
|
7783
|
+
antiPatterns?: string[];
|
|
7784
|
+
}
|
|
7785
|
+
type AiConceptPack = Record<string, AiConcept>;
|
|
7786
|
+
|
|
7787
|
+
/**
|
|
7788
|
+
* Catálogo de capacidades genéricas de FieldMetadata para uso da IA.
|
|
7789
|
+
* Baseado em projects/praxis-core/src/lib/models/component-metadata.interface.ts
|
|
7790
|
+
*/
|
|
7791
|
+
|
|
7792
|
+
type CapabilityCategory$1 = AiCapabilityCategory;
|
|
7793
|
+
type ValueKind$1 = AiValueKind;
|
|
7794
|
+
interface Capability$1 extends AiCapability {
|
|
7795
|
+
category: CapabilityCategory$1;
|
|
7796
|
+
}
|
|
7797
|
+
interface CapabilityCatalog$1 extends AiCapabilityCatalog {
|
|
7798
|
+
capabilities: Capability$1[];
|
|
7799
|
+
}
|
|
7800
|
+
declare const FIELD_METADATA_CAPABILITIES: CapabilityCatalog$1;
|
|
7801
|
+
declare function getFieldMetadataCapabilities(): Capability$1[];
|
|
7802
|
+
|
|
7803
|
+
/**
|
|
7804
|
+
* Capabilities catalog for Praxis Dynamic Page (praxis-dynamic-page).
|
|
7805
|
+
* Paths follow WidgetPageDefinition shape under "page".
|
|
7806
|
+
*/
|
|
7807
|
+
|
|
7808
|
+
declare module "./index" {
|
|
7809
|
+
interface AiCapabilityCategoryMap {
|
|
7810
|
+
page: true;
|
|
7811
|
+
layout: true;
|
|
7812
|
+
widgets: true;
|
|
7813
|
+
shell: true;
|
|
7814
|
+
connections: true;
|
|
7815
|
+
context: true;
|
|
7816
|
+
}
|
|
7817
|
+
}
|
|
7818
|
+
type CapabilityCategory = AiCapabilityCategory;
|
|
7819
|
+
type ValueKind = AiValueKind;
|
|
7820
|
+
interface Capability extends AiCapability {
|
|
7821
|
+
category: CapabilityCategory;
|
|
7822
|
+
}
|
|
7823
|
+
interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
7824
|
+
capabilities: Capability[];
|
|
7825
|
+
}
|
|
7826
|
+
declare const DYNAMIC_PAGE_AI_CAPABILITIES: CapabilityCatalog;
|
|
7827
|
+
|
|
7828
|
+
type ComponentContextOptionMode = 'enum' | 'suggested';
|
|
7829
|
+
interface ComponentContextOption {
|
|
7830
|
+
value: string | number;
|
|
7831
|
+
label?: string;
|
|
7832
|
+
example?: string;
|
|
7833
|
+
}
|
|
7834
|
+
interface ComponentContextOptionsByPathEntry {
|
|
7835
|
+
mode: ComponentContextOptionMode;
|
|
7836
|
+
options: ComponentContextOption[];
|
|
7837
|
+
}
|
|
7838
|
+
interface ComponentActionParam {
|
|
7839
|
+
name: string;
|
|
7840
|
+
type: 'ENUM' | 'BOOLEAN' | 'STRING' | 'NUMBER';
|
|
7841
|
+
options?: string[];
|
|
7842
|
+
description?: string;
|
|
7843
|
+
}
|
|
7844
|
+
interface ComponentContextAction {
|
|
7845
|
+
id: string;
|
|
7846
|
+
keywords?: string[];
|
|
7847
|
+
patchTemplate: any;
|
|
7848
|
+
safetyNotes?: string;
|
|
7849
|
+
/**
|
|
7850
|
+
* Define o tipo de operação associado à ação.
|
|
7851
|
+
* Usado para diferenciar criação/edição/remoção em fluxos determinísticos.
|
|
7852
|
+
*/
|
|
7853
|
+
operation?: 'create' | 'update' | 'delete' | 'read';
|
|
7854
|
+
/**
|
|
7855
|
+
* Indica se o target deve existir antes de aplicar a ação.
|
|
7856
|
+
* Ex: criar coluna nova não exige target pré-existente.
|
|
7857
|
+
*/
|
|
7858
|
+
requiresExistingTarget?: boolean;
|
|
7859
|
+
/**
|
|
7860
|
+
* Escopo da ação para resolução determinística.
|
|
7861
|
+
* - GLOBAL: Ação afeta todo o componente (não exige target).
|
|
7862
|
+
* - COLUMN: Ação afeta uma coluna específica (exige target).
|
|
7863
|
+
* - ROW: Ação afeta uma linha ou configuração de linhas.
|
|
7864
|
+
*/
|
|
7865
|
+
scope?: 'GLOBAL' | 'COLUMN' | 'ROW';
|
|
7866
|
+
/**
|
|
7867
|
+
* Tipo esperado para o valor da ação.
|
|
7868
|
+
* Ajuda a decidir se exibe toggle, select ou input.
|
|
7869
|
+
*/
|
|
7870
|
+
valueType?: 'BOOLEAN' | 'ENUM' | 'STRING' | 'NUMBER' | 'OBJECT';
|
|
7871
|
+
/**
|
|
7872
|
+
* Valor padrão caso o usuário não especifique (ex: true para enables).
|
|
7873
|
+
*/
|
|
7874
|
+
defaultValue?: any;
|
|
7875
|
+
/**
|
|
7876
|
+
* Definição dos parâmetros utilizados no template ({{params.X}}).
|
|
7877
|
+
* Usado para popular opções em clarificações.
|
|
7878
|
+
*/
|
|
7879
|
+
params?: ComponentActionParam[];
|
|
7880
|
+
/**
|
|
7881
|
+
* IDs de conceitos (AiConcepts) que devem ser carregados no prompt
|
|
7882
|
+
* quando esta ação for candidata. Ex: ['computed-logic'].
|
|
7883
|
+
*/
|
|
7884
|
+
relatedConcepts?: string[];
|
|
7885
|
+
}
|
|
7886
|
+
interface ComponentContextPack {
|
|
7887
|
+
version: string;
|
|
7888
|
+
optionsByPath: Record<string, ComponentContextOptionsByPathEntry>;
|
|
7889
|
+
actionCatalog: ComponentContextAction[];
|
|
7890
|
+
fieldResolvers: Record<string, string[]>;
|
|
7891
|
+
hints?: string[];
|
|
7892
|
+
}
|
|
7893
|
+
interface ComponentMergePatch<TConfig extends Record<string, unknown> = Record<string, unknown>> {
|
|
7894
|
+
mode: 'merge';
|
|
7895
|
+
patch: Partial<TConfig>;
|
|
7896
|
+
intent?: string;
|
|
7897
|
+
planRef?: string;
|
|
7898
|
+
}
|
|
7899
|
+
|
|
7900
|
+
declare const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK: ComponentContextPack;
|
|
7901
|
+
|
|
5803
7902
|
/**
|
|
5804
7903
|
* Carrega dinamicamente um componente "widget" (de página) a partir de um id registrado
|
|
5805
7904
|
* no ComponentMetadataRegistry e aplica bindings declarados em JSON (WidgetDefinition).
|
|
@@ -5821,6 +7920,8 @@ declare class DynamicWidgetLoaderDirective implements OnInit, OnChanges, OnDestr
|
|
|
5821
7920
|
private compRef?;
|
|
5822
7921
|
private currentId?;
|
|
5823
7922
|
private outputSubs;
|
|
7923
|
+
/** Dispatch a shell action to the inner widget instance when supported. */
|
|
7924
|
+
dispatchAction(action: WidgetShellActionEvent): boolean;
|
|
5824
7925
|
ngOnInit(): void;
|
|
5825
7926
|
ngOnChanges(changes: SimpleChanges): void;
|
|
5826
7927
|
ngOnDestroy(): void;
|
|
@@ -5833,8 +7934,41 @@ declare class DynamicWidgetLoaderDirective implements OnInit, OnChanges, OnDestr
|
|
|
5833
7934
|
private resolveValue;
|
|
5834
7935
|
private lookup;
|
|
5835
7936
|
private validateAgainstMetadata;
|
|
7937
|
+
private coercePrimitive;
|
|
5836
7938
|
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicWidgetLoaderDirective, never>;
|
|
5837
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicWidgetLoaderDirective, "[dynamicWidgetLoader]",
|
|
7939
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicWidgetLoaderDirective, "[dynamicWidgetLoader]", ["dynamicWidgetLoader"], { "widget": { "alias": "dynamicWidgetLoader"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "autoWireOutputs": { "alias": "autoWireOutputs"; "required": false; }; }, { "widgetEvent": "widgetEvent"; }, never, never, true, never>;
|
|
7940
|
+
}
|
|
7941
|
+
|
|
7942
|
+
type ActionList = WidgetShellAction[];
|
|
7943
|
+
type Appearance = WidgetShellConfig['appearance'];
|
|
7944
|
+
declare const BUILTIN_SHELL_PRESETS: Record<string, NonNullable<Appearance>>;
|
|
7945
|
+
declare class WidgetShellComponent implements OnChanges {
|
|
7946
|
+
shell?: WidgetShellConfig | null;
|
|
7947
|
+
context?: Record<string, any> | null;
|
|
7948
|
+
action: EventEmitter<WidgetShellActionEvent>;
|
|
7949
|
+
loader?: DynamicWidgetLoaderDirective;
|
|
7950
|
+
get appearance(): WidgetShellConfig['appearance'];
|
|
7951
|
+
collapsed: boolean;
|
|
7952
|
+
expanded: boolean;
|
|
7953
|
+
fullscreen: boolean;
|
|
7954
|
+
ngOnChanges(): void;
|
|
7955
|
+
get shellEnabled(): boolean;
|
|
7956
|
+
get showHeader(): boolean;
|
|
7957
|
+
get headerActions(): ActionList;
|
|
7958
|
+
get visibleHeaderActions(): ActionList;
|
|
7959
|
+
get overflowHeaderActions(): ActionList;
|
|
7960
|
+
private get maxHeaderActions();
|
|
7961
|
+
get windowActions(): ActionList;
|
|
7962
|
+
onAction(action: WidgetShellAction, ev: MouseEvent): void;
|
|
7963
|
+
stopIfExpanded(ev: MouseEvent): void;
|
|
7964
|
+
closeOverlay(): void;
|
|
7965
|
+
private handleWindowAction;
|
|
7966
|
+
private buildWindowActions;
|
|
7967
|
+
private isVisible;
|
|
7968
|
+
private resolvePresetAppearance;
|
|
7969
|
+
private mergeAppearance;
|
|
7970
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WidgetShellComponent, never>;
|
|
7971
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetShellComponent, "praxis-widget-shell", never, { "shell": { "alias": "shell"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, { "action": "action"; }, ["loader"], ["*"], true, never>;
|
|
5838
7972
|
}
|
|
5839
7973
|
|
|
5840
7974
|
interface WidgetInstance {
|
|
@@ -5842,6 +7976,8 @@ interface WidgetInstance {
|
|
|
5842
7976
|
definition: WidgetDefinition;
|
|
5843
7977
|
/** Optional CSS classes or layout hints */
|
|
5844
7978
|
className?: string;
|
|
7979
|
+
/** Optional shell config for standardized widget framing. */
|
|
7980
|
+
shell?: WidgetShellConfig;
|
|
5845
7981
|
}
|
|
5846
7982
|
interface WidgetConnection {
|
|
5847
7983
|
from: {
|
|
@@ -5869,11 +8005,29 @@ interface WidgetConnection {
|
|
|
5869
8005
|
distinctBy?: string;
|
|
5870
8006
|
};
|
|
5871
8007
|
}
|
|
8008
|
+
type WidgetPageOrientation = 'vertical' | 'columns';
|
|
8009
|
+
interface WidgetPageLayout {
|
|
8010
|
+
/** Layout orientation for widget grid. */
|
|
8011
|
+
orientation?: WidgetPageOrientation;
|
|
8012
|
+
/** Column count when using columns orientation. */
|
|
8013
|
+
columns?: number;
|
|
8014
|
+
/** CSS gap value for grid spacing (e.g., '16px'). */
|
|
8015
|
+
gap?: string;
|
|
8016
|
+
/** Optional responsive columns by breakpoint (sm/md/lg/xl). */
|
|
8017
|
+
breakpoints?: {
|
|
8018
|
+
sm?: number;
|
|
8019
|
+
md?: number;
|
|
8020
|
+
lg?: number;
|
|
8021
|
+
xl?: number;
|
|
8022
|
+
};
|
|
8023
|
+
}
|
|
5872
8024
|
interface WidgetPageDefinition {
|
|
5873
8025
|
widgets: WidgetInstance[];
|
|
5874
8026
|
connections?: WidgetConnection[];
|
|
5875
8027
|
/** Optional page-wide context available to all widgets */
|
|
5876
8028
|
context?: Record<string, any>;
|
|
8029
|
+
/** Optional layout configuration for the widget grid */
|
|
8030
|
+
layout?: WidgetPageLayout;
|
|
5877
8031
|
}
|
|
5878
8032
|
|
|
5879
8033
|
declare class ConnectionManagerService {
|
|
@@ -5907,31 +8061,91 @@ declare class ConnectionManagerService {
|
|
|
5907
8061
|
|
|
5908
8062
|
declare class DynamicWidgetPageComponent implements OnChanges {
|
|
5909
8063
|
private conn;
|
|
8064
|
+
private settingsPanel;
|
|
8065
|
+
private defaultShellEditor;
|
|
8066
|
+
private defaultPageEditor;
|
|
5910
8067
|
page?: WidgetPageDefinition | string;
|
|
5911
8068
|
context?: Record<string, any> | null;
|
|
5912
8069
|
strictValidation: boolean;
|
|
5913
|
-
|
|
8070
|
+
/** Enables lightweight editing affordances (shell + page layout). */
|
|
8071
|
+
editModeEnabled: boolean;
|
|
8072
|
+
/** Shows page settings button when edit mode is enabled. */
|
|
8073
|
+
showPageSettingsButton: boolean;
|
|
8074
|
+
/** Optional editor component override for widget shell settings. */
|
|
8075
|
+
shellEditorComponent?: Type<any>;
|
|
8076
|
+
/** Optional editor component override for page settings. */
|
|
8077
|
+
pageEditorComponent?: Type<any>;
|
|
8078
|
+
/** Enables automatic persistence (load/save) for the page definition. */
|
|
8079
|
+
autoPersist: boolean;
|
|
8080
|
+
/** Optional identity to scope persistence (tenant/user/route). */
|
|
8081
|
+
pageIdentity?: PageIdentity;
|
|
8082
|
+
/** Optional instance key for pages rendered multiple times. */
|
|
8083
|
+
componentInstanceId?: string;
|
|
8084
|
+
pageChange: EventEmitter<WidgetPageDefinition>;
|
|
5914
8085
|
widgets: i0.WritableSignal<WidgetInstance[]>;
|
|
5915
8086
|
mergedContext: Record<string, any>;
|
|
5916
|
-
|
|
8087
|
+
pageGap: string;
|
|
8088
|
+
gridTemplateColumns: string;
|
|
8089
|
+
private pageDefinition?;
|
|
8090
|
+
private layout?;
|
|
8091
|
+
private appliedPersisted;
|
|
8092
|
+
private isHydrating;
|
|
8093
|
+
private persistenceReady;
|
|
8094
|
+
private warnedMissingKey;
|
|
8095
|
+
private readonly globalActions;
|
|
8096
|
+
private readonly storage;
|
|
8097
|
+
private readonly componentKeys;
|
|
8098
|
+
private readonly route;
|
|
8099
|
+
constructor(conn: ConnectionManagerService, settingsPanel: SettingsPanelBridge | null, defaultShellEditor: Type<any> | null, defaultPageEditor: Type<any> | null);
|
|
5917
8100
|
ngOnChanges(changes: SimpleChanges): void;
|
|
5918
8101
|
onWidgetEvent(fromKey: string, evt: {
|
|
5919
8102
|
sourceId: string;
|
|
5920
8103
|
output?: string;
|
|
5921
8104
|
payload?: any;
|
|
5922
8105
|
}): void;
|
|
8106
|
+
onShellAction(fromKey: string, evt: WidgetShellActionEvent): void;
|
|
8107
|
+
private handleSetInputCommand;
|
|
5923
8108
|
private mergeOrder;
|
|
8109
|
+
private maybeExecuteMappedAction;
|
|
8110
|
+
private maybeExecuteGlobalCommand;
|
|
8111
|
+
private resolveActionPayload;
|
|
8112
|
+
private resolveTemplate;
|
|
8113
|
+
private lookup;
|
|
8114
|
+
openWidgetShellSettings(key: string): void;
|
|
8115
|
+
openPageSettings(): void;
|
|
8116
|
+
private applyWidgetShell;
|
|
8117
|
+
private applyPageLayout;
|
|
8118
|
+
private applyPageUpdate;
|
|
8119
|
+
private applyLayout;
|
|
8120
|
+
private mergeContext;
|
|
8121
|
+
onWindowResize(): void;
|
|
8122
|
+
private resolveColumns;
|
|
8123
|
+
private ensurePageDefinition;
|
|
5924
8124
|
private parsePage;
|
|
5925
|
-
|
|
5926
|
-
|
|
8125
|
+
private applyEditShellActions;
|
|
8126
|
+
private savePage;
|
|
8127
|
+
private loadPersistedPage;
|
|
8128
|
+
private storageKey;
|
|
8129
|
+
private componentKeyId;
|
|
8130
|
+
private buildPageScopeId;
|
|
8131
|
+
private warnMissingKey;
|
|
8132
|
+
private sanitizeSegment;
|
|
8133
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicWidgetPageComponent, [null, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
8134
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicWidgetPageComponent, "praxis-dynamic-page", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; "showPageSettingsButton": { "alias": "showPageSettingsButton"; "required": false; }; "shellEditorComponent": { "alias": "shellEditorComponent"; "required": false; }; "pageEditorComponent": { "alias": "pageEditorComponent"; "required": false; }; "autoPersist": { "alias": "autoPersist"; "required": false; }; "pageIdentity": { "alias": "pageIdentity"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
5927
8135
|
}
|
|
5928
8136
|
|
|
8137
|
+
/** Metadata for Praxis Dynamic Page component */
|
|
8138
|
+
declare const PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA: ComponentDocMeta;
|
|
8139
|
+
/**
|
|
8140
|
+
* Provider que registra o metadata no ComponentMetadataRegistry durante o bootstrap.
|
|
8141
|
+
*/
|
|
8142
|
+
declare function providePraxisDynamicPageMetadata(): Provider;
|
|
8143
|
+
|
|
5929
8144
|
declare class DynamicGridPageComponent implements OnChanges {
|
|
5930
8145
|
private conn;
|
|
5931
8146
|
page?: GridPageDefinition | string;
|
|
5932
8147
|
context?: Record<string, any> | null;
|
|
5933
8148
|
strictValidation: boolean;
|
|
5934
|
-
debug: boolean;
|
|
5935
8149
|
/** Optional code-level grid options. Editor (page.options) takes precedence over these. */
|
|
5936
8150
|
gridOptions?: Partial<{
|
|
5937
8151
|
cols: number;
|
|
@@ -5942,6 +8156,7 @@ declare class DynamicGridPageComponent implements OnChanges {
|
|
|
5942
8156
|
editModeEnabled: boolean;
|
|
5943
8157
|
widgets: i0.WritableSignal<GridWidgetInstance[]>;
|
|
5944
8158
|
mergedContext: Record<string, any>;
|
|
8159
|
+
private readonly globalActions;
|
|
5945
8160
|
private selectedKey;
|
|
5946
8161
|
private cols;
|
|
5947
8162
|
private _rowHeight;
|
|
@@ -5959,12 +8174,18 @@ declare class DynamicGridPageComponent implements OnChanges {
|
|
|
5959
8174
|
output?: string;
|
|
5960
8175
|
payload?: any;
|
|
5961
8176
|
}): void;
|
|
8177
|
+
onShellAction(fromKey: string, evt: WidgetShellActionEvent): void;
|
|
5962
8178
|
isSelected(key?: string): boolean;
|
|
5963
8179
|
onTileClick(key?: string, ev?: Event): void;
|
|
5964
8180
|
private mergeOrder;
|
|
8181
|
+
private maybeExecuteMappedAction;
|
|
8182
|
+
private maybeExecuteGlobalCommand;
|
|
8183
|
+
private resolveActionPayload;
|
|
8184
|
+
private resolveTemplate;
|
|
8185
|
+
private lookup;
|
|
5965
8186
|
private parsePage;
|
|
5966
8187
|
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicGridPageComponent, never>;
|
|
5967
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicGridPageComponent, "praxis-dynamic-grid-page", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "
|
|
8188
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicGridPageComponent, "praxis-dynamic-grid-page", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "gridOptions": { "alias": "gridOptions"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
5968
8189
|
}
|
|
5969
8190
|
|
|
5970
8191
|
interface EmptyAction {
|
|
@@ -5980,8 +8201,9 @@ declare class EmptyStateCardComponent {
|
|
|
5980
8201
|
primaryAction?: EmptyAction;
|
|
5981
8202
|
secondaryActions: EmptyAction[];
|
|
5982
8203
|
inline: boolean;
|
|
8204
|
+
tone: 'neutral' | 'primary' | 'secondary';
|
|
5983
8205
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmptyStateCardComponent, never>;
|
|
5984
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateCardComponent, "praxis-empty-state-card", never, { "icon": { "alias": "icon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "secondaryActions": { "alias": "secondaryActions"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; }, {}, never, never, true, never>;
|
|
8206
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateCardComponent, "praxis-empty-state-card", never, { "icon": { "alias": "icon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "secondaryActions": { "alias": "secondaryActions"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; }, {}, never, never, true, never>;
|
|
5985
8207
|
}
|
|
5986
8208
|
|
|
5987
8209
|
declare class ResourceQuickConnectComponent implements SettingsValueProvider {
|
|
@@ -5992,6 +8214,9 @@ declare class ResourceQuickConnectComponent implements SettingsValueProvider {
|
|
|
5992
8214
|
updateState(): void;
|
|
5993
8215
|
getSettingsValue(): any;
|
|
5994
8216
|
onSave(): any;
|
|
8217
|
+
showInvalid(): boolean;
|
|
8218
|
+
normalizedPath(): string;
|
|
8219
|
+
private isValidPath;
|
|
5995
8220
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceQuickConnectComponent, never>;
|
|
5996
8221
|
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceQuickConnectComponent, "praxis-resource-quick-connect", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; }, {}, never, never, true, never>;
|
|
5997
8222
|
}
|
|
@@ -6003,6 +8228,7 @@ declare class PraxisIconPickerComponent {
|
|
|
6003
8228
|
icons: string[];
|
|
6004
8229
|
selected: EventEmitter<string>;
|
|
6005
8230
|
cancel: EventEmitter<void>;
|
|
8231
|
+
searchInput?: ElementRef<HTMLInputElement>;
|
|
6006
8232
|
query: string;
|
|
6007
8233
|
filtered: string[];
|
|
6008
8234
|
selectedFamily: 'mi' | 'mso' | 'ms' | 'msr' | 'mss';
|
|
@@ -6010,13 +8236,16 @@ declare class PraxisIconPickerComponent {
|
|
|
6010
8236
|
onFilter(): void;
|
|
6011
8237
|
choose(icon: string): void;
|
|
6012
8238
|
onEsc(ev: Event): void;
|
|
8239
|
+
onGlobalKey(ev: KeyboardEvent): void;
|
|
6013
8240
|
confirmTyped(): void;
|
|
8241
|
+
isSelectedIcon(icon: string): boolean;
|
|
6014
8242
|
onFamilyChange(val: any): void;
|
|
6015
8243
|
clear(): void;
|
|
6016
8244
|
onCancel(): void;
|
|
6017
8245
|
buildValue(name: string): string;
|
|
6018
8246
|
previewValue(): string;
|
|
6019
8247
|
iconClassForFamily(fam: string): string;
|
|
8248
|
+
private focusSearch;
|
|
6020
8249
|
familyFromValue(v?: string): {
|
|
6021
8250
|
family: 'mi' | 'mso' | 'msr' | 'mss';
|
|
6022
8251
|
name: string;
|
|
@@ -6076,6 +8305,70 @@ declare function normalizeFormMetadata(list: FieldMetadata[] | undefined | null)
|
|
|
6076
8305
|
/** Normalize a full FormConfig object */
|
|
6077
8306
|
declare function normalizeFormConfig(config: FormConfig): FormConfig;
|
|
6078
8307
|
|
|
8308
|
+
/** Minimal metadata about the backend schema source. */
|
|
8309
|
+
interface SchemaMetaInfo {
|
|
8310
|
+
/** API path used to resolve the schema (e.g., /api/employees/all or /filter) */
|
|
8311
|
+
path: string;
|
|
8312
|
+
/** Operation used when fetching the schema (get|post) */
|
|
8313
|
+
operation: string;
|
|
8314
|
+
/** Schema type requested (response|request) */
|
|
8315
|
+
schemaType: string;
|
|
8316
|
+
/** Optional strong hash returned by server (X-Schema-Hash/ETag) */
|
|
8317
|
+
schemaHash?: string;
|
|
8318
|
+
/** Optional resource id field name provided by server */
|
|
8319
|
+
idField?: string;
|
|
8320
|
+
/** API origin used to fetch (useful when not same-origin) */
|
|
8321
|
+
apiOrigin?: string;
|
|
8322
|
+
/** Client-side composed id (path|operation|schemaType|...) */
|
|
8323
|
+
schemaId?: string;
|
|
8324
|
+
}
|
|
8325
|
+
/** Context consumed by SchemaViewer to present component/config/schema metadata. */
|
|
8326
|
+
interface SchemaViewerContext {
|
|
8327
|
+
/** Registered component id (ComponentMetadataRegistry) */
|
|
8328
|
+
componentId: string;
|
|
8329
|
+
/** Optional user-friendly title for the viewer */
|
|
8330
|
+
title?: string;
|
|
8331
|
+
/** Config JSON used by the example (e.g., TabsMetadata, TableConfig) */
|
|
8332
|
+
rawConfig?: unknown;
|
|
8333
|
+
/** Optional pre-computed effective config (raw + defaults) */
|
|
8334
|
+
effectiveConfig?: unknown;
|
|
8335
|
+
/** Raw backend schema JSON (OpenAPI/JSON Schema + x-ui) */
|
|
8336
|
+
backendSchema?: unknown;
|
|
8337
|
+
/** Optional meta associated with backendSchema */
|
|
8338
|
+
schemaMeta?: SchemaMetaInfo;
|
|
8339
|
+
/** Optional already normalized field definitions */
|
|
8340
|
+
normalizedFields?: FieldDefinition[];
|
|
8341
|
+
/** Free-form notes shown on top of the viewer */
|
|
8342
|
+
notes?: string;
|
|
8343
|
+
}
|
|
8344
|
+
|
|
8345
|
+
declare class SchemaViewerComponent implements OnChanges {
|
|
8346
|
+
private readonly registry;
|
|
8347
|
+
private readonly normalizer;
|
|
8348
|
+
private readonly injected;
|
|
8349
|
+
context?: SchemaViewerContext;
|
|
8350
|
+
private _ctx;
|
|
8351
|
+
ctx: i0.Signal<SchemaViewerContext | undefined>;
|
|
8352
|
+
private _componentMeta;
|
|
8353
|
+
componentMeta: i0.Signal<ComponentDocMeta | undefined>;
|
|
8354
|
+
private _normalizedFields;
|
|
8355
|
+
normalizedFields: i0.Signal<FieldDefinition[]>;
|
|
8356
|
+
private _copyNote;
|
|
8357
|
+
copyNote: i0.Signal<string | null>;
|
|
8358
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
8359
|
+
private refresh;
|
|
8360
|
+
hasAnyData(): boolean;
|
|
8361
|
+
copyAll(): void;
|
|
8362
|
+
copySection(kind: 'component' | 'config' | 'backend' | 'fields'): void;
|
|
8363
|
+
private copyPayload;
|
|
8364
|
+
private flashNote;
|
|
8365
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SchemaViewerComponent, never>;
|
|
8366
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SchemaViewerComponent, "praxis-schema-viewer", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, true, never>;
|
|
8367
|
+
}
|
|
8368
|
+
|
|
8369
|
+
/** Optional DI token used by SchemaViewer when input is not provided. */
|
|
8370
|
+
declare const SCHEMA_VIEWER_CONTEXT: InjectionToken<SchemaViewerContext>;
|
|
8371
|
+
|
|
6079
8372
|
interface SchemaIdParams {
|
|
6080
8373
|
path: string;
|
|
6081
8374
|
operation?: string;
|
|
@@ -6104,6 +8397,7 @@ type FetchWithEtagResult = {
|
|
|
6104
8397
|
schema: any;
|
|
6105
8398
|
schemaHash: string;
|
|
6106
8399
|
};
|
|
8400
|
+
declare function parseJsonResponseOrEmpty(res: Response, context?: string): Promise<any>;
|
|
6107
8401
|
declare function fetchWithETag(params: FetchWithEtagParams): Promise<FetchWithEtagResult>;
|
|
6108
8402
|
|
|
6109
8403
|
interface CacheEntry {
|
|
@@ -6167,6 +8461,13 @@ declare class LocalStorageCacheAdapter implements CacheAdapter {
|
|
|
6167
8461
|
private broadcast;
|
|
6168
8462
|
}
|
|
6169
8463
|
|
|
8464
|
+
declare class MemoryCacheAdapter implements CacheAdapter {
|
|
8465
|
+
private mem;
|
|
8466
|
+
get(schemaId: string): Promise<CacheEntry | undefined>;
|
|
8467
|
+
set(schemaId: string, entry: CacheEntry): Promise<void>;
|
|
8468
|
+
remove(schemaId: string): Promise<void>;
|
|
8469
|
+
}
|
|
8470
|
+
|
|
6170
8471
|
interface GetSchemaParams extends SchemaIdParams {
|
|
6171
8472
|
baseUrl: string;
|
|
6172
8473
|
}
|
|
@@ -6259,5 +8560,5 @@ declare function provideFormHookPresets(presets: Array<FormHookPreset>): Provide
|
|
|
6259
8560
|
/** Register a whitelist of allowed hook ids/patterns. */
|
|
6260
8561
|
declare function provideHookWhitelist(allowed: Array<string | RegExp>): Provider[];
|
|
6261
8562
|
|
|
6262
|
-
export { API_URL, AllowedFileTypes, ApiEndpoint, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentMetadataRegistry, ConnectionManagerService, DEFAULT_TABLE_CONFIG, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EmptyStateCardComponent, ErrorMessageService, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FormHooksRegistry, GLOBAL_CONFIG, GenericCrudService, GlobalConfigService, IconPickerService, IconPosition, IconSize, LocalConnectionStorage, LocalStorageCacheAdapter, LocalStorageConfigService, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, OverlayDeciderService, PraxisCore, PraxisIconDirective, PraxisIconPickerComponent, ResourceQuickConnectComponent, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryService, ValidationPattern, applyLocalCustomizations$1 as applyLocalCustomizations, applyLocalCustomizations as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getEssentialConfig, getReferencedFieldMetadata, getTextTransformer, isCssTextTransform, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergeTableConfigs, minWordsValidator, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, notifySuccessHook, prefillFromContextHook, provideDefaultFormHooks, provideFormHookPresets, provideFormHooks, provideGlobalConfig, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveHidden, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage };
|
|
6263
|
-
export type { AccessibilityConfig, ActionDefinition, ActionMessagesConfig, AnimationConfig, AnnouncementConfig, ApiUrlConfig, ApiUrlEntry, BackConfig, BaseMaterialInputMetadata, BatchDeleteOptions, BatchDeleteProgress, BatchDeleteResult, BorderConfig, Breakpoint, BuiltValidators, BulkAction, BulkActionsConfig, CacheAdapter, CacheConfig, CacheEntry, ColorConfig, ColumnAlign, ColumnDefinition, ColumnHidden, ColumnOffset, ColumnOrder, ColumnSpan, ComponentDocMeta, ComponentMetadata, ConfigMetadata, ConfigStorage, ConfirmationConfig, ConnectionConfigV1, ConnectionStorage, ContextAction, ContextActionsConfig, BackConfig as CoreBackConfig, CoreFieldMetadata, CrudOperationOptions, CsvExportConfig, CurrencyLocaleConfig, CursorPage, CursorRequest, CustomizationLog, DataConfig, DataTransformation, DataValidationConfig, DateRangePreset, DateRangeValue, DateTimeLocaleConfig, DebounceConfig, DeviceKind, DraggingConfig, ElevationConfig, EmptyAction, EmptyStateConfig, EndpointConfig, EnhancedValidationConfig, ExcelExportConfig, ExcelStylingConfig, ExportConfig, ExportFormat, ExportMessagesConfig, ExportTemplate, FetchWithEtagParams, FetchWithEtagResult, FieldConflict, FieldDefinition, FieldMetadata, FieldModification, FieldOption, FieldsetLayout, FilterOptions, FilteringConfig, FormActionButton, FormActionConfirmationEvent, FormActionsLayout, FormApiLayout, FormBehaviorLayout, FormColumn, FormConfig, FormConfigMetadata, FormConfigState, FormCustomActionEvent, FormEntityEvent, FormHook, FormHookContext, FormHookDeclaration, FormHookDeclarationLite, FormHookOutcome, FormHookPreset, FormHookPresetMatch, FormHookStage, FormHookStatus, FormHooksLayout, FormInitializationError, FormLayout, FormLayoutRule, FormMessagesLayout, FormMetadataLayout, FormOpenMode, FormReadyEvent, FormRow, FormRowLayout,
|
|
8563
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_TELEMETRY_TRANSPORT, PraxisCore, PraxisGlobalErrorHandler, PraxisIconDirective, PraxisIconPickerComponent, PraxisLoadingInterceptor, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$1 as applyLocalCustomizations, applyLocalCustomizations as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, isCssTextTransform, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisLoadingDefaults, providePraxisLogging, providePraxisToastGlobalActions, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterAliasToBaseControlType, resolveInlineFilterControlTypeAlias, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage };
|
|
8564
|
+
export type { AccessibilityConfig, ActionDefinition, ActionMessagesConfig, AiCapability, AiCapabilityCatalog, AiCapabilityCategory, AiCapabilityCategoryMap, AiConcept, AiConceptPack, AiValueKind, AnimationConfig, AnnouncementConfig, ApiConfigStorageOptions, ApiUrlConfig, ApiUrlEntry, AsyncConfigStorage, BackConfig, BaseMaterialInputMetadata, BatchDeleteOptions, BatchDeleteProgress, BatchDeleteResult, BorderConfig, Breakpoint, BuiltValidators, BulkAction, BulkActionsConfig, CacheAdapter, CacheConfig, CacheEntry, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColorConfig, ColumnAlign, ColumnDefinition, ColumnHidden, ColumnOffset, ColumnOrder, ColumnSpan, ComponentActionParam, ComponentContextAction, ComponentContextOption, ComponentContextOptionMode, ComponentContextOptionsByPathEntry, ComponentContextPack, ComponentDocMeta, ComponentKeyParams, ComponentMergePatch, ComponentMetadata, ConfigMetadata, ConfigStorage, ConfirmationConfig, ConnectionConfigV1, ConnectionStorage, ContextAction, ContextActionsConfig, BackConfig as CoreBackConfig, CoreFieldMetadata, CrudOperationOptions, CsvExportConfig, CurrencyLocaleConfig, CursorPage, CursorRequest, CustomizationLog, DataConfig, DataTransformation, DataValidationConfig, DateRangePreset, DateRangeValue, DateTimeLocaleConfig, DebounceConfig, DeviceKind, DraggingConfig, Capability as DynamicPageCapability, CapabilityCatalog as DynamicPageCapabilityCatalog, CapabilityCategory as DynamicPageCapabilityCategory, ValueKind as DynamicPageValueKind, ElevationConfig, EmptyAction, EmptyStateConfig, EndpointConfig, EnhancedValidationConfig, ExcelExportConfig, ExcelStylingConfig, ExportConfig, ExportFormat, ExportMessagesConfig, ExportTemplate, FetchWithEtagParams, FetchWithEtagResult, FieldConflict, FieldDefinition, FieldMetadata, FieldModification, FieldOption, FieldSelectorRegistryMap, FieldsetLayout, FilterOptions, FilteringConfig, FormActionButton, FormActionConfirmationEvent, FormActionsLayout, FormApiLayout, FormBehaviorLayout, FormColumn, FormConfig, FormConfigMetadata, FormConfigState, FormCustomActionEvent, FormEntityEvent, FormHook, FormHookContext, FormHookDeclaration, FormHookDeclarationLite, FormHookOutcome, FormHookPreset, FormHookPresetMatch, FormHookStage, FormHookStatus, FormHooksLayout, FormInitializationError, FormLayout, FormLayoutRule, FormMessagesLayout, FormMetadataLayout, FormModeHints, FormOpenMode, FormReadyEvent, FormRow, FormRowLayout, FormRuleTargetType, FormSection, FormSubmitEvent, FormValidationEvent, FormValueChangeEvent, FormattingLocaleConfig, GeneralExportConfig, GetSchemaParams, GlobalActionCatalogEntry, GlobalActionContext, GlobalActionField, GlobalActionFieldOption, GlobalActionFieldType, GlobalActionHandler, GlobalActionHandlerEntry, GlobalActionId, GlobalActionParam, GlobalActionResult, GlobalActionSpec, GlobalActionUiSchema, GlobalAiConfig, GlobalAiEmbeddingConfig, GlobalAiProvider, GlobalAnalyticsService, GlobalApiClient, GlobalCacheConfig, GlobalConfig, GlobalCrudActionDefaults, GlobalCrudConfig, GlobalCrudDefaults, GlobalDialogAction, GlobalDialogAnimation, GlobalDialogAriaRole, GlobalDialogConfig, GlobalDialogConfigEntry, GlobalDialogPosition, GlobalDialogService, GlobalDialogStyles, GlobalDynamicFieldsAsyncSelectConfig, GlobalDynamicFieldsCascadeConfig, GlobalDynamicFieldsConfig, GlobalRouteGuardResolver, GlobalTableConfig, GlobalToastService, GridItemLayout, GridPageDefinition, GridPageDefinitionWithIds, GridWidgetInstance, HookResolver, InlineFilterControlType, InlineRangeDistributionBin, InlineRangeDistributionConfig, InteractionConfig, JsonExportConfig, KeyboardAccessibilityConfig, LazyLoadingConfig, LegacyTableConfig, LoadingConfig, LoadingContext, LoadingPhase$1 as LoadingPhase, LoadingScope, LoadingState, LoadingPhase as LoadingStatePhase, LocalizationConfig, LocateRequest, LoggerConfig, LoggerContext, LoggerEvent, LoggerLevel, LoggerLogOptions, LoggerNormalizedError, LoggerPIIConfig, LoggerSink, LoggerTelemetryPayload, LoggerThrottleConfig, MarginConfig, MaterialAutocompleteMetadata, MaterialButtonMetadata, MaterialButtonToggleMetadata, MaterialCheckboxMetadata, MaterialChipsMetadata, MaterialColorInputMetadata, MaterialColorPickerMetadata, MaterialCpfCnpjMetadata, MaterialCurrencyMetadata, MaterialDateInputMetadata, MaterialDateRangeMetadata, MaterialDatepickerMetadata, MaterialDatetimeLocalInputMetadata, MaterialDesignConfig, MaterialEmailInputMetadata, MaterialEmailMetadata, MaterialInputMetadata, MaterialMonthInputMetadata, MaterialMultiSelectTreeMetadata, MaterialNumericMetadata, MaterialPasswordMetadata, MaterialPhoneMetadata, MaterialPriceRangeMetadata, MaterialRadioMetadata, MaterialRangeSliderMetadata, MaterialRatingMetadata, MaterialSearchInputMetadata, MaterialSelectMetadata, MaterialSelectionListMetadata, MaterialSliderMetadata, MaterialTextareaMetadata, MaterialTimeInputMetadata, MaterialTimeRangeMetadata, MaterialTimeTrackShift, MaterialTimepickerMetadata, MaterialToggleMetadata, MaterialTransferListMetadata, MaterialTreeNode, MaterialTreeSelectMetadata, MaterialUrlInputMetadata, MaterialWeekInputMetadata, MaterialYearInputMetadata, MemoryConfig, MessageTemplate, MessagesConfig, NestedFieldsetLayout, NormalizedError, NumberLocaleConfig, ObservabilityAlert, ObservabilityAlertGroupBy, ObservabilityAlertRule, ObservabilityAlertSeverity, ObservabilityCountBucket, ObservabilityDashboardOptions, ObservabilityIngestInput, ObservabilityMetricsSnapshot, OptionDTO, OverlayDecider, OverlayDecision, OverlayDecisionContext, OverlayDecisionMatrix, OverlayPattern, OverlayRange, OverlayRule, OverlayRuleMatch, OverlayThresholds, Page, PageIdentity, PageableRequest, PaginationConfig, PartialFieldMetadata, PdfExportConfig, PerformanceConfig, PersistedPageConfig, PersistedWidgetInstance, PlainObject, PluginConfig, PollingConfig, PraxisAnalyticsOptions, PraxisAuthContext, PraxisGlobalActionsOptions, PraxisGlobalConfigBootstrapOptions, PraxisLoadingRenderer, PraxisLoggingEnvironment, PraxisLoggingOptions, PraxisToastOptions, PriceRangeValue, RangeSliderInlineTexts, RangeSliderQuickPreset, RangeSliderQuickPresetLabels, RangeSliderValue, RenderingConfig, ResizingConfig, ResolvePresetOptions, ResponsiveConfig, RowAction, RowActionsConfig, RulePropertyDefinition, RulePropertySchema, RulePropertyType, RunHooksResult, SchemaIdParams, SchemaMetaInfo, SchemaViewerContext, SelectionConfig, SerializableFieldMetadata, SettingsPanelBridge, SettingsPanelOpenContent, SettingsPanelOpenOptions, SettingsPanelRef, SettingsValueProvider, SortingConfig, SpacingConfig, StateMessagesConfig, SyncConfig, SyncResult, TableActionsConfig, TableAppearanceConfig, TableBehaviorConfig, TableConfig, TableConfigV2 as TableConfigModern, TableConfigState, TableConfigV2, TableExpansionConfig, TableLocalDataModeConfig, TelemetryEvent, TelemetryLoggerSinkOptions, TelemetryTransport, TextTransformApply, TextTransformName, ThemeConfig, ToolbarAction, ToolbarConfig, ToolbarFilterConfig, ToolbarLayoutConfig, ToolbarSettingsConfig, TypographyConfig, ValidationContext, ValidationError, ValidationMessagesConfig, ValidationResult, ValidationRule, ValidatorFunction, ValidatorOptions, ValueKind$1 as ValueKind, VirtualizationConfig, WidgetConnection, WidgetDefinition, WidgetInstance, WidgetPageDefinition, WidgetPageLayout, WidgetPageOrientation, WidgetShellAction, WidgetShellActionEvent, WidgetShellActionPlacement, WidgetShellConfig, WidgetShellWindowActions };
|