jsegd-bpm 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jsegd-bpm.js +1 -1
- package/dist/jsegd-bpm.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets/workflow-C51JnySw.css +0 -72
- package/dist/jsegd-fluig.d.ts +0 -892
- package/dist/jsegd-fluig.js +0 -2
- package/dist/jsegd-fluig.js.map +0 -1
package/dist/jsegd-fluig.d.ts
DELETED
|
@@ -1,892 +0,0 @@
|
|
|
1
|
-
import { ICache } from 'jsegd';
|
|
2
|
-
import { Alpine } from 'alpinejs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Resposta de sucesso retornada pelo endpoint `/dataset/api/v2/dataset-handle/search` (HTTP 200).
|
|
6
|
-
*/
|
|
7
|
-
interface DatasetResponse {
|
|
8
|
-
/** Nomes dos campos retornados pelo dataset. */
|
|
9
|
-
columns: string[];
|
|
10
|
-
/** Linhas de dados retornadas pelo dataset. */
|
|
11
|
-
values: DatasetRow[];
|
|
12
|
-
}
|
|
13
|
-
/** Uma linha do dataset — chaves são os nomes dos campos retornados. */
|
|
14
|
-
type DatasetRow = Record<string, unknown>;
|
|
15
|
-
/**
|
|
16
|
-
* Resposta de erro retornada pela API Fluig (HTTP 400, 401, 500).
|
|
17
|
-
*/
|
|
18
|
-
interface DatasetError {
|
|
19
|
-
/** Código de erro. */
|
|
20
|
-
code: string;
|
|
21
|
-
/** Mensagem resumida do erro. */
|
|
22
|
-
message: string;
|
|
23
|
-
/** Mensagem detalhada do erro. */
|
|
24
|
-
detailedMessage: string;
|
|
25
|
-
/** URL de ajuda, quando disponível. */
|
|
26
|
-
helpUrl?: string;
|
|
27
|
-
/** Detalhes adicionais do erro, quando presentes. */
|
|
28
|
-
details?: unknown[];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
declare enum ConstraintsType {
|
|
32
|
-
MUST = "MUST",
|
|
33
|
-
MUST_NOT = "MUST_NOT",
|
|
34
|
-
SHOULD = "SHOULD"
|
|
35
|
-
}
|
|
36
|
-
interface SearchParams {
|
|
37
|
-
/** Código do dataset — obrigatório. */
|
|
38
|
-
datasetId: string;
|
|
39
|
-
/** Campos a retornar; omitir para retornar todos os campos. */
|
|
40
|
-
field?: string[];
|
|
41
|
-
/** Registros a ignorar — usado para paginação (padrão: 0). */
|
|
42
|
-
offset?: number;
|
|
43
|
-
/** Máximo de registros a retornar (padrão: 300; 0 = todos). */
|
|
44
|
-
limit?: number;
|
|
45
|
-
/** Nome do campo para ordenação, opcionalmente sufixado com _ASC ou _DESC. */
|
|
46
|
-
orderby?: string;
|
|
47
|
-
constraintsField?: string[];
|
|
48
|
-
constraintsInitialValue?: string[];
|
|
49
|
-
constraintsFinalValue?: string[];
|
|
50
|
-
constraintsType?: ConstraintsType[];
|
|
51
|
-
/** Quando verdadeiro, o curinga % é aceito no valor inicial/final correspondente. */
|
|
52
|
-
constraintsLikeSearch?: boolean[];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Promise cancelável retornada por {@link WorkerManager.query}.
|
|
57
|
-
*/
|
|
58
|
-
type CancelablePromise<T> = {
|
|
59
|
-
/** Promise que resolve com o resultado da consulta. */
|
|
60
|
-
promise: Promise<T>;
|
|
61
|
-
/** Função para cancelar a requisição e liberar o worker. */
|
|
62
|
-
cancel: () => void;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
type CacheOptions = {
|
|
66
|
-
storeName: string;
|
|
67
|
-
cacheExpirationMs: number;
|
|
68
|
-
};
|
|
69
|
-
interface WorkerManagerOptions {
|
|
70
|
-
poolSize?: number;
|
|
71
|
-
/** Injeta uma instância existente de ICache (compartilhada entre componentes). */
|
|
72
|
-
cache?: ICache;
|
|
73
|
-
/** Cria um LocalCache interno com as opções fornecidas. */
|
|
74
|
-
cacheOptions?: CacheOptions;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Gerencia um pool de Web Workers para executar consultas à API de Datasets do Fluig fora da thread principal.
|
|
78
|
-
* Suporta deduplicacão de requisições, cache em IndexedDB e cancelamento HTTP real via AbortController.
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```typescript
|
|
82
|
-
* import { WorkerManager, ConstraintsType } from 'jsegd-fluig'
|
|
83
|
-
*
|
|
84
|
-
* const manager = new WorkerManager({
|
|
85
|
-
* poolSize: 4,
|
|
86
|
-
* cacheOptions: { storeName: 'datasetCache', cacheExpirationMs: 24 * 60 * 60 * 1000 }
|
|
87
|
-
* })
|
|
88
|
-
*
|
|
89
|
-
* const { promise, cancel } = manager.query('https://tenant.fluig.com', {
|
|
90
|
-
* datasetId: 'dsColaboradores',
|
|
91
|
-
* field: ['nome', 'email'],
|
|
92
|
-
* constraintsField: ['ativo'],
|
|
93
|
-
* constraintsInitialValue: ['true'],
|
|
94
|
-
* constraintsType: [ConstraintsType.MUST],
|
|
95
|
-
* })
|
|
96
|
-
*
|
|
97
|
-
* // Cancelar se necessário:
|
|
98
|
-
* // cancel()
|
|
99
|
-
*
|
|
100
|
-
* const result = await promise
|
|
101
|
-
* console.log(result.columns) // ['nome', 'email']
|
|
102
|
-
* console.log(result.values) // [{ nome: 'João', email: 'joao@co.com' }, ...]
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
declare class WorkerManager {
|
|
106
|
-
private pool;
|
|
107
|
-
private workerMeta;
|
|
108
|
-
private taskQueue;
|
|
109
|
-
private inFlight;
|
|
110
|
-
private cache;
|
|
111
|
-
private nextRequestId;
|
|
112
|
-
constructor(options?: WorkerManagerOptions);
|
|
113
|
-
/**
|
|
114
|
-
* Consulta a API de Datasets do Fluig. Retorna uma CancelablePromise.
|
|
115
|
-
* Chame `cancel()` para abortar a requisição HTTP e liberar o worker imediatamente.
|
|
116
|
-
*/
|
|
117
|
-
query(baseUrl: string, params: SearchParams): CancelablePromise<DatasetResponse>;
|
|
118
|
-
/**
|
|
119
|
-
* Encerra todos os workers do pool. Chame quando o gerenciador não for mais necessário
|
|
120
|
-
* para evitar vazamentos de memória e workers zumbis.
|
|
121
|
-
*/
|
|
122
|
-
terminate(): void;
|
|
123
|
-
private deduplicateOrEnqueue;
|
|
124
|
-
private enqueueRequest;
|
|
125
|
-
private scheduleNext;
|
|
126
|
-
private abortRequest;
|
|
127
|
-
private handleResponse;
|
|
128
|
-
private buildUrl;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
type UploadStatus = 'success' | 'error' | 'reset';
|
|
132
|
-
interface UploadEventDetail {
|
|
133
|
-
status: UploadStatus;
|
|
134
|
-
}
|
|
135
|
-
declare global {
|
|
136
|
-
interface WindowEventMap {
|
|
137
|
-
'jsegd:upload:success': CustomEvent<UploadEventDetail>;
|
|
138
|
-
'jsegd:upload:error': CustomEvent<UploadEventDetail>;
|
|
139
|
-
'jsegd:upload:reset': CustomEvent<UploadEventDetail>;
|
|
140
|
-
'jsegd:attachment:download': CustomEvent<{
|
|
141
|
-
documentId: number;
|
|
142
|
-
}>;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/** Origem do upload de um anexo */
|
|
147
|
-
type AttachmentSource = 'button' | 'toolbar' | 'drag-drop';
|
|
148
|
-
/**
|
|
149
|
-
* Metadados associados a um único documento anexado ao processo.
|
|
150
|
-
* Persiste informações que o ECM não armazena nativamente.
|
|
151
|
-
*/
|
|
152
|
-
interface AttachmentRecord {
|
|
153
|
-
/** ID do documento no ECM */
|
|
154
|
-
documentId: number;
|
|
155
|
-
/** Mecanismo pelo qual o arquivo foi adicionado */
|
|
156
|
-
source: AttachmentSource;
|
|
157
|
-
/**
|
|
158
|
-
* Descrição base do `AttachButton` que originou o upload.
|
|
159
|
-
* Presente apenas quando `source === 'button'`.
|
|
160
|
-
*/
|
|
161
|
-
buttonDescription?: string;
|
|
162
|
-
/** Filtro de tipos de arquivo ativo no momento do upload (`null` = qualquer tipo) */
|
|
163
|
-
accept: string | null;
|
|
164
|
-
/** Número de sequência da movimentação do processo em que foi anexado */
|
|
165
|
-
workflowSequence: number;
|
|
166
|
-
/** Data e hora do upload em ISO 8601 */
|
|
167
|
-
uploadedAt: string;
|
|
168
|
-
/**
|
|
169
|
-
* Metadados arbitrários adicionados pelo consumidor da biblioteca.
|
|
170
|
-
* Nunca interpretado internamente — apenas serializado/desserializado.
|
|
171
|
-
*/
|
|
172
|
-
custom?: Record<string, unknown>;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Implementa um botão para gerenciar anexos
|
|
177
|
-
* @hideconstructor
|
|
178
|
-
* @example
|
|
179
|
-
* ```html
|
|
180
|
-
* <attachment-button description="CONTRATO"></attachment-button>
|
|
181
|
-
* ```
|
|
182
|
-
*/
|
|
183
|
-
declare class AttachButton extends HTMLElement {
|
|
184
|
-
/**
|
|
185
|
-
* Descrição do tipo de anexo gerenciado pelo botão.
|
|
186
|
-
* Quando vazio, um modal é exibido para o usuário informar a descrição no momento do upload.
|
|
187
|
-
* @defaultValue `''`
|
|
188
|
-
*/
|
|
189
|
-
description: string;
|
|
190
|
-
/**
|
|
191
|
-
* Filtro de tipos de arquivo aceitos pelo seletor nativo (ex: `".pdf,.docx"`).
|
|
192
|
-
* `null` aceita qualquer tipo de arquivo.
|
|
193
|
-
*/
|
|
194
|
-
accept: string | null;
|
|
195
|
-
noaddbutton: string | null;
|
|
196
|
-
noviewbutton: string | null;
|
|
197
|
-
noeditbutton: string | null;
|
|
198
|
-
nodeletebutton: string | null;
|
|
199
|
-
private handleSuccess;
|
|
200
|
-
private handleError;
|
|
201
|
-
private handleDefault;
|
|
202
|
-
constructor();
|
|
203
|
-
static get observedAttributes(): string[];
|
|
204
|
-
attributeChangedCallback(name: string, _oldValue: string, newValue: string): void;
|
|
205
|
-
disconnectedCallback(): void;
|
|
206
|
-
/**
|
|
207
|
-
* @internal
|
|
208
|
-
*/
|
|
209
|
-
connectedCallback(): void;
|
|
210
|
-
private displayButtons;
|
|
211
|
-
private addButton;
|
|
212
|
-
private viewButton;
|
|
213
|
-
private editButton;
|
|
214
|
-
private removeButton;
|
|
215
|
-
private showModal;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Modo de operação da tabela de anexos.
|
|
220
|
-
* - `buttons-only` — somente download por linha; uploads exclusivamente via `AttachButton` externos
|
|
221
|
-
* - `self-managed` — gerencia seu próprio ciclo de upload; exibe ações completas por linha;
|
|
222
|
-
* aceita `AttachButton` externos cujos atributos são herdados pela linha do anexo
|
|
223
|
-
*/
|
|
224
|
-
type AttachmentsTableMode = 'buttons-only' | 'self-managed';
|
|
225
|
-
/** Opções de configuração de `AttachmentsTable` */
|
|
226
|
-
interface AttachmentsTableOptions {
|
|
227
|
-
/** Modo de operação. Obrigatório — sem valor padrão. */
|
|
228
|
-
mode: AttachmentsTableMode;
|
|
229
|
-
/**
|
|
230
|
-
* Tipos de arquivo aceitos nos uploads avulsos do modo `self-managed`.
|
|
231
|
-
* Ex: `".pdf,.docx"`. `null` aceita qualquer tipo.
|
|
232
|
-
*/
|
|
233
|
-
accept?: string | null;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Registro de um `AttachButton` na `AttachmentsTable`.
|
|
237
|
-
* Armazenado para associar anexos existentes ao botão que os originou.
|
|
238
|
-
*/
|
|
239
|
-
interface AttachButtonRegistration {
|
|
240
|
-
/** Descrição base usada pelo botão (sem sufixo `_V\d+`). */
|
|
241
|
-
description: string;
|
|
242
|
-
/** Filtro de tipos de arquivo definido no botão. */
|
|
243
|
-
accept: string | null;
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Cria e gerencia uma tabela de anexos customizada no frame pai,
|
|
247
|
-
* mantendo a tabela nativa do Fluig oculta.
|
|
248
|
-
* @hideconstructor
|
|
249
|
-
*/
|
|
250
|
-
declare class AttachmentsTable {
|
|
251
|
-
private static instance;
|
|
252
|
-
private static options;
|
|
253
|
-
private static attachInstance;
|
|
254
|
-
private static buttonRegistry;
|
|
255
|
-
private constructor();
|
|
256
|
-
/**
|
|
257
|
-
* Retorna a instância singleton da tabela de anexos.
|
|
258
|
-
* Deve ser chamado uma única vez durante a inicialização do form.
|
|
259
|
-
*
|
|
260
|
-
* @param options Configuração obrigatória de modo e accept
|
|
261
|
-
*/
|
|
262
|
-
static getInstance(options: AttachmentsTableOptions): AttachmentsTable;
|
|
263
|
-
/**
|
|
264
|
-
* Registra um `AttachButton` para que seus metadados sejam associados
|
|
265
|
-
* às linhas de anexo originadas por aquele botão.
|
|
266
|
-
* Só tem efeito no modo `self-managed`.
|
|
267
|
-
* @internal Chamado por `AttachButton` durante sua inicialização.
|
|
268
|
-
*/
|
|
269
|
-
static registerButton(registration: AttachButtonRegistration): void;
|
|
270
|
-
private static resolveButtonRegistration;
|
|
271
|
-
private static start;
|
|
272
|
-
private static render;
|
|
273
|
-
private static hydrateFromMetadata;
|
|
274
|
-
private static persistMetadata;
|
|
275
|
-
private static openNameInputModal;
|
|
276
|
-
private static getRows;
|
|
277
|
-
private static setOrder;
|
|
278
|
-
private static sortBy;
|
|
279
|
-
private static getCellValue;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/** Entrada de um arquivo para upload em lote via drag-and-drop */
|
|
283
|
-
type DragDropEntry = {
|
|
284
|
-
file: File;
|
|
285
|
-
name: string;
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
type FieldError = {
|
|
289
|
-
field?: HTMLElement | null;
|
|
290
|
-
errorMessage: string;
|
|
291
|
-
};
|
|
292
|
-
declare class BeforeSendValidate {
|
|
293
|
-
private static clearAllErrors;
|
|
294
|
-
static throwValidationError(fields: FieldError[]): never;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Override de `sendRequestEvent()` do widget de processo.
|
|
299
|
-
* Executa os hooks `beforeValidate` e `afterValidate` em sequência antes de enviar a solicitação.
|
|
300
|
-
* Reabilita os botões de ação em caso de erro ou quando a validação falha.
|
|
301
|
-
*/
|
|
302
|
-
declare function sendRequestEvent(this: ECM_WKFView): Promise<void>;
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Contrato dos hooks customizáveis do widget de processo.
|
|
306
|
-
* Estas funções são registradas pelo `WorkflowViewPatcher` e executadas em `send-request.ts`.
|
|
307
|
-
*/
|
|
308
|
-
interface IWorkflowViewHooks {
|
|
309
|
-
/**
|
|
310
|
-
* Executado ANTES da validação principal do widget.
|
|
311
|
-
* Se lançar exceção (sync ou async), o envio é cancelado e os botões são reabilitados.
|
|
312
|
-
*/
|
|
313
|
-
beforeValidate?: () => void | Promise<void>;
|
|
314
|
-
/**
|
|
315
|
-
* Executado APÓS `beforeSendValidate` retornar `true`, mas ANTES do envio efetivo.
|
|
316
|
-
* Se lançar exceção (sync ou async), o envio é cancelado e os botões são reabilitados.
|
|
317
|
-
*/
|
|
318
|
-
afterValidate?: () => void | Promise<void>;
|
|
319
|
-
/**
|
|
320
|
-
* Executado quando a movimentação do processo é concluída com sucesso.
|
|
321
|
-
*/
|
|
322
|
-
onMoveSuccess?: () => void | Promise<void>;
|
|
323
|
-
/**
|
|
324
|
-
* Executado quando ocorre erro na movimentação do processo.
|
|
325
|
-
*/
|
|
326
|
-
onMoveError?: () => void | Promise<void>;
|
|
327
|
-
/**
|
|
328
|
-
* Executado para manipular os links exibidos na página de conclusão da movimentação.
|
|
329
|
-
*
|
|
330
|
-
* @param message - Objeto de mensagem de conclusão do processo.
|
|
331
|
-
*/
|
|
332
|
-
onCompletionLinkAdd?: (message: ProcessCompletionMessage) => void | Promise<void>;
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Shape do objeto de mensagem de conclusão do processo.
|
|
336
|
-
* Passado como parâmetro para o hook `onCompletionLinkAdd`.
|
|
337
|
-
*/
|
|
338
|
-
interface ProcessCompletionMessage {
|
|
339
|
-
links: ProcessCompletionLink[];
|
|
340
|
-
[key: string]: unknown;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Shape de um link na página de conclusão da movimentação.
|
|
344
|
-
*/
|
|
345
|
-
interface ProcessCompletionLink {
|
|
346
|
-
description: string;
|
|
347
|
-
href?: string;
|
|
348
|
-
bind?: string;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
type HooksMap = {
|
|
352
|
-
beforeValidate: Array<() => void | Promise<void>>;
|
|
353
|
-
afterValidate: Array<() => void | Promise<void>>;
|
|
354
|
-
onMoveSuccess: Array<() => void | Promise<void>>;
|
|
355
|
-
onMoveError: Array<() => void | Promise<void>>;
|
|
356
|
-
onCompletionLinkAdd: Array<(message: ProcessCompletionMessage) => void | Promise<void>>;
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Mapa de substituições que serão aplicadas ao widget nativo de processo.
|
|
361
|
-
*/
|
|
362
|
-
declare const overrides: {
|
|
363
|
-
sendRequestEvent: typeof sendRequestEvent;
|
|
364
|
-
};
|
|
365
|
-
/**
|
|
366
|
-
* Tipo do mapa de substituições.
|
|
367
|
-
*/
|
|
368
|
-
type OverrideMap = typeof overrides;
|
|
369
|
-
/**
|
|
370
|
-
* Classe utilitária para substituir métodos no widget nativo de processo.
|
|
371
|
-
*
|
|
372
|
-
* Preserva os métodos originais para permitir reversão via `restore()`.
|
|
373
|
-
*
|
|
374
|
-
* @example
|
|
375
|
-
* ```typescript
|
|
376
|
-
* // Aguardar inicialização do widget de processo
|
|
377
|
-
* await WorkflowViewPatcher.init()
|
|
378
|
-
*
|
|
379
|
-
* // Aplicar todos os patches registrados
|
|
380
|
-
* WorkflowViewPatcher.patchAll()
|
|
381
|
-
*
|
|
382
|
-
* // Registrar hooks
|
|
383
|
-
* WorkflowViewPatcher.addBeforeValidate(async () => {
|
|
384
|
-
* console.log('Antes da validação')
|
|
385
|
-
* })
|
|
386
|
-
*
|
|
387
|
-
* WorkflowViewPatcher.addAfterValidate(async () => {
|
|
388
|
-
* console.log('Após a validação')
|
|
389
|
-
* })
|
|
390
|
-
* ```
|
|
391
|
-
*/
|
|
392
|
-
declare class WorkflowViewPatcher {
|
|
393
|
-
private static isInitialized;
|
|
394
|
-
private static isInitializing;
|
|
395
|
-
private static originalMethods;
|
|
396
|
-
/**
|
|
397
|
-
* Inicializa o patcher aguardando o carregamento do widget de processo no frame pai.
|
|
398
|
-
*
|
|
399
|
-
* Chamadas repetidas retornam imediatamente se já inicializado.
|
|
400
|
-
*
|
|
401
|
-
* @param timeout - Tempo máximo de espera em ms (padrão: 5000ms)
|
|
402
|
-
* @returns Promise<void>
|
|
403
|
-
*
|
|
404
|
-
* @throws {Error} Se outra chamada a `init()` já estiver em progresso
|
|
405
|
-
* @throws {Error} Se o widget `ECM_WKFView` não estiver disponível após o timeout
|
|
406
|
-
*
|
|
407
|
-
* @example
|
|
408
|
-
* ```typescript
|
|
409
|
-
* await WorkflowViewPatcher.init()
|
|
410
|
-
* WorkflowViewPatcher.patchAll()
|
|
411
|
-
* ```
|
|
412
|
-
*/
|
|
413
|
-
static init(timeout?: number): Promise<void>;
|
|
414
|
-
/**
|
|
415
|
-
* Aplica o patch de um override específico no widget de processo.
|
|
416
|
-
*
|
|
417
|
-
* Salva o método original antes de sobrescrever, permitindo reversão via `restore()`.
|
|
418
|
-
*
|
|
419
|
-
* @param attr - Nome do método a ser substituído
|
|
420
|
-
* @throws {Error} Se `init()` não tiver sido chamado antes
|
|
421
|
-
* @throws {Error} Se o override não estiver registrado no mapa de substituições
|
|
422
|
-
*/
|
|
423
|
-
static patch(attr: keyof OverrideMap): void;
|
|
424
|
-
/**
|
|
425
|
-
* Aplica patches para múltiplos métodos do widget de processo.
|
|
426
|
-
*
|
|
427
|
-
* @param attrs - Array com nomes dos métodos a serem substituídos
|
|
428
|
-
* @throws {Error} Se `init()` não tiver sido chamado antes
|
|
429
|
-
*/
|
|
430
|
-
static patchMany(attrs: (keyof OverrideMap)[]): void;
|
|
431
|
-
/**
|
|
432
|
-
* Aplica todos os patches registrados no mapa de substituições.
|
|
433
|
-
* @throws {Error} Se `init()` não tiver sido chamado antes
|
|
434
|
-
*/
|
|
435
|
-
static patchAll(): void;
|
|
436
|
-
/**
|
|
437
|
-
* Restaura todos os métodos do widget para as implementações originais.
|
|
438
|
-
*
|
|
439
|
-
* Deve ser chamado ao desmontar o componente em SPAs, para evitar que os patches
|
|
440
|
-
* persistam além do ciclo de vida do formulário. Também zera os flags de estado
|
|
441
|
-
* interno, permitindo reinicialização via `init()`.
|
|
442
|
-
*
|
|
443
|
-
* @example
|
|
444
|
-
* ```typescript
|
|
445
|
-
* // Ao desmontar o formulário
|
|
446
|
-
* WorkflowViewPatcher.restore()
|
|
447
|
-
* ```
|
|
448
|
-
*/
|
|
449
|
-
static restore(): void;
|
|
450
|
-
/**
|
|
451
|
-
* Acessa a lista interna de hooks para um tipo específico.
|
|
452
|
-
* Usado por `sendRequestEvent` para executar os hooks em sequência.
|
|
453
|
-
*
|
|
454
|
-
* @internal
|
|
455
|
-
*/
|
|
456
|
-
static getHooks<K extends keyof HooksMap>(key: K): HooksMap[K];
|
|
457
|
-
/**
|
|
458
|
-
* Registra uma função executada ANTES da validação principal do widget.
|
|
459
|
-
*
|
|
460
|
-
* Múltiplas chamadas acumulam handlers — nenhuma sobrescreve a anterior.
|
|
461
|
-
* Se o handler lançar exceção (sync ou async), o envio é cancelado e os botões são reabilitados.
|
|
462
|
-
*
|
|
463
|
-
* @param fn - Função a ser executada (pode ser async).
|
|
464
|
-
*
|
|
465
|
-
* @example
|
|
466
|
-
* ```typescript
|
|
467
|
-
* WorkflowViewPatcher.addBeforeValidate(async () => {
|
|
468
|
-
* const value = getValue('campo_obrigatorio')
|
|
469
|
-
* if (!value) {
|
|
470
|
-
* throw new Error('Campo obrigatório não preenchido')
|
|
471
|
-
* }
|
|
472
|
-
* })
|
|
473
|
-
* ```
|
|
474
|
-
*/
|
|
475
|
-
static addBeforeValidate(fn: () => void | Promise<void>): void;
|
|
476
|
-
/**
|
|
477
|
-
* Registra uma função executada APÓS `beforeSendValidate` retornar `true`,
|
|
478
|
-
* mas ANTES do envio efetivo da solicitação.
|
|
479
|
-
*
|
|
480
|
-
* Múltiplas chamadas acumulam handlers — nenhuma sobrescreve a anterior.
|
|
481
|
-
* Se o handler lançar exceção (sync ou async), o envio é cancelado e os botões são reabilitados.
|
|
482
|
-
*
|
|
483
|
-
* @param fn - Função a ser executada (pode ser async).
|
|
484
|
-
*
|
|
485
|
-
* @example
|
|
486
|
-
* ```typescript
|
|
487
|
-
* WorkflowViewPatcher.addAfterValidate(async () => {
|
|
488
|
-
* console.log('Validação concluída, preparando envio...')
|
|
489
|
-
* await salvarDadosLocais()
|
|
490
|
-
* })
|
|
491
|
-
* ```
|
|
492
|
-
*/
|
|
493
|
-
static addAfterValidate(fn: () => void | Promise<void>): void;
|
|
494
|
-
/**
|
|
495
|
-
* Registra uma função executada quando a movimentação do processo é concluída com sucesso.
|
|
496
|
-
*
|
|
497
|
-
* Múltiplas chamadas acumulam handlers — nenhuma sobrescreve a anterior.
|
|
498
|
-
*
|
|
499
|
-
* @param fn - Função callback executada em caso de sucesso (pode ser async).
|
|
500
|
-
*
|
|
501
|
-
* @example
|
|
502
|
-
* ```typescript
|
|
503
|
-
* WorkflowViewPatcher.addOnMoveSuccess(() => {
|
|
504
|
-
* console.log('Processo movimentado com sucesso')
|
|
505
|
-
* })
|
|
506
|
-
* ```
|
|
507
|
-
*/
|
|
508
|
-
static addOnMoveSuccess(fn: () => void | Promise<void>): void;
|
|
509
|
-
/**
|
|
510
|
-
* Registra uma função executada quando ocorre erro na movimentação do processo.
|
|
511
|
-
*
|
|
512
|
-
* Múltiplas chamadas acumulam handlers — nenhuma sobrescreve a anterior.
|
|
513
|
-
*
|
|
514
|
-
* @param fn - Função callback executada em caso de erro (pode ser async).
|
|
515
|
-
*
|
|
516
|
-
* @example
|
|
517
|
-
* ```typescript
|
|
518
|
-
* WorkflowViewPatcher.addOnMoveError(() => {
|
|
519
|
-
* console.error('Erro ao movimentar processo')
|
|
520
|
-
* })
|
|
521
|
-
* ```
|
|
522
|
-
*/
|
|
523
|
-
static addOnMoveError(fn: () => void | Promise<void>): void;
|
|
524
|
-
/**
|
|
525
|
-
* Registra uma função para manipular os links da página de conclusão da movimentação.
|
|
526
|
-
*
|
|
527
|
-
* Múltiplas chamadas acumulam handlers — nenhuma sobrescreve a anterior.
|
|
528
|
-
*
|
|
529
|
-
* @param fn - Função que recebe o objeto de conclusão e pode adicionar ou modificar links (pode ser async).
|
|
530
|
-
*
|
|
531
|
-
* @example
|
|
532
|
-
* ```typescript
|
|
533
|
-
* WorkflowViewPatcher.addOnCompletionLinkAdd((message: ProcessCompletionMessage) => {
|
|
534
|
-
* message.links.push({ description: 'Voltar ao início', href: '/inicio' })
|
|
535
|
-
* })
|
|
536
|
-
* ```
|
|
537
|
-
*/
|
|
538
|
-
static addOnCompletionLinkAdd(fn: (message: ProcessCompletionMessage) => void | Promise<void>): void;
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Contrato agnóstico ao Fluig para acesso a dados do formulário e tabelas filhas.
|
|
543
|
-
* Implementado por `FluigFormRepository` (produção) e `MockFormRepository` (testes).
|
|
544
|
-
*/
|
|
545
|
-
interface IFormRepository {
|
|
546
|
-
/**
|
|
547
|
-
* Lê campos do formulário cujo `name` começa com o prefixo informado.
|
|
548
|
-
*
|
|
549
|
-
* @param section Prefixo dos campos no formulário Fluig
|
|
550
|
-
* @returns Objeto parcial com os valores lidos
|
|
551
|
-
*/
|
|
552
|
-
load<T>(section: string): Partial<T>;
|
|
553
|
-
/**
|
|
554
|
-
* Lê todas as linhas visíveis de uma tabela filha do formulário.
|
|
555
|
-
* Cada linha corresponde a um `<tr>` visível da tabela com o `tablename` informado.
|
|
556
|
-
*
|
|
557
|
-
* @param tableName Valor do atributo `tablename` na `<table>` do formulário Fluig
|
|
558
|
-
* @returns Array de objetos com os valores dos campos de cada linha
|
|
559
|
-
*/
|
|
560
|
-
loadTable<T>(tableName: string): T[];
|
|
561
|
-
/**
|
|
562
|
-
* Escreve valores no DOM do formulário para os campos com o prefixo informado.
|
|
563
|
-
*
|
|
564
|
-
* @param section Prefixo dos campos no formulário Fluig
|
|
565
|
-
* @param data Objeto com os valores a persistir
|
|
566
|
-
*/
|
|
567
|
-
save<T>(section: string, data: Partial<T>): void;
|
|
568
|
-
/**
|
|
569
|
-
* Substitui as linhas de uma tabela filha, removendo as existentes e
|
|
570
|
-
* recriando via `wdkAddChild`. Encapsula toda a interação com o DOM.
|
|
571
|
-
*
|
|
572
|
-
* @param tableName Valor do atributo `tablename` na `<table>` do formulário Fluig
|
|
573
|
-
* @param rows Array de objetos a persistir como linhas da tabela
|
|
574
|
-
*/
|
|
575
|
-
saveTable<T>(tableName: string, rows: T[]): void;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Adapter de produção que isola o acesso ao DOM do formulário Fluig e às
|
|
580
|
-
* funções globais `wdkAddChild`/`fnWdkRemoveChild` (definidas em `wdkdetail.js`).
|
|
581
|
-
*
|
|
582
|
-
* Segue o mesmo padrão de fronteira estabelecido por `process-context/` —
|
|
583
|
-
* este é o único arquivo autorizado a referenciar as globais do formulário Fluig.
|
|
584
|
-
*/
|
|
585
|
-
declare class FluigFormRepository implements IFormRepository {
|
|
586
|
-
load<T>(section: string): Partial<T>;
|
|
587
|
-
loadTable<T>(tableName: string): T[];
|
|
588
|
-
save<T>(section: string, data: Partial<T>): void;
|
|
589
|
-
saveTable<T>(tableName: string, rows: T[]): void;
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
* Implementação em memória de `IFormRepository` para uso em testes unitários.
|
|
594
|
-
* Não depende de DOM, jQuery ou Fluig — permite testar Presenters em isolamento.
|
|
595
|
-
*
|
|
596
|
-
* @example
|
|
597
|
-
* const repo = new MockFormRepository()
|
|
598
|
-
* repo.save('vigencia', { prazo: '12', tipoDePrazo: 'Meses' })
|
|
599
|
-
* const data = repo.load<Vigencia>('vigencia')
|
|
600
|
-
* // data.prazo === '12'
|
|
601
|
-
*/
|
|
602
|
-
declare class MockFormRepository implements IFormRepository {
|
|
603
|
-
private readonly sections;
|
|
604
|
-
private readonly tables;
|
|
605
|
-
load<T>(section: string): Partial<T>;
|
|
606
|
-
loadTable<T>(tableName: string): T[];
|
|
607
|
-
save<T>(section: string, data: Partial<T>): void;
|
|
608
|
-
saveTable<T>(tableName: string, rows: T[]): void;
|
|
609
|
-
/**
|
|
610
|
-
* Limpa todo o estado interno — seções e tabelas.
|
|
611
|
-
* Ideal para uso em `beforeEach` nos testes.
|
|
612
|
-
*/
|
|
613
|
-
reset(): void;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
/** Categoria de uma atividade — determina o comportamento na barra de progresso */
|
|
617
|
-
type ActivityKind =
|
|
618
|
-
/** Ação de usuário — estágio atual destacado na barra */
|
|
619
|
-
'human'
|
|
620
|
-
/** Aguardando retorno externo (webhook) — exibe spinner no estágio atual */
|
|
621
|
-
| 'system'
|
|
622
|
-
/** Suporte transversal — sobrepõe banner de alerta; não avança a barra */
|
|
623
|
-
| 'support'
|
|
624
|
-
/** Roteamento interno do motor BPM — invisível na barra */
|
|
625
|
-
| 'routing';
|
|
626
|
-
/** Definição de um módulo (aba/seção) do formulário Fluig */
|
|
627
|
-
interface WorkflowModuleDefinition {
|
|
628
|
-
/** Identificador único do módulo — usado como chave nas políticas de atividade */
|
|
629
|
-
moduleId: string;
|
|
630
|
-
/** Rótulo exibido na navegação */
|
|
631
|
-
label: string;
|
|
632
|
-
/** Nome do ícone exibido junto ao rótulo */
|
|
633
|
-
icon: string;
|
|
634
|
-
/** Posição na ordem de exibição — menor valor aparece primeiro */
|
|
635
|
-
order: number;
|
|
636
|
-
/** Exibe o módulo na barra de navegação lateral/superior */
|
|
637
|
-
showInNavigation: boolean;
|
|
638
|
-
/** Renderiza o conteúdo do módulo no DOM quando visível */
|
|
639
|
-
renderContent: boolean;
|
|
640
|
-
/** Caminho do arquivo HTML incluído como conteúdo do módulo */
|
|
641
|
-
contentIncludePath: string;
|
|
642
|
-
}
|
|
643
|
-
/**
|
|
644
|
-
* Políticas de visibilidade e editabilidade dos módulos para uma atividade.
|
|
645
|
-
* `TModuleId` é inferido automaticamente por `defineWorkflowConfig`.
|
|
646
|
-
*/
|
|
647
|
-
interface ActivityModulePolicy<TModuleId extends string = string> {
|
|
648
|
-
/** Módulos visíveis nesta atividade */
|
|
649
|
-
visible: readonly TModuleId[];
|
|
650
|
-
/** Módulos editáveis nesta atividade (subconjunto de `visible`) */
|
|
651
|
-
editable: readonly TModuleId[];
|
|
652
|
-
/** Módulo ativo (tab selecionada) ao abrir o formulário nesta atividade */
|
|
653
|
-
active?: TModuleId;
|
|
654
|
-
}
|
|
655
|
-
/** Definição de uma atividade do workflow com suas políticas de módulo */
|
|
656
|
-
interface WorkflowActivityDefinition<TModuleId extends string = string> {
|
|
657
|
-
/** Número de sequência da atividade no motor BPM Fluig */
|
|
658
|
-
sequence: number;
|
|
659
|
-
/** Descrição legível da atividade para fins de diagnóstico */
|
|
660
|
-
description: string;
|
|
661
|
-
/** Categoria da atividade — controla comportamento na barra de progresso */
|
|
662
|
-
kind: ActivityKind;
|
|
663
|
-
/**
|
|
664
|
-
* Estágio de negócio representado por esta atividade na barra de progresso.
|
|
665
|
-
* Obrigatório para `'human'` e `'system'`. Omitido para `'routing'`.
|
|
666
|
-
* Para `'support'`: identifica o estágio que está sendo interrompido.
|
|
667
|
-
*/
|
|
668
|
-
stage?: string;
|
|
669
|
-
/** Políticas de visibilidade e editabilidade dos módulos */
|
|
670
|
-
modules?: ActivityModulePolicy<TModuleId>;
|
|
671
|
-
}
|
|
672
|
-
/**
|
|
673
|
-
* Configuração tipada de um workflow Fluig — retornada por `defineWorkflowConfig`.
|
|
674
|
-
* `TModuleId` é inferido automaticamente do array de módulos.
|
|
675
|
-
*/
|
|
676
|
-
interface WorkflowConfig<TModules extends readonly WorkflowModuleDefinition[], TModuleId extends string = TModules[number]['moduleId']> {
|
|
677
|
-
readonly modules: TModules;
|
|
678
|
-
readonly activities: readonly WorkflowActivityDefinition<TModuleId>[];
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
/**
|
|
682
|
-
* Define a configuração de workflow de um projeto Fluig a partir de uma
|
|
683
|
-
* declaração única de módulos e atividades. O tipo `ModuleId` é inferido
|
|
684
|
-
* automaticamente do array de módulos — nenhum type alias manual é necessário.
|
|
685
|
-
*
|
|
686
|
-
* @param config Objeto com `modules` (definições de módulo) e `activities` (políticas por atividade)
|
|
687
|
-
* @returns Configuração tipada pronta para uso em `resolveWorkflowScreen` e `extractCompletedStages`
|
|
688
|
-
*
|
|
689
|
-
* @example
|
|
690
|
-
* const workflowConfig = defineWorkflowConfig({
|
|
691
|
-
* modules: [
|
|
692
|
-
* { moduleId: 'solicitante', label: 'Dados Iniciais', icon: 'file', order: 1,
|
|
693
|
-
* showInNavigation: true, renderContent: true, contentIncludePath: 'solicitante.html' },
|
|
694
|
-
* { moduleId: 'juridico', label: 'Jurídico', icon: 'gavel', order: 2,
|
|
695
|
-
* showInNavigation: true, renderContent: true, contentIncludePath: 'juridico.html' },
|
|
696
|
-
* ],
|
|
697
|
-
* activities: [
|
|
698
|
-
* { sequence: 9, description: 'Solicitação inicial', kind: 'human', stage: 'solicitacao',
|
|
699
|
-
* modules: { visible: ['solicitante'], editable: ['solicitante'], active: 'solicitante' } },
|
|
700
|
-
* { sequence: 88, description: 'Roteamento', kind: 'routing' },
|
|
701
|
-
* ]
|
|
702
|
-
* } as const)
|
|
703
|
-
* // Tipo de ModuleId inferido automaticamente: 'solicitante' | 'juridico'
|
|
704
|
-
*/
|
|
705
|
-
declare function defineWorkflowConfig<const M extends readonly (WorkflowModuleDefinition & {
|
|
706
|
-
moduleId: string;
|
|
707
|
-
})[]>(config: {
|
|
708
|
-
modules: M;
|
|
709
|
-
activities: readonly WorkflowActivityDefinition<M[number]['moduleId']>[];
|
|
710
|
-
}): WorkflowConfig<M, M[number]['moduleId']>;
|
|
711
|
-
|
|
712
|
-
/**
|
|
713
|
-
* Entrada do histórico do processo Fluig retornada por
|
|
714
|
-
* `parent.ECM.workflowView.processDefinition.urlHistory`.
|
|
715
|
-
* As chaves do objeto pai são arbitrárias — usar apenas `movementDate` e
|
|
716
|
-
* `movementHour` para determinar a ordem cronológica real.
|
|
717
|
-
*/
|
|
718
|
-
interface FluigHistoryEntry {
|
|
719
|
-
/** `null` = ação de usuário; `'SYSTEM'` = tarefa de sistema; `'OBSERVATION'`/`'ATTACHMENT'` = ignorar */
|
|
720
|
-
historyType: 'SYSTEM' | 'OBSERVATION' | 'ATTACHMENT' | null;
|
|
721
|
-
/** Equivalente a `WorkflowActivityDefinition.sequence` */
|
|
722
|
-
stateSequence: number;
|
|
723
|
-
/** `0` = atividade de usuário/sistema | `1` = gateway/decisão automática */
|
|
724
|
-
stateType: number;
|
|
725
|
-
/** Timestamp numérico para ordenação — `null` em sub-registros sem posição cronológica */
|
|
726
|
-
movementDate: number | null;
|
|
727
|
-
/** Hora no formato `"HH:mm:ss"` — desempate na ordenação quando `movementDate` é igual */
|
|
728
|
-
movementHour: string | null;
|
|
729
|
-
/** Rótulo da atividade no motor BPM */
|
|
730
|
-
labelActivity: string | null;
|
|
731
|
-
}
|
|
732
|
-
/** Mapa bruto retornado por `urlHistory` — chaves são arbitrárias, ignorar na ordenação */
|
|
733
|
-
type FluigHistoryMap = Record<string, FluigHistoryEntry>;
|
|
734
|
-
/** Histórico processado — alimenta `ScreenContext` para construir a barra de progresso */
|
|
735
|
-
interface ProcessHistory {
|
|
736
|
-
/** Estágios concluídos em ordem cronológica real; deduplica estágios repetidos */
|
|
737
|
-
completedStages: string[];
|
|
738
|
-
/** Estágio atual com seu status; `null` se a atividade atual não tiver stage mapeado */
|
|
739
|
-
currentStage: {
|
|
740
|
-
stage: string;
|
|
741
|
-
status: 'current' | 'waiting';
|
|
742
|
-
} | null;
|
|
743
|
-
}
|
|
744
|
-
/**
|
|
745
|
-
* Extrai os estágios concluídos do histórico Fluig na ordem cronológica real.
|
|
746
|
-
* Ignora gateways (`stateType === 1`), entradas `SYSTEM`, `OBSERVATION` e `ATTACHMENT`,
|
|
747
|
-
* e sub-registros sem `movementDate`. Deduplica estágios — a primeira ocorrência
|
|
748
|
-
* cronológica define a posição na barra de progresso.
|
|
749
|
-
*
|
|
750
|
-
* @param history Mapa bruto retornado por `urlHistory` do processo Fluig
|
|
751
|
-
* @param activities Array de definições de atividade do `WorkflowConfig`
|
|
752
|
-
* @returns Array de stage IDs na ordem em que ocorreram no processo
|
|
753
|
-
*/
|
|
754
|
-
declare function extractCompletedStages(history: FluigHistoryMap, activities: readonly WorkflowActivityDefinition[]): string[];
|
|
755
|
-
/**
|
|
756
|
-
* Determina o estágio atual e seu status (`'current'` ou `'waiting'`).
|
|
757
|
-
* Retorna `null` se a sequência atual não tiver um `stage` mapeado na configuração.
|
|
758
|
-
*
|
|
759
|
-
* @param currentSequence Número de sequência da atividade atual do processo
|
|
760
|
-
* @param currentHistoryType `historyType` da entrada atual — `null` para ação humana, `'SYSTEM'` para espera
|
|
761
|
-
* @param activities Array de definições de atividade do `WorkflowConfig`
|
|
762
|
-
* @returns Objeto com `stage` e `status`, ou `null`
|
|
763
|
-
*/
|
|
764
|
-
declare function extractCurrentStage(currentSequence: number, currentHistoryType: 'SYSTEM' | null, activities: readonly WorkflowActivityDefinition[]): {
|
|
765
|
-
stage: string;
|
|
766
|
-
status: 'current' | 'waiting';
|
|
767
|
-
} | null;
|
|
768
|
-
|
|
769
|
-
/** Módulo com políticas de visibilidade e editabilidade resolvidas para a atividade atual */
|
|
770
|
-
interface ResolvedModule {
|
|
771
|
-
moduleId: string;
|
|
772
|
-
label: string;
|
|
773
|
-
icon: string;
|
|
774
|
-
order: number;
|
|
775
|
-
showInNavigation: boolean;
|
|
776
|
-
renderContent: boolean;
|
|
777
|
-
contentIncludePath: string;
|
|
778
|
-
isVisible: boolean;
|
|
779
|
-
isEditable: boolean;
|
|
780
|
-
isActive: boolean;
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Contexto de tela para uma atividade de workflow.
|
|
784
|
-
* Consultado por Presenters para decidir visibilidade/editabilidade
|
|
785
|
-
* sem conhecer números de sequência.
|
|
786
|
-
*
|
|
787
|
-
* @hideconstructor
|
|
788
|
-
*/
|
|
789
|
-
declare class ScreenContext {
|
|
790
|
-
private readonly activity;
|
|
791
|
-
private readonly resolvedModules;
|
|
792
|
-
private readonly history;
|
|
793
|
-
constructor(activity: WorkflowActivityDefinition, resolvedModules: readonly ResolvedModule[], history: ProcessHistory);
|
|
794
|
-
/**
|
|
795
|
-
* Retorna `true` se o módulo é visível na atividade atual.
|
|
796
|
-
*
|
|
797
|
-
* @param moduleId Identificador do módulo
|
|
798
|
-
*/
|
|
799
|
-
isVisible(moduleId: string): boolean;
|
|
800
|
-
/**
|
|
801
|
-
* Retorna `true` se o módulo é editável na atividade atual.
|
|
802
|
-
*
|
|
803
|
-
* @param moduleId Identificador do módulo
|
|
804
|
-
*/
|
|
805
|
-
isEditable(moduleId: string): boolean;
|
|
806
|
-
/**
|
|
807
|
-
* Retorna `true` se o módulo é o ativo (tab selecionada) na atividade atual.
|
|
808
|
-
*
|
|
809
|
-
* @param moduleId Identificador do módulo
|
|
810
|
-
*/
|
|
811
|
-
isActive(moduleId: string): boolean;
|
|
812
|
-
/**
|
|
813
|
-
* Retorna `true` se a atividade atual está aguardando um sistema externo
|
|
814
|
-
* (`kind === 'system'` ou `currentStage.status === 'waiting'`).
|
|
815
|
-
*/
|
|
816
|
-
isAwaitingSystem(): boolean;
|
|
817
|
-
/**
|
|
818
|
-
* Retorna `true` se a atividade atual é uma atividade de suporte transversal.
|
|
819
|
-
*/
|
|
820
|
-
isInSupport(): boolean;
|
|
821
|
-
/**
|
|
822
|
-
* Retorna os estágios para renderizar na barra de progresso.
|
|
823
|
-
* Inclui os estágios concluídos do histórico (`'done'`) e o estágio atual
|
|
824
|
-
* (`'current'` ou `'waiting'`), sem duplicar.
|
|
825
|
-
*/
|
|
826
|
-
getProgressBarStages(): Array<{
|
|
827
|
-
stage: string;
|
|
828
|
-
status: 'done' | 'current' | 'waiting';
|
|
829
|
-
}>;
|
|
830
|
-
/**
|
|
831
|
-
* Retorna todos os módulos resolvidos, incluindo os não-visíveis.
|
|
832
|
-
*/
|
|
833
|
-
getModules(): readonly ResolvedModule[];
|
|
834
|
-
/**
|
|
835
|
-
* Retorna apenas os módulos visíveis, ordenados por `order` ascendente.
|
|
836
|
-
*/
|
|
837
|
-
getVisibleModules(): readonly ResolvedModule[];
|
|
838
|
-
/**
|
|
839
|
-
* Retorna os módulos que aparecem na navegação (`showInNavigation && isVisible`),
|
|
840
|
-
* ordenados por `order` ascendente.
|
|
841
|
-
*/
|
|
842
|
-
getNavigationModules(): readonly ResolvedModule[];
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
/**
|
|
846
|
-
* Resolve a tela para a sequência informada, cruzando a configuração do workflow
|
|
847
|
-
* com o histórico do processo para produzir um `ScreenContext`.
|
|
848
|
-
*
|
|
849
|
-
* @param config Configuração gerada por `defineWorkflowConfig`
|
|
850
|
-
* @param sequence Número de sequência da atividade atual no processo Fluig
|
|
851
|
-
* @param history Histórico processado via `extractCompletedStages` e `extractCurrentStage`
|
|
852
|
-
* @returns `ScreenContext` pronto para consulta pelos Presenters
|
|
853
|
-
*
|
|
854
|
-
* @throws {Error} Se a sequência não estiver mapeada na configuração
|
|
855
|
-
*
|
|
856
|
-
* @example
|
|
857
|
-
* const screen = resolveWorkflowScreen(workflowConfig, 53, processHistory)
|
|
858
|
-
* screen.isVisible('juridico') // true
|
|
859
|
-
* screen.isEditable('juridico') // true
|
|
860
|
-
* screen.isInSupport() // false
|
|
861
|
-
*/
|
|
862
|
-
declare function resolveWorkflowScreen(config: WorkflowConfig<readonly WorkflowModuleDefinition[]>, sequence: number, history: ProcessHistory): ScreenContext;
|
|
863
|
-
|
|
864
|
-
/** Mapa de stores: chave = nome do store, valor = objeto do store */
|
|
865
|
-
type StoreMap = Record<string, object>;
|
|
866
|
-
/**
|
|
867
|
-
* Tipo utilitário que gera um proxy com getters tipados para cada store registrado.
|
|
868
|
-
* Permite `stores.contador` ao invés de `Alpine.store('contador') as ContadorStore`.
|
|
869
|
-
*/
|
|
870
|
-
type StoreProxy<T extends StoreMap> = {
|
|
871
|
-
readonly [K in keyof T]: T[K];
|
|
872
|
-
};
|
|
873
|
-
/**
|
|
874
|
-
* Registra múltiplos Alpine stores e retorna um proxy tipado para acesso direto.
|
|
875
|
-
* Deve ser chamado no ponto de inicialização da aplicação, antes de `Alpine.start()`.
|
|
876
|
-
*
|
|
877
|
-
* @param alpine Instância Alpine — aceita `Pick<Alpine, 'store'>` para facilitar mock em testes
|
|
878
|
-
* @param storeMap Objeto com pares `{ nomeDoStore: objetoInicial }`
|
|
879
|
-
* @returns Proxy tipado para leitura dos stores sem casting manual
|
|
880
|
-
*
|
|
881
|
-
* @example
|
|
882
|
-
* const stores = registerStores(Alpine, {
|
|
883
|
-
* usuario: { nome: '', perfil: '' as PerfilId },
|
|
884
|
-
* ui: { carregando: false, erro: null as string | null }
|
|
885
|
-
* })
|
|
886
|
-
* // stores.usuario.nome está tipado como string
|
|
887
|
-
* // Internamente: Alpine.store('usuario', { nome: '', perfil: '' })
|
|
888
|
-
*/
|
|
889
|
-
declare function registerStores<T extends StoreMap>(alpine: Pick<Alpine, 'store'>, storeMap: T): StoreProxy<T>;
|
|
890
|
-
|
|
891
|
-
export { AttachButton, AttachmentsTable, BeforeSendValidate, ConstraintsType, FluigFormRepository, MockFormRepository, ScreenContext, WorkerManager, WorkflowViewPatcher, defineWorkflowConfig, extractCompletedStages, extractCurrentStage, registerStores, resolveWorkflowScreen, sendRequestEvent };
|
|
892
|
-
export type { ActivityKind, ActivityModulePolicy, AttachButtonRegistration, AttachmentRecord, AttachmentSource, AttachmentsTableMode, AttachmentsTableOptions, CacheOptions, CancelablePromise, DatasetError, DatasetResponse, DatasetRow, DragDropEntry, FieldError, FluigHistoryEntry, FluigHistoryMap, IFormRepository, IWorkflowViewHooks, ProcessCompletionLink, ProcessCompletionMessage, ProcessHistory, ResolvedModule, SearchParams, StoreMap, StoreProxy, WorkerManagerOptions, WorkflowActivityDefinition, WorkflowConfig, WorkflowModuleDefinition };
|