@seniorsistemas/angular-components-mcp 1.0.0-beta.3 → 1.0.0
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/data/component-rules/button.md +37 -0
- package/dist/data/component-rules/checkbox.md +30 -0
- package/dist/data/component-rules/confirm-dialog.md +86 -0
- package/dist/data/component-rules/index.json +3 -0
- package/dist/data/component-rules/radio-button.md +0 -0
- package/dist/data/component-technical/confirm-dialog.md +117 -0
- package/dist/data/component-technical/dialog.md +202 -0
- package/dist/data/component-technical/dynamic-form.md +292 -0
- package/dist/data/component-technical/index.json +4 -0
- package/dist/data/component-technical/kanban.md +116 -0
- package/dist/data/component-technical/loading-state.md +96 -0
- package/dist/data/component-technical/sidebar.md +82 -0
- package/dist/data/component-technical/table.md +19 -0
- package/dist/data/component-technical/toast.md +63 -0
- package/dist/data/components-metadata.json +4402 -0
- package/dist/data/dynamic-form-metadata.json +2281 -0
- package/dist/data/ux-rules.md +45 -0
- package/dist/handlers/handleDetectRequiredProviders.d.ts +12 -0
- package/dist/handlers/handleDetectRequiredProviders.d.ts.map +1 -0
- package/dist/handlers/handleGetComponentDetails.d.ts +13 -0
- package/dist/handlers/handleGetComponentDetails.d.ts.map +1 -0
- package/dist/handlers/handleGetComponentRules.d.ts +13 -0
- package/dist/handlers/handleGetComponentRules.d.ts.map +1 -0
- package/dist/handlers/handleGetComponentRulesIndex.d.ts +11 -0
- package/dist/handlers/handleGetComponentRulesIndex.d.ts.map +1 -0
- package/dist/handlers/handleGetComponentTechnicalGuide.d.ts +13 -0
- package/dist/handlers/handleGetComponentTechnicalGuide.d.ts.map +1 -0
- package/dist/handlers/handleGetComponentTechnicalIndex.d.ts +11 -0
- package/dist/handlers/handleGetComponentTechnicalIndex.d.ts.map +1 -0
- package/dist/handlers/handleGetComponents.d.ts +14 -0
- package/dist/handlers/handleGetComponents.d.ts.map +1 -0
- package/dist/handlers/handleGetDynamicFormTypes.d.ts +13 -0
- package/dist/handlers/handleGetDynamicFormTypes.d.ts.map +1 -0
- package/dist/handlers/handleGetUxRules.d.ts +10 -0
- package/dist/handlers/handleGetUxRules.d.ts.map +1 -0
- package/dist/handlers.d.ts +112 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/index.cjs +16703 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +16700 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2281 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generatedAt": "2026-03-17T13:59:30.989Z",
|
|
3
|
+
"description": "Auto-generated from TypeScript source. Do not edit manually — run generate:dynamic-form-metadata.",
|
|
4
|
+
"baseTypes": {
|
|
5
|
+
"FieldConfig": {
|
|
6
|
+
"description": "Configuração base compartilhada por **todos** os tipos de campo do DynamicForm.\n\nToda interface específica de campo (ex: TextFieldConfig, SelectFieldConfig) estende esta interface.\nAs propriedades aqui definidas estão disponíveis em qualquer campo do formulário.",
|
|
7
|
+
"properties": {
|
|
8
|
+
"type": {
|
|
9
|
+
"type": "FieldType",
|
|
10
|
+
"required": true,
|
|
11
|
+
"description": "Tipo do campo. Deve ser um dos valores registrados em `FieldTypeMap`.\nExemplos: `'string'`, `'enum'`, `'date'`, `'lookup'`, `'boolean'`, etc.\nPara tipos opcionais (ex: `'editor'`), o provider correspondente deve ser registrado no `AppConfig` ou `AppModule`."
|
|
12
|
+
},
|
|
13
|
+
"required": {
|
|
14
|
+
"type": "() => boolean",
|
|
15
|
+
"required": false,
|
|
16
|
+
"description": "Função que retorna se o campo é obrigatório dinamicamente.\nUse uma função para que a obrigatoriedade possa mudar em resposta ao estado do formulário."
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"description": "ID HTML do elemento de input gerado. Útil para testes automatizados e acessibilidade."
|
|
22
|
+
},
|
|
23
|
+
"name": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"required": true,
|
|
26
|
+
"description": "Nome do campo no modelo de dados. Deve corresponder à chave da propriedade no objeto de dados do formulário."
|
|
27
|
+
},
|
|
28
|
+
"label": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"required": false,
|
|
31
|
+
"description": "Rótulo exibido acima ou ao lado do campo no formulário.\nSe omitido, o campo é exibido sem label."
|
|
32
|
+
},
|
|
33
|
+
"infoSign": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"required": false,
|
|
36
|
+
"description": "Ícone de informação exibido ao lado do campo. Aceita classes de ícone (ex: `'ph ph-info'`)."
|
|
37
|
+
},
|
|
38
|
+
"tooltip": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"required": false,
|
|
41
|
+
"description": "Texto do tooltip exibido ao passar o mouse sobre o campo ou sobre o infoSign."
|
|
42
|
+
},
|
|
43
|
+
"placeholder": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"required": false,
|
|
46
|
+
"description": "Texto de placeholder exibido enquanto o campo estiver vazio."
|
|
47
|
+
},
|
|
48
|
+
"displayTimeInfoSign": {
|
|
49
|
+
"type": "number",
|
|
50
|
+
"required": false,
|
|
51
|
+
"description": "Tempo em milissegundos para exibir automaticamente o infoSign quando o campo está focado.\nÚtil para orientar o usuário após um curto intervalo de inatividade."
|
|
52
|
+
},
|
|
53
|
+
"useInfoSignFocusedInputRef": {
|
|
54
|
+
"type": "boolean",
|
|
55
|
+
"required": false,
|
|
56
|
+
"description": "Quando `true`, o infoSign usa a referência do input focado como âncora do tooltip.\nÚtil para garantir que o tooltip apareça próximo ao campo correto em layouts complexos."
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"StructureConfig": {
|
|
61
|
+
"description": "Configuração base compartilhada por **todos** os tipos de estrutura do DynamicForm.\n\nEstruturas são contêineres que agrupam campos e outras estruturas.\nOs tipos disponíveis são: `'section'`, `'row'`, `'fieldset'`.",
|
|
62
|
+
"properties": {
|
|
63
|
+
"type": {
|
|
64
|
+
"type": "StructureType",
|
|
65
|
+
"required": true,
|
|
66
|
+
"description": "Tipo da estrutura. Deve ser um dos valores registrados em `StructureTypeMap`.\nValores disponíveis: `'section'`, `'row'`, `'fieldset'`."
|
|
67
|
+
},
|
|
68
|
+
"configs": {
|
|
69
|
+
"type": "(DynamicType | DynamicStructure)[]",
|
|
70
|
+
"required": true,
|
|
71
|
+
"description": "Lista de campos e sub-estruturas contidas nesta estrutura.\nCada item pode ser um `DynamicType` (campo) ou `DynamicStructure` (estrutura aninhada)."
|
|
72
|
+
},
|
|
73
|
+
"header": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"required": false,
|
|
76
|
+
"description": "Título opcional exibido no cabeçalho da estrutura.\nUsado, por exemplo, como título de seções ou fieldsets."
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"fieldTypes": {
|
|
82
|
+
"autocomplete": {
|
|
83
|
+
"interface": "AutocompleteFieldConfig",
|
|
84
|
+
"sourceFile": "autocomplete-field.ts",
|
|
85
|
+
"description": "Configuração para campo de autocompletar.\n\nExibe um input de texto que sugere opções enquanto o usuário digita, buscando os dados\nvia Observable. Suporta seleção simples ou múltipla e personalização do campo exibido.",
|
|
86
|
+
"ownProperties": {
|
|
87
|
+
"type": {
|
|
88
|
+
"type": "'autocomplete'",
|
|
89
|
+
"required": true,
|
|
90
|
+
"description": "Tipo do campo: sempre `'autocomplete'`."
|
|
91
|
+
},
|
|
92
|
+
"dataKey": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"required": false,
|
|
95
|
+
"description": "Chave única de cada item da lista de sugestões. Usada para identificar o objeto selecionado."
|
|
96
|
+
},
|
|
97
|
+
"displayField": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"required": false,
|
|
100
|
+
"description": "Nome da propriedade do objeto de sugestão que será exibida como texto na lista e no input."
|
|
101
|
+
},
|
|
102
|
+
"multiple": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"required": false,
|
|
105
|
+
"description": "Quando `true`, permite seleção de múltiplos itens exibidos como tags/chips."
|
|
106
|
+
},
|
|
107
|
+
"appendTo": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"required": false,
|
|
110
|
+
"description": "Elemento DOM ao qual o painel de sugestões será anexado.\nUse `'body'` para evitar problemas de overflow em containers com `overflow: hidden`."
|
|
111
|
+
},
|
|
112
|
+
"emptyMessage": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"required": false,
|
|
115
|
+
"description": "Mensagem exibida quando nenhuma sugestão é encontrada para o texto digitado."
|
|
116
|
+
},
|
|
117
|
+
"suggestionsObservable": {
|
|
118
|
+
"type": "Observable<any>",
|
|
119
|
+
"required": false,
|
|
120
|
+
"description": "Observable que emite a lista de sugestões em resposta à digitação do usuário.\nDeve emitir um array de objetos com pelo menos a propriedade `displayField`."
|
|
121
|
+
},
|
|
122
|
+
"onSelect": {
|
|
123
|
+
"type": "(event: any) => void",
|
|
124
|
+
"required": false,
|
|
125
|
+
"description": "Callback chamado quando o usuário seleciona um item da lista de sugestões."
|
|
126
|
+
},
|
|
127
|
+
"onUnselect": {
|
|
128
|
+
"type": "(event: any) => void",
|
|
129
|
+
"required": false,
|
|
130
|
+
"description": "Callback chamado quando o usuário remove um item selecionado (modo múltiplo)."
|
|
131
|
+
},
|
|
132
|
+
"onClear": {
|
|
133
|
+
"type": "(event: any) => void",
|
|
134
|
+
"required": false,
|
|
135
|
+
"description": "Callback chamado quando o usuário limpa o campo."
|
|
136
|
+
},
|
|
137
|
+
"onSearch": {
|
|
138
|
+
"type": "(value: string) => void",
|
|
139
|
+
"required": false,
|
|
140
|
+
"description": "Callback chamado a cada alteração no texto digitado. Use para disparar a busca de sugestões."
|
|
141
|
+
},
|
|
142
|
+
"onBlur": {
|
|
143
|
+
"type": "(event: FocusEvent) => void",
|
|
144
|
+
"required": false,
|
|
145
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"number": {
|
|
150
|
+
"interface": "BignumberFieldConfig",
|
|
151
|
+
"sourceFile": "bignumber-field.ts",
|
|
152
|
+
"description": "Configuração para campos numéricos de grande precisão.\n\nUse `type: 'number'` para números inteiros ou decimais genéricos.\nUse `type: 'double'` para números com casas decimais explícitas.\n\nSuporta controle de precisão, escala, máscaras, addons laterais e formatação regional.\nPreferível em relação ao `NumberFieldConfig` (deprecated).",
|
|
153
|
+
"ownProperties": {
|
|
154
|
+
"type": {
|
|
155
|
+
"type": "'number' | 'double'",
|
|
156
|
+
"required": true,
|
|
157
|
+
"description": "`'number'` — campo numérico genérico (inteiro ou decimal).\n`'double'` — campo numérico com casas decimais."
|
|
158
|
+
},
|
|
159
|
+
"allowNegative": {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"required": false,
|
|
162
|
+
"description": "Permite a entrada de valores negativos."
|
|
163
|
+
},
|
|
164
|
+
"numberLocaleOptions": {
|
|
165
|
+
"type": "NumberLocaleOptions",
|
|
166
|
+
"required": false,
|
|
167
|
+
"description": "Opções de localização para formatação do número (separador decimal, separador de milhar).\nSe omitido, usa o locale padrão da aplicação."
|
|
168
|
+
},
|
|
169
|
+
"browserAutocomplete": {
|
|
170
|
+
"type": "boolean",
|
|
171
|
+
"required": false,
|
|
172
|
+
"description": "Controla o autocomplete nativo do browser."
|
|
173
|
+
},
|
|
174
|
+
"precision": {
|
|
175
|
+
"type": "Function | number",
|
|
176
|
+
"required": false,
|
|
177
|
+
"description": "Número total de dígitos (inteiros + decimais). Pode ser uma função para controle dinâmico."
|
|
178
|
+
},
|
|
179
|
+
"scale": {
|
|
180
|
+
"type": "Function | number",
|
|
181
|
+
"required": false,
|
|
182
|
+
"description": "Número de casas decimais permitidas. Pode ser uma função para controle dinâmico."
|
|
183
|
+
},
|
|
184
|
+
"mask": {
|
|
185
|
+
"type": "stringFn | string",
|
|
186
|
+
"required": false,
|
|
187
|
+
"description": "Máscara de entrada. Pode ser uma string fixa ou função que retorna a máscara."
|
|
188
|
+
},
|
|
189
|
+
"leftAddon": {
|
|
190
|
+
"type": "AddonConfig",
|
|
191
|
+
"required": false,
|
|
192
|
+
"description": "Addon exibido à esquerda do campo (ex: símbolo de moeda, unidade de medida)."
|
|
193
|
+
},
|
|
194
|
+
"rightAddon": {
|
|
195
|
+
"type": "AddonConfig",
|
|
196
|
+
"required": false,
|
|
197
|
+
"description": "Addon exibido à direita do campo (ex: unidade de medida, botão)."
|
|
198
|
+
},
|
|
199
|
+
"onBlur": {
|
|
200
|
+
"type": "(event: Event) => void",
|
|
201
|
+
"required": false,
|
|
202
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
203
|
+
},
|
|
204
|
+
"onFocus": {
|
|
205
|
+
"type": "(event: FocusEvent) => void",
|
|
206
|
+
"required": false,
|
|
207
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
208
|
+
},
|
|
209
|
+
"onComplete": {
|
|
210
|
+
"type": "(event: FocusEvent) => void",
|
|
211
|
+
"required": false,
|
|
212
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
213
|
+
},
|
|
214
|
+
"onInput": {
|
|
215
|
+
"type": "(event: FocusEvent) => void",
|
|
216
|
+
"required": false,
|
|
217
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
218
|
+
},
|
|
219
|
+
"autoClear": {
|
|
220
|
+
"type": "boolean",
|
|
221
|
+
"required": false,
|
|
222
|
+
"description": "Quando `true`, limpa o valor do campo automaticamente ao perder o foco se o valor for inválido."
|
|
223
|
+
},
|
|
224
|
+
"alignTo": {
|
|
225
|
+
"type": "'left' | 'right'",
|
|
226
|
+
"required": false,
|
|
227
|
+
"description": "Alinhamento do texto dentro do campo.\n`'left'` — alinhado à esquerda (padrão).\n`'right'` — alinhado à direita (comum em campos monetários)."
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"double": {
|
|
232
|
+
"interface": "BignumberFieldConfig",
|
|
233
|
+
"sourceFile": "bignumber-field.ts",
|
|
234
|
+
"description": "Configuração para campos numéricos de grande precisão.\n\nUse `type: 'number'` para números inteiros ou decimais genéricos.\nUse `type: 'double'` para números com casas decimais explícitas.\n\nSuporta controle de precisão, escala, máscaras, addons laterais e formatação regional.\nPreferível em relação ao `NumberFieldConfig` (deprecated).",
|
|
235
|
+
"ownProperties": {
|
|
236
|
+
"type": {
|
|
237
|
+
"type": "'number' | 'double'",
|
|
238
|
+
"required": true,
|
|
239
|
+
"description": "`'number'` — campo numérico genérico (inteiro ou decimal).\n`'double'` — campo numérico com casas decimais."
|
|
240
|
+
},
|
|
241
|
+
"allowNegative": {
|
|
242
|
+
"type": "boolean",
|
|
243
|
+
"required": false,
|
|
244
|
+
"description": "Permite a entrada de valores negativos."
|
|
245
|
+
},
|
|
246
|
+
"numberLocaleOptions": {
|
|
247
|
+
"type": "NumberLocaleOptions",
|
|
248
|
+
"required": false,
|
|
249
|
+
"description": "Opções de localização para formatação do número (separador decimal, separador de milhar).\nSe omitido, usa o locale padrão da aplicação."
|
|
250
|
+
},
|
|
251
|
+
"browserAutocomplete": {
|
|
252
|
+
"type": "boolean",
|
|
253
|
+
"required": false,
|
|
254
|
+
"description": "Controla o autocomplete nativo do browser."
|
|
255
|
+
},
|
|
256
|
+
"precision": {
|
|
257
|
+
"type": "Function | number",
|
|
258
|
+
"required": false,
|
|
259
|
+
"description": "Número total de dígitos (inteiros + decimais). Pode ser uma função para controle dinâmico."
|
|
260
|
+
},
|
|
261
|
+
"scale": {
|
|
262
|
+
"type": "Function | number",
|
|
263
|
+
"required": false,
|
|
264
|
+
"description": "Número de casas decimais permitidas. Pode ser uma função para controle dinâmico."
|
|
265
|
+
},
|
|
266
|
+
"mask": {
|
|
267
|
+
"type": "stringFn | string",
|
|
268
|
+
"required": false,
|
|
269
|
+
"description": "Máscara de entrada. Pode ser uma string fixa ou função que retorna a máscara."
|
|
270
|
+
},
|
|
271
|
+
"leftAddon": {
|
|
272
|
+
"type": "AddonConfig",
|
|
273
|
+
"required": false,
|
|
274
|
+
"description": "Addon exibido à esquerda do campo (ex: símbolo de moeda, unidade de medida)."
|
|
275
|
+
},
|
|
276
|
+
"rightAddon": {
|
|
277
|
+
"type": "AddonConfig",
|
|
278
|
+
"required": false,
|
|
279
|
+
"description": "Addon exibido à direita do campo (ex: unidade de medida, botão)."
|
|
280
|
+
},
|
|
281
|
+
"onBlur": {
|
|
282
|
+
"type": "(event: Event) => void",
|
|
283
|
+
"required": false,
|
|
284
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
285
|
+
},
|
|
286
|
+
"onFocus": {
|
|
287
|
+
"type": "(event: FocusEvent) => void",
|
|
288
|
+
"required": false,
|
|
289
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
290
|
+
},
|
|
291
|
+
"onComplete": {
|
|
292
|
+
"type": "(event: FocusEvent) => void",
|
|
293
|
+
"required": false,
|
|
294
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
295
|
+
},
|
|
296
|
+
"onInput": {
|
|
297
|
+
"type": "(event: FocusEvent) => void",
|
|
298
|
+
"required": false,
|
|
299
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
300
|
+
},
|
|
301
|
+
"autoClear": {
|
|
302
|
+
"type": "boolean",
|
|
303
|
+
"required": false,
|
|
304
|
+
"description": "Quando `true`, limpa o valor do campo automaticamente ao perder o foco se o valor for inválido."
|
|
305
|
+
},
|
|
306
|
+
"alignTo": {
|
|
307
|
+
"type": "'left' | 'right'",
|
|
308
|
+
"required": false,
|
|
309
|
+
"description": "Alinhamento do texto dentro do campo.\n`'left'` — alinhado à esquerda (padrão).\n`'right'` — alinhado à direita (comum em campos monetários)."
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"blob": {
|
|
314
|
+
"interface": "BlobFieldConfig",
|
|
315
|
+
"sourceFile": "blob-field.ts",
|
|
316
|
+
"description": "Configuração para campo de upload de arquivos binários.\n\nExibe uma área de upload com suporte a múltiplos arquivos, progresso de envio,\nvisualização de arquivos enviados e download.\n\nTodas as propriedades são obrigatórias, pois o componente depende de labels e handlers\npara opções de ação e controle dos arquivos.",
|
|
317
|
+
"ownProperties": {
|
|
318
|
+
"type": {
|
|
319
|
+
"type": "'blob'",
|
|
320
|
+
"required": true,
|
|
321
|
+
"description": "Tipo do campo: sempre `'blob'`."
|
|
322
|
+
},
|
|
323
|
+
"accept": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"required": true,
|
|
326
|
+
"description": "Tipos de arquivo aceitos no seletor de arquivo nativo (MIME types ou extensões)."
|
|
327
|
+
},
|
|
328
|
+
"files": {
|
|
329
|
+
"type": "FileDto[]",
|
|
330
|
+
"required": true,
|
|
331
|
+
"description": "Lista dos arquivos atualmente associados ao campo.\nDeve ser inicializada como array vazio `[]` ao criar o formulário."
|
|
332
|
+
},
|
|
333
|
+
"chooseLabel": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"required": true,
|
|
336
|
+
"description": "Rótulo do botão de escolher/adicionar arquivo."
|
|
337
|
+
},
|
|
338
|
+
"removeLabel": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"required": true,
|
|
341
|
+
"description": "Rótulo do botão de remover um arquivo da lista."
|
|
342
|
+
},
|
|
343
|
+
"cancelLabel": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"required": true,
|
|
346
|
+
"description": "Rótulo do botão de cancelar o upload em andamento."
|
|
347
|
+
},
|
|
348
|
+
"successTooltip": {
|
|
349
|
+
"type": "string",
|
|
350
|
+
"required": true,
|
|
351
|
+
"description": "Texto do tooltip exibido quando o upload é concluído com sucesso."
|
|
352
|
+
},
|
|
353
|
+
"multiple": {
|
|
354
|
+
"type": "boolean",
|
|
355
|
+
"required": true,
|
|
356
|
+
"description": "Permite selecionar e enviar múltiplos arquivos simultaneamente."
|
|
357
|
+
},
|
|
358
|
+
"onUploadFile": {
|
|
359
|
+
"type": "(event: {\n files: FileDto[];\n}, field: BlobFieldConfig) => void",
|
|
360
|
+
"required": true,
|
|
361
|
+
"description": "Callback chamado após o envio bem-sucedido de arquivos.\nRecebe a lista de arquivos enviados e a instância da configuração do campo."
|
|
362
|
+
},
|
|
363
|
+
"onRemoveFile": {
|
|
364
|
+
"type": "(event: FileDto, field: BlobFieldConfig) => void",
|
|
365
|
+
"required": true,
|
|
366
|
+
"description": "Callback chamado quando o usuário remove um arquivo da lista."
|
|
367
|
+
},
|
|
368
|
+
"onCancelUpload": {
|
|
369
|
+
"type": "(event: number, field: BlobFieldConfig) => void",
|
|
370
|
+
"required": true,
|
|
371
|
+
"description": "Callback chamado quando o usuário cancela um upload em andamento.\nO `event` é o índice do arquivo na fila de upload."
|
|
372
|
+
},
|
|
373
|
+
"onDownloadFile": {
|
|
374
|
+
"type": "(event: {\n index: number;\n anchor: ElementRef;\n}, field: BlobFieldConfig) => void",
|
|
375
|
+
"required": true,
|
|
376
|
+
"description": "Callback chamado quando o usuário clica para baixar um arquivo já enviado.\nRecebe o índice do arquivo e a referência ao elemento anchor de download."
|
|
377
|
+
},
|
|
378
|
+
"showFileUploadDate": {
|
|
379
|
+
"type": "boolean",
|
|
380
|
+
"required": true,
|
|
381
|
+
"description": "Quando `true`, exibe a data de upload de cada arquivo na lista."
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"boolean": {
|
|
386
|
+
"interface": "BooleanFieldConfig",
|
|
387
|
+
"sourceFile": "boolean-field.ts",
|
|
388
|
+
"description": "Configuração para campo booleano com exibição como botões de rádio (Sim/Não).\n\nExibe dois (ou três, com `showClear`) botões de rádio rotulados conforme `optionsLabel`.\nDiferente do `booleanSwitch`, este campo é mais adequado para questionários e formulários\nque precisam de rotação explícita entre as opções sim/não.",
|
|
389
|
+
"ownProperties": {
|
|
390
|
+
"type": {
|
|
391
|
+
"type": "'boolean'",
|
|
392
|
+
"required": true,
|
|
393
|
+
"description": "Tipo do campo: sempre `'boolean'`."
|
|
394
|
+
},
|
|
395
|
+
"verticalAlignment": {
|
|
396
|
+
"type": "boolean",
|
|
397
|
+
"required": false,
|
|
398
|
+
"description": "Quando `true`, os botões são empilhados verticalmente em vez de na horizontal."
|
|
399
|
+
},
|
|
400
|
+
"optionsLabel": {
|
|
401
|
+
"type": "BooleanOptionsLabelConfig",
|
|
402
|
+
"required": true,
|
|
403
|
+
"description": "Labels exibidas para as opções do campo. Obrigatório."
|
|
404
|
+
},
|
|
405
|
+
"onBlur": {
|
|
406
|
+
"type": "(event: Event) => void",
|
|
407
|
+
"required": false,
|
|
408
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
409
|
+
},
|
|
410
|
+
"onFocus": {
|
|
411
|
+
"type": "(event: Event) => void",
|
|
412
|
+
"required": false,
|
|
413
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
414
|
+
},
|
|
415
|
+
"onClick": {
|
|
416
|
+
"type": "(event: any) => void",
|
|
417
|
+
"required": false,
|
|
418
|
+
"description": "Callback chamado quando o usuário clica em uma opção."
|
|
419
|
+
},
|
|
420
|
+
"showClear": {
|
|
421
|
+
"type": "boolean",
|
|
422
|
+
"required": false,
|
|
423
|
+
"description": "Quando `true`, exibe um botão de limpar a seleção.\nO texto do botão é definido em `optionsLabel.clear`."
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"booleanSwitch": {
|
|
428
|
+
"interface": "BooleanSwitchFieldConfig",
|
|
429
|
+
"sourceFile": "boolean-switch-field.ts",
|
|
430
|
+
"description": "Configuração para campo booleano com exibição como toggle switch.\n\nRenderiza um interruptor visual de liga/desliga. Use quando o campo representa\numa preferência ou configuração que pode ser ativada ou desativada de forma imediata.\n\nDiferente do `BooleanFieldConfig` (rádio sim/não), este campo usa o componente `s-switch`.",
|
|
431
|
+
"ownProperties": {
|
|
432
|
+
"type": {
|
|
433
|
+
"type": "'booleanSwitch'",
|
|
434
|
+
"required": true,
|
|
435
|
+
"description": "Tipo do campo: sempre `'booleanSwitch'`."
|
|
436
|
+
},
|
|
437
|
+
"onChange": {
|
|
438
|
+
"type": "(event: any) => void",
|
|
439
|
+
"required": false,
|
|
440
|
+
"description": "Callback chamado quando o estado do switch muda (ligado ⇔ desligado)."
|
|
441
|
+
},
|
|
442
|
+
"optionsLabel": {
|
|
443
|
+
"type": "BooleanOptionsLabelConfig",
|
|
444
|
+
"required": false,
|
|
445
|
+
"description": "Labels opcionais exibidas ao lado do switch representando os estados.\nSe omitido, o switch é exibido sem labels de texto."
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
"button": {
|
|
450
|
+
"interface": "ButtonFieldConfig",
|
|
451
|
+
"sourceFile": "button-field.ts",
|
|
452
|
+
"description": "Configuração para campo do tipo botão dentro do DynamicForm.\n\nRenderiza um botão (`s-button`) diretamente como um campo do formulário.\nÚtil para ações contextuais associadas ao formulário, como buscar dados, limpar campos\nou acionar funcionalidades sem submeter o formulário.\n\nAs propriedades visuais e comportamentais (priority, iconClass, menuOptions, etc.)\nsão herdadas diretamente de `ButtonComponent`.",
|
|
453
|
+
"ownProperties": {
|
|
454
|
+
"type": {
|
|
455
|
+
"type": "'button'",
|
|
456
|
+
"required": true,
|
|
457
|
+
"description": "Tipo do campo: sempre `'button'`."
|
|
458
|
+
},
|
|
459
|
+
"onClick": {
|
|
460
|
+
"type": "(event?: any) => any",
|
|
461
|
+
"required": false,
|
|
462
|
+
"description": "Callback chamado quando o botão é clicado."
|
|
463
|
+
},
|
|
464
|
+
"fullWidth": {
|
|
465
|
+
"type": "boolean",
|
|
466
|
+
"required": false,
|
|
467
|
+
"description": "Quando `true`, o botão ocupa toda a largura da célula/coluna do formulário."
|
|
468
|
+
},
|
|
469
|
+
"mouseEnter": {
|
|
470
|
+
"type": "(button: ButtonFieldConfig) => void",
|
|
471
|
+
"required": false,
|
|
472
|
+
"description": "Callback chamado quando o mouse entra na área do botão."
|
|
473
|
+
},
|
|
474
|
+
"mouseLeave": {
|
|
475
|
+
"type": "(button: ButtonFieldConfig) => void",
|
|
476
|
+
"required": false,
|
|
477
|
+
"description": "Callback chamado quando o mouse sai da área do botão."
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"dateTime": {
|
|
482
|
+
"interface": "CalendarFieldConfig",
|
|
483
|
+
"sourceFile": "calendar-field.ts",
|
|
484
|
+
"description": "Configuração para campos de data e hora.\n\nQuatro variantes disponíveis:\n- `'date'` — apenas data (dia/mês/ano)\n- `'time'` — apenas hora (hora:minuto[:segundo])\n- `'dateTime'` — data com horário com timezone (UTC)\n- `'localDateTime'` — data com horário sem timezone (local da máquina)\n\nSuporta restrições de intervalo, modo de visualização (dia/mês/ano), seleção múltipla\ne localização de labels do calendário.",
|
|
485
|
+
"ownProperties": {
|
|
486
|
+
"type": {
|
|
487
|
+
"type": "'dateTime' | 'localDateTime' | 'time' | 'date'",
|
|
488
|
+
"required": true,
|
|
489
|
+
"description": "`'date'` — campo de data apenas.\n`'time'` — campo de hora apenas.\n`'dateTime'` — data e hora com timezone UTC.\n`'localDateTime'` — data e hora sem timezone (local)."
|
|
490
|
+
},
|
|
491
|
+
"view": {
|
|
492
|
+
"type": "'date' | 'month' | 'year'",
|
|
493
|
+
"required": false,
|
|
494
|
+
"description": "Modo de visualização inicial do calendário.\n`'date'` — grade de dias (padrão).\n`'month'` — selector de mês.\n`'year'` — seletor de ano."
|
|
495
|
+
},
|
|
496
|
+
"minDate": {
|
|
497
|
+
"type": "Date",
|
|
498
|
+
"required": false,
|
|
499
|
+
"description": "Data mínima selecionável. Datas anteriores serão desabilitadas no calendário."
|
|
500
|
+
},
|
|
501
|
+
"maxDate": {
|
|
502
|
+
"type": "Date",
|
|
503
|
+
"required": false,
|
|
504
|
+
"description": "Data máxima selecionável. Datas posteriores serão desabilitadas no calendário."
|
|
505
|
+
},
|
|
506
|
+
"defaultDate": {
|
|
507
|
+
"type": "Date",
|
|
508
|
+
"required": false,
|
|
509
|
+
"description": "Data exibida inicialmente ao abrir o calendário quando nenhuma data está selecionada."
|
|
510
|
+
},
|
|
511
|
+
"appendTo": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"required": false,
|
|
514
|
+
"description": "Elemento DOM ao qual o painel do calendário será anexado.\nUse `'body'` para evitar problemas de overflow em containers com `overflow: hidden`."
|
|
515
|
+
},
|
|
516
|
+
"showOnFocus": {
|
|
517
|
+
"type": "boolean",
|
|
518
|
+
"required": false,
|
|
519
|
+
"description": "Quando `true`, o calendário abre automaticamente ao focar o campo."
|
|
520
|
+
},
|
|
521
|
+
"calendarLocaleOptions": {
|
|
522
|
+
"type": "CalendarLocaleOptions",
|
|
523
|
+
"required": false,
|
|
524
|
+
"description": "Opções de localização do calendário (nomes de dias da semana, meses, etc.).\nSe omitido, usa o locale padrão da aplicação."
|
|
525
|
+
},
|
|
526
|
+
"onBlur": {
|
|
527
|
+
"type": "(event: Event) => void",
|
|
528
|
+
"required": false,
|
|
529
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
530
|
+
},
|
|
531
|
+
"onFocus": {
|
|
532
|
+
"type": "(event: Event) => void",
|
|
533
|
+
"required": false,
|
|
534
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
535
|
+
},
|
|
536
|
+
"onSelect": {
|
|
537
|
+
"type": "(event: any) => void",
|
|
538
|
+
"required": false,
|
|
539
|
+
"description": "Callback chamado quando o usuário seleciona uma data."
|
|
540
|
+
},
|
|
541
|
+
"onInput": {
|
|
542
|
+
"type": "(event: any) => void",
|
|
543
|
+
"required": false,
|
|
544
|
+
"description": "Callback chamado quando o usuário digita manualmente no campo."
|
|
545
|
+
},
|
|
546
|
+
"onClose": {
|
|
547
|
+
"type": "(event: any) => void",
|
|
548
|
+
"required": false,
|
|
549
|
+
"description": "Callback chamado quando o painel do calendário é fechado."
|
|
550
|
+
},
|
|
551
|
+
"onTodayClick": {
|
|
552
|
+
"type": "(event: any) => void",
|
|
553
|
+
"required": false,
|
|
554
|
+
"description": "Callback chamado quando o usuário clica no botão \"Hoje\"."
|
|
555
|
+
},
|
|
556
|
+
"onClearClick": {
|
|
557
|
+
"type": "(event: any) => void",
|
|
558
|
+
"required": false,
|
|
559
|
+
"description": "Callback chamado quando o usuário clica no botão \"Limpar\"."
|
|
560
|
+
},
|
|
561
|
+
"onMonthChange": {
|
|
562
|
+
"type": "(event: any) => void",
|
|
563
|
+
"required": false,
|
|
564
|
+
"description": "Callback chamado quando o mês visualizado muda."
|
|
565
|
+
},
|
|
566
|
+
"onYearChange": {
|
|
567
|
+
"type": "(event: any) => void",
|
|
568
|
+
"required": false,
|
|
569
|
+
"description": "Callback chamado quando o ano visualizado muda."
|
|
570
|
+
},
|
|
571
|
+
"selectionMode": {
|
|
572
|
+
"type": "'single' | 'multiple'",
|
|
573
|
+
"required": false,
|
|
574
|
+
"description": "Modo de seleção de datas.\n`'single'` — seleção de uma data (padrão).\n`'multiple'` — seleção de múltiplas datas incompatíveis."
|
|
575
|
+
},
|
|
576
|
+
"rangeSeparator": {
|
|
577
|
+
"type": "string",
|
|
578
|
+
"required": false,
|
|
579
|
+
"description": "Separador exibido entre as datas de início e fim quando `selectionMode = 'range'`."
|
|
580
|
+
},
|
|
581
|
+
"showSeconds": {
|
|
582
|
+
"type": "boolean",
|
|
583
|
+
"required": false,
|
|
584
|
+
"description": "Quando `true`, exibe o seletor de segundos no modo de hora."
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
"localDateTime": {
|
|
589
|
+
"interface": "CalendarFieldConfig",
|
|
590
|
+
"sourceFile": "calendar-field.ts",
|
|
591
|
+
"description": "Configuração para campos de data e hora.\n\nQuatro variantes disponíveis:\n- `'date'` — apenas data (dia/mês/ano)\n- `'time'` — apenas hora (hora:minuto[:segundo])\n- `'dateTime'` — data com horário com timezone (UTC)\n- `'localDateTime'` — data com horário sem timezone (local da máquina)\n\nSuporta restrições de intervalo, modo de visualização (dia/mês/ano), seleção múltipla\ne localização de labels do calendário.",
|
|
592
|
+
"ownProperties": {
|
|
593
|
+
"type": {
|
|
594
|
+
"type": "'dateTime' | 'localDateTime' | 'time' | 'date'",
|
|
595
|
+
"required": true,
|
|
596
|
+
"description": "`'date'` — campo de data apenas.\n`'time'` — campo de hora apenas.\n`'dateTime'` — data e hora com timezone UTC.\n`'localDateTime'` — data e hora sem timezone (local)."
|
|
597
|
+
},
|
|
598
|
+
"view": {
|
|
599
|
+
"type": "'date' | 'month' | 'year'",
|
|
600
|
+
"required": false,
|
|
601
|
+
"description": "Modo de visualização inicial do calendário.\n`'date'` — grade de dias (padrão).\n`'month'` — selector de mês.\n`'year'` — seletor de ano."
|
|
602
|
+
},
|
|
603
|
+
"minDate": {
|
|
604
|
+
"type": "Date",
|
|
605
|
+
"required": false,
|
|
606
|
+
"description": "Data mínima selecionável. Datas anteriores serão desabilitadas no calendário."
|
|
607
|
+
},
|
|
608
|
+
"maxDate": {
|
|
609
|
+
"type": "Date",
|
|
610
|
+
"required": false,
|
|
611
|
+
"description": "Data máxima selecionável. Datas posteriores serão desabilitadas no calendário."
|
|
612
|
+
},
|
|
613
|
+
"defaultDate": {
|
|
614
|
+
"type": "Date",
|
|
615
|
+
"required": false,
|
|
616
|
+
"description": "Data exibida inicialmente ao abrir o calendário quando nenhuma data está selecionada."
|
|
617
|
+
},
|
|
618
|
+
"appendTo": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"required": false,
|
|
621
|
+
"description": "Elemento DOM ao qual o painel do calendário será anexado.\nUse `'body'` para evitar problemas de overflow em containers com `overflow: hidden`."
|
|
622
|
+
},
|
|
623
|
+
"showOnFocus": {
|
|
624
|
+
"type": "boolean",
|
|
625
|
+
"required": false,
|
|
626
|
+
"description": "Quando `true`, o calendário abre automaticamente ao focar o campo."
|
|
627
|
+
},
|
|
628
|
+
"calendarLocaleOptions": {
|
|
629
|
+
"type": "CalendarLocaleOptions",
|
|
630
|
+
"required": false,
|
|
631
|
+
"description": "Opções de localização do calendário (nomes de dias da semana, meses, etc.).\nSe omitido, usa o locale padrão da aplicação."
|
|
632
|
+
},
|
|
633
|
+
"onBlur": {
|
|
634
|
+
"type": "(event: Event) => void",
|
|
635
|
+
"required": false,
|
|
636
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
637
|
+
},
|
|
638
|
+
"onFocus": {
|
|
639
|
+
"type": "(event: Event) => void",
|
|
640
|
+
"required": false,
|
|
641
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
642
|
+
},
|
|
643
|
+
"onSelect": {
|
|
644
|
+
"type": "(event: any) => void",
|
|
645
|
+
"required": false,
|
|
646
|
+
"description": "Callback chamado quando o usuário seleciona uma data."
|
|
647
|
+
},
|
|
648
|
+
"onInput": {
|
|
649
|
+
"type": "(event: any) => void",
|
|
650
|
+
"required": false,
|
|
651
|
+
"description": "Callback chamado quando o usuário digita manualmente no campo."
|
|
652
|
+
},
|
|
653
|
+
"onClose": {
|
|
654
|
+
"type": "(event: any) => void",
|
|
655
|
+
"required": false,
|
|
656
|
+
"description": "Callback chamado quando o painel do calendário é fechado."
|
|
657
|
+
},
|
|
658
|
+
"onTodayClick": {
|
|
659
|
+
"type": "(event: any) => void",
|
|
660
|
+
"required": false,
|
|
661
|
+
"description": "Callback chamado quando o usuário clica no botão \"Hoje\"."
|
|
662
|
+
},
|
|
663
|
+
"onClearClick": {
|
|
664
|
+
"type": "(event: any) => void",
|
|
665
|
+
"required": false,
|
|
666
|
+
"description": "Callback chamado quando o usuário clica no botão \"Limpar\"."
|
|
667
|
+
},
|
|
668
|
+
"onMonthChange": {
|
|
669
|
+
"type": "(event: any) => void",
|
|
670
|
+
"required": false,
|
|
671
|
+
"description": "Callback chamado quando o mês visualizado muda."
|
|
672
|
+
},
|
|
673
|
+
"onYearChange": {
|
|
674
|
+
"type": "(event: any) => void",
|
|
675
|
+
"required": false,
|
|
676
|
+
"description": "Callback chamado quando o ano visualizado muda."
|
|
677
|
+
},
|
|
678
|
+
"selectionMode": {
|
|
679
|
+
"type": "'single' | 'multiple'",
|
|
680
|
+
"required": false,
|
|
681
|
+
"description": "Modo de seleção de datas.\n`'single'` — seleção de uma data (padrão).\n`'multiple'` — seleção de múltiplas datas incompatíveis."
|
|
682
|
+
},
|
|
683
|
+
"rangeSeparator": {
|
|
684
|
+
"type": "string",
|
|
685
|
+
"required": false,
|
|
686
|
+
"description": "Separador exibido entre as datas de início e fim quando `selectionMode = 'range'`."
|
|
687
|
+
},
|
|
688
|
+
"showSeconds": {
|
|
689
|
+
"type": "boolean",
|
|
690
|
+
"required": false,
|
|
691
|
+
"description": "Quando `true`, exibe o seletor de segundos no modo de hora."
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
},
|
|
695
|
+
"time": {
|
|
696
|
+
"interface": "CalendarFieldConfig",
|
|
697
|
+
"sourceFile": "calendar-field.ts",
|
|
698
|
+
"description": "Configuração para campos de data e hora.\n\nQuatro variantes disponíveis:\n- `'date'` — apenas data (dia/mês/ano)\n- `'time'` — apenas hora (hora:minuto[:segundo])\n- `'dateTime'` — data com horário com timezone (UTC)\n- `'localDateTime'` — data com horário sem timezone (local da máquina)\n\nSuporta restrições de intervalo, modo de visualização (dia/mês/ano), seleção múltipla\ne localização de labels do calendário.",
|
|
699
|
+
"ownProperties": {
|
|
700
|
+
"type": {
|
|
701
|
+
"type": "'dateTime' | 'localDateTime' | 'time' | 'date'",
|
|
702
|
+
"required": true,
|
|
703
|
+
"description": "`'date'` — campo de data apenas.\n`'time'` — campo de hora apenas.\n`'dateTime'` — data e hora com timezone UTC.\n`'localDateTime'` — data e hora sem timezone (local)."
|
|
704
|
+
},
|
|
705
|
+
"view": {
|
|
706
|
+
"type": "'date' | 'month' | 'year'",
|
|
707
|
+
"required": false,
|
|
708
|
+
"description": "Modo de visualização inicial do calendário.\n`'date'` — grade de dias (padrão).\n`'month'` — selector de mês.\n`'year'` — seletor de ano."
|
|
709
|
+
},
|
|
710
|
+
"minDate": {
|
|
711
|
+
"type": "Date",
|
|
712
|
+
"required": false,
|
|
713
|
+
"description": "Data mínima selecionável. Datas anteriores serão desabilitadas no calendário."
|
|
714
|
+
},
|
|
715
|
+
"maxDate": {
|
|
716
|
+
"type": "Date",
|
|
717
|
+
"required": false,
|
|
718
|
+
"description": "Data máxima selecionável. Datas posteriores serão desabilitadas no calendário."
|
|
719
|
+
},
|
|
720
|
+
"defaultDate": {
|
|
721
|
+
"type": "Date",
|
|
722
|
+
"required": false,
|
|
723
|
+
"description": "Data exibida inicialmente ao abrir o calendário quando nenhuma data está selecionada."
|
|
724
|
+
},
|
|
725
|
+
"appendTo": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"required": false,
|
|
728
|
+
"description": "Elemento DOM ao qual o painel do calendário será anexado.\nUse `'body'` para evitar problemas de overflow em containers com `overflow: hidden`."
|
|
729
|
+
},
|
|
730
|
+
"showOnFocus": {
|
|
731
|
+
"type": "boolean",
|
|
732
|
+
"required": false,
|
|
733
|
+
"description": "Quando `true`, o calendário abre automaticamente ao focar o campo."
|
|
734
|
+
},
|
|
735
|
+
"calendarLocaleOptions": {
|
|
736
|
+
"type": "CalendarLocaleOptions",
|
|
737
|
+
"required": false,
|
|
738
|
+
"description": "Opções de localização do calendário (nomes de dias da semana, meses, etc.).\nSe omitido, usa o locale padrão da aplicação."
|
|
739
|
+
},
|
|
740
|
+
"onBlur": {
|
|
741
|
+
"type": "(event: Event) => void",
|
|
742
|
+
"required": false,
|
|
743
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
744
|
+
},
|
|
745
|
+
"onFocus": {
|
|
746
|
+
"type": "(event: Event) => void",
|
|
747
|
+
"required": false,
|
|
748
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
749
|
+
},
|
|
750
|
+
"onSelect": {
|
|
751
|
+
"type": "(event: any) => void",
|
|
752
|
+
"required": false,
|
|
753
|
+
"description": "Callback chamado quando o usuário seleciona uma data."
|
|
754
|
+
},
|
|
755
|
+
"onInput": {
|
|
756
|
+
"type": "(event: any) => void",
|
|
757
|
+
"required": false,
|
|
758
|
+
"description": "Callback chamado quando o usuário digita manualmente no campo."
|
|
759
|
+
},
|
|
760
|
+
"onClose": {
|
|
761
|
+
"type": "(event: any) => void",
|
|
762
|
+
"required": false,
|
|
763
|
+
"description": "Callback chamado quando o painel do calendário é fechado."
|
|
764
|
+
},
|
|
765
|
+
"onTodayClick": {
|
|
766
|
+
"type": "(event: any) => void",
|
|
767
|
+
"required": false,
|
|
768
|
+
"description": "Callback chamado quando o usuário clica no botão \"Hoje\"."
|
|
769
|
+
},
|
|
770
|
+
"onClearClick": {
|
|
771
|
+
"type": "(event: any) => void",
|
|
772
|
+
"required": false,
|
|
773
|
+
"description": "Callback chamado quando o usuário clica no botão \"Limpar\"."
|
|
774
|
+
},
|
|
775
|
+
"onMonthChange": {
|
|
776
|
+
"type": "(event: any) => void",
|
|
777
|
+
"required": false,
|
|
778
|
+
"description": "Callback chamado quando o mês visualizado muda."
|
|
779
|
+
},
|
|
780
|
+
"onYearChange": {
|
|
781
|
+
"type": "(event: any) => void",
|
|
782
|
+
"required": false,
|
|
783
|
+
"description": "Callback chamado quando o ano visualizado muda."
|
|
784
|
+
},
|
|
785
|
+
"selectionMode": {
|
|
786
|
+
"type": "'single' | 'multiple'",
|
|
787
|
+
"required": false,
|
|
788
|
+
"description": "Modo de seleção de datas.\n`'single'` — seleção de uma data (padrão).\n`'multiple'` — seleção de múltiplas datas incompatíveis."
|
|
789
|
+
},
|
|
790
|
+
"rangeSeparator": {
|
|
791
|
+
"type": "string",
|
|
792
|
+
"required": false,
|
|
793
|
+
"description": "Separador exibido entre as datas de início e fim quando `selectionMode = 'range'`."
|
|
794
|
+
},
|
|
795
|
+
"showSeconds": {
|
|
796
|
+
"type": "boolean",
|
|
797
|
+
"required": false,
|
|
798
|
+
"description": "Quando `true`, exibe o seletor de segundos no modo de hora."
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
},
|
|
802
|
+
"date": {
|
|
803
|
+
"interface": "CalendarFieldConfig",
|
|
804
|
+
"sourceFile": "calendar-field.ts",
|
|
805
|
+
"description": "Configuração para campos de data e hora.\n\nQuatro variantes disponíveis:\n- `'date'` — apenas data (dia/mês/ano)\n- `'time'` — apenas hora (hora:minuto[:segundo])\n- `'dateTime'` — data com horário com timezone (UTC)\n- `'localDateTime'` — data com horário sem timezone (local da máquina)\n\nSuporta restrições de intervalo, modo de visualização (dia/mês/ano), seleção múltipla\ne localização de labels do calendário.",
|
|
806
|
+
"ownProperties": {
|
|
807
|
+
"type": {
|
|
808
|
+
"type": "'dateTime' | 'localDateTime' | 'time' | 'date'",
|
|
809
|
+
"required": true,
|
|
810
|
+
"description": "`'date'` — campo de data apenas.\n`'time'` — campo de hora apenas.\n`'dateTime'` — data e hora com timezone UTC.\n`'localDateTime'` — data e hora sem timezone (local)."
|
|
811
|
+
},
|
|
812
|
+
"view": {
|
|
813
|
+
"type": "'date' | 'month' | 'year'",
|
|
814
|
+
"required": false,
|
|
815
|
+
"description": "Modo de visualização inicial do calendário.\n`'date'` — grade de dias (padrão).\n`'month'` — selector de mês.\n`'year'` — seletor de ano."
|
|
816
|
+
},
|
|
817
|
+
"minDate": {
|
|
818
|
+
"type": "Date",
|
|
819
|
+
"required": false,
|
|
820
|
+
"description": "Data mínima selecionável. Datas anteriores serão desabilitadas no calendário."
|
|
821
|
+
},
|
|
822
|
+
"maxDate": {
|
|
823
|
+
"type": "Date",
|
|
824
|
+
"required": false,
|
|
825
|
+
"description": "Data máxima selecionável. Datas posteriores serão desabilitadas no calendário."
|
|
826
|
+
},
|
|
827
|
+
"defaultDate": {
|
|
828
|
+
"type": "Date",
|
|
829
|
+
"required": false,
|
|
830
|
+
"description": "Data exibida inicialmente ao abrir o calendário quando nenhuma data está selecionada."
|
|
831
|
+
},
|
|
832
|
+
"appendTo": {
|
|
833
|
+
"type": "string",
|
|
834
|
+
"required": false,
|
|
835
|
+
"description": "Elemento DOM ao qual o painel do calendário será anexado.\nUse `'body'` para evitar problemas de overflow em containers com `overflow: hidden`."
|
|
836
|
+
},
|
|
837
|
+
"showOnFocus": {
|
|
838
|
+
"type": "boolean",
|
|
839
|
+
"required": false,
|
|
840
|
+
"description": "Quando `true`, o calendário abre automaticamente ao focar o campo."
|
|
841
|
+
},
|
|
842
|
+
"calendarLocaleOptions": {
|
|
843
|
+
"type": "CalendarLocaleOptions",
|
|
844
|
+
"required": false,
|
|
845
|
+
"description": "Opções de localização do calendário (nomes de dias da semana, meses, etc.).\nSe omitido, usa o locale padrão da aplicação."
|
|
846
|
+
},
|
|
847
|
+
"onBlur": {
|
|
848
|
+
"type": "(event: Event) => void",
|
|
849
|
+
"required": false,
|
|
850
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
851
|
+
},
|
|
852
|
+
"onFocus": {
|
|
853
|
+
"type": "(event: Event) => void",
|
|
854
|
+
"required": false,
|
|
855
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
856
|
+
},
|
|
857
|
+
"onSelect": {
|
|
858
|
+
"type": "(event: any) => void",
|
|
859
|
+
"required": false,
|
|
860
|
+
"description": "Callback chamado quando o usuário seleciona uma data."
|
|
861
|
+
},
|
|
862
|
+
"onInput": {
|
|
863
|
+
"type": "(event: any) => void",
|
|
864
|
+
"required": false,
|
|
865
|
+
"description": "Callback chamado quando o usuário digita manualmente no campo."
|
|
866
|
+
},
|
|
867
|
+
"onClose": {
|
|
868
|
+
"type": "(event: any) => void",
|
|
869
|
+
"required": false,
|
|
870
|
+
"description": "Callback chamado quando o painel do calendário é fechado."
|
|
871
|
+
},
|
|
872
|
+
"onTodayClick": {
|
|
873
|
+
"type": "(event: any) => void",
|
|
874
|
+
"required": false,
|
|
875
|
+
"description": "Callback chamado quando o usuário clica no botão \"Hoje\"."
|
|
876
|
+
},
|
|
877
|
+
"onClearClick": {
|
|
878
|
+
"type": "(event: any) => void",
|
|
879
|
+
"required": false,
|
|
880
|
+
"description": "Callback chamado quando o usuário clica no botão \"Limpar\"."
|
|
881
|
+
},
|
|
882
|
+
"onMonthChange": {
|
|
883
|
+
"type": "(event: any) => void",
|
|
884
|
+
"required": false,
|
|
885
|
+
"description": "Callback chamado quando o mês visualizado muda."
|
|
886
|
+
},
|
|
887
|
+
"onYearChange": {
|
|
888
|
+
"type": "(event: any) => void",
|
|
889
|
+
"required": false,
|
|
890
|
+
"description": "Callback chamado quando o ano visualizado muda."
|
|
891
|
+
},
|
|
892
|
+
"selectionMode": {
|
|
893
|
+
"type": "'single' | 'multiple'",
|
|
894
|
+
"required": false,
|
|
895
|
+
"description": "Modo de seleção de datas.\n`'single'` — seleção de uma data (padrão).\n`'multiple'` — seleção de múltiplas datas incompatíveis."
|
|
896
|
+
},
|
|
897
|
+
"rangeSeparator": {
|
|
898
|
+
"type": "string",
|
|
899
|
+
"required": false,
|
|
900
|
+
"description": "Separador exibido entre as datas de início e fim quando `selectionMode = 'range'`."
|
|
901
|
+
},
|
|
902
|
+
"showSeconds": {
|
|
903
|
+
"type": "boolean",
|
|
904
|
+
"required": false,
|
|
905
|
+
"description": "Quando `true`, exibe o seletor de segundos no modo de hora."
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"checkbox": {
|
|
910
|
+
"interface": "CheckboxFieldConfig",
|
|
911
|
+
"sourceFile": "checkbox-field.ts",
|
|
912
|
+
"description": "Configuração para campo de múltipla escolha com checkboxes.\n\nRenderiza uma lista de checkboxes com suporte a agrupamento hierárquico via `CheckboxListData`.\nO valor do campo será um array com os valores dos itens selecionados.\n\nUse quando o usuário pode selecionar zero ou mais opções de uma lista finita.\nPara seleção única, prefira `type: 'radioButton'` ou `type: 'enum'`.",
|
|
913
|
+
"ownProperties": {
|
|
914
|
+
"type": {
|
|
915
|
+
"type": "'checkbox'",
|
|
916
|
+
"required": true,
|
|
917
|
+
"description": "Tipo do campo: sempre `'checkbox'`."
|
|
918
|
+
},
|
|
919
|
+
"data": {
|
|
920
|
+
"type": "CheckboxListData",
|
|
921
|
+
"required": true,
|
|
922
|
+
"description": "Dados que definem os itens e a estrutura hierárquica dos checkboxes.\nImportado de `@seniorsistemas/angular-components/checkbox-list`.\nCada item possui `label`, `value` e opcionalmente `children` com sub-itens."
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
"chips": {
|
|
927
|
+
"interface": "ChipsFieldConfig",
|
|
928
|
+
"sourceFile": "chips-field.ts",
|
|
929
|
+
"description": "Configuração para campo de entrada de múltiplas tags (chips).\n\nPermite que o usuário insira vários valores de texto livres, visualizados como chips/tags.\nCada valor é adicionado ao pressionar Enter (ou o separador configurado).\nO valor do campo é um array de strings.\n\nUse para e-mails, palavras-chave, códigos ou qualquer lista de valores livres.",
|
|
930
|
+
"ownProperties": {
|
|
931
|
+
"type": {
|
|
932
|
+
"type": "'chips'",
|
|
933
|
+
"required": true,
|
|
934
|
+
"description": "Tipo do campo: sempre `'chips'`."
|
|
935
|
+
},
|
|
936
|
+
"keyFilter": {
|
|
937
|
+
"type": "RegExp",
|
|
938
|
+
"required": false,
|
|
939
|
+
"description": "Expressão regular que filtra os caracteres aceitos em cada chip."
|
|
940
|
+
},
|
|
941
|
+
"separator": {
|
|
942
|
+
"type": "string",
|
|
943
|
+
"required": false,
|
|
944
|
+
"description": "Caractere separador para adicionar novos chips além do Enter."
|
|
945
|
+
},
|
|
946
|
+
"showCopyButton": {
|
|
947
|
+
"type": "boolean",
|
|
948
|
+
"required": false,
|
|
949
|
+
"description": "Quando `true`, exibe um botão de copiar todos os chips para a área de transferência."
|
|
950
|
+
},
|
|
951
|
+
"onAdd": {
|
|
952
|
+
"type": "(event: any) => void",
|
|
953
|
+
"required": false,
|
|
954
|
+
"description": "Callback chamado quando um novo chip é adicionado."
|
|
955
|
+
},
|
|
956
|
+
"onRemove": {
|
|
957
|
+
"type": "(event: any) => void",
|
|
958
|
+
"required": false,
|
|
959
|
+
"description": "Callback chamado quando um chip é removido."
|
|
960
|
+
},
|
|
961
|
+
"onChipClick": {
|
|
962
|
+
"type": "(event: any) => void",
|
|
963
|
+
"required": false,
|
|
964
|
+
"description": "Callback chamado quando o usuário clica em um chip existente."
|
|
965
|
+
},
|
|
966
|
+
"onFocus": {
|
|
967
|
+
"type": "(event: any) => void",
|
|
968
|
+
"required": false,
|
|
969
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
970
|
+
},
|
|
971
|
+
"onBlur": {
|
|
972
|
+
"type": "(event: any) => void",
|
|
973
|
+
"required": false,
|
|
974
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
975
|
+
},
|
|
976
|
+
"onCopy": {
|
|
977
|
+
"type": "(content: string) => void",
|
|
978
|
+
"required": false,
|
|
979
|
+
"description": "Callback chamado quando o usuário copia o conteúdo dos chips.\nRecebe o texto combinado de todos os chips."
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
"contentGenerator": {
|
|
984
|
+
"interface": "ContentGeneratorFieldConfig",
|
|
985
|
+
"sourceFile": "content-generator-field.ts",
|
|
986
|
+
"description": "Configuração para campo de área de texto com geração de conteúdo via IA.\n\nCombina um textarea completo com recursos de:\n- Geração automática de texto por IA via prompt\n- Reconhecimento de voz (speech-to-text)\n- Contexto persistente entre gerações (`keepContext`)\n\nUse `type: 'contentGenerator'` para novas implementações.\nO tipo `'textAreaIA'` está depreciado e será removido na v20.",
|
|
987
|
+
"ownProperties": {
|
|
988
|
+
"type": {
|
|
989
|
+
"type": "'contentGenerator' | 'textAreaIA'",
|
|
990
|
+
"required": true,
|
|
991
|
+
"description": "`'contentGenerator'` — tipo atual recomendado.\n`'textAreaIA'` — **@deprecated** Será removido na v20, use `'contentGenerator'`."
|
|
992
|
+
},
|
|
993
|
+
"cols": {
|
|
994
|
+
"type": "number",
|
|
995
|
+
"required": false,
|
|
996
|
+
"description": "Número de colunas de texto do textarea."
|
|
997
|
+
},
|
|
998
|
+
"rows": {
|
|
999
|
+
"type": "number",
|
|
1000
|
+
"required": false,
|
|
1001
|
+
"description": "Número de linhas visíveis do textarea."
|
|
1002
|
+
},
|
|
1003
|
+
"keyFilter": {
|
|
1004
|
+
"type": "any",
|
|
1005
|
+
"required": false,
|
|
1006
|
+
"description": "Filtro de teclas aceitas. Aceita regex ou string."
|
|
1007
|
+
},
|
|
1008
|
+
"style": {
|
|
1009
|
+
"type": "Partial<CSSStyleDeclaration>",
|
|
1010
|
+
"required": false,
|
|
1011
|
+
"description": "Estilos CSS inline aplicados diretamente no elemento textarea."
|
|
1012
|
+
},
|
|
1013
|
+
"prompt": {
|
|
1014
|
+
"type": "string",
|
|
1015
|
+
"required": false,
|
|
1016
|
+
"description": "Prompt inicial enviado à IA para gerar conteúdo.\nDefine a instrução base para o assistente de geração de texto."
|
|
1017
|
+
},
|
|
1018
|
+
"readonly": {
|
|
1019
|
+
"type": "() => boolean",
|
|
1020
|
+
"required": false,
|
|
1021
|
+
"description": "Função que retorna `true` quando o campo deve estar em modo somente-leitura."
|
|
1022
|
+
},
|
|
1023
|
+
"speechRecognition": {
|
|
1024
|
+
"type": "boolean",
|
|
1025
|
+
"required": false,
|
|
1026
|
+
"description": "Quando `true`, ativa o botão de reconhecimento de voz (speech-to-text).\nO conteúdo falado é convertido em texto e inserido no campo."
|
|
1027
|
+
},
|
|
1028
|
+
"keepContext": {
|
|
1029
|
+
"type": "boolean",
|
|
1030
|
+
"required": true,
|
|
1031
|
+
"description": "Quando `true`, o contexto das gerações anteriores é mantido ao gerar novo conteúdo.\nPermite que a IA considere o histórico da conversa na próxima geração."
|
|
1032
|
+
},
|
|
1033
|
+
"speechRecognitionPlaceholder": {
|
|
1034
|
+
"type": "string",
|
|
1035
|
+
"required": true,
|
|
1036
|
+
"description": "Texto de placeholder exibido na área de reconhecimento de voz enquanto o microfone está ativo."
|
|
1037
|
+
},
|
|
1038
|
+
"maxLength": {
|
|
1039
|
+
"type": "number",
|
|
1040
|
+
"required": false,
|
|
1041
|
+
"description": "Número máximo de caracteres permitidos no campo."
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
1045
|
+
"textAreaIA": {
|
|
1046
|
+
"interface": "ContentGeneratorFieldConfig",
|
|
1047
|
+
"sourceFile": "content-generator-field.ts",
|
|
1048
|
+
"description": "Configuração para campo de área de texto com geração de conteúdo via IA.\n\nCombina um textarea completo com recursos de:\n- Geração automática de texto por IA via prompt\n- Reconhecimento de voz (speech-to-text)\n- Contexto persistente entre gerações (`keepContext`)\n\nUse `type: 'contentGenerator'` para novas implementações.\nO tipo `'textAreaIA'` está depreciado e será removido na v20.",
|
|
1049
|
+
"ownProperties": {
|
|
1050
|
+
"type": {
|
|
1051
|
+
"type": "'contentGenerator' | 'textAreaIA'",
|
|
1052
|
+
"required": true,
|
|
1053
|
+
"description": "`'contentGenerator'` — tipo atual recomendado.\n`'textAreaIA'` — **@deprecated** Será removido na v20, use `'contentGenerator'`."
|
|
1054
|
+
},
|
|
1055
|
+
"cols": {
|
|
1056
|
+
"type": "number",
|
|
1057
|
+
"required": false,
|
|
1058
|
+
"description": "Número de colunas de texto do textarea."
|
|
1059
|
+
},
|
|
1060
|
+
"rows": {
|
|
1061
|
+
"type": "number",
|
|
1062
|
+
"required": false,
|
|
1063
|
+
"description": "Número de linhas visíveis do textarea."
|
|
1064
|
+
},
|
|
1065
|
+
"keyFilter": {
|
|
1066
|
+
"type": "any",
|
|
1067
|
+
"required": false,
|
|
1068
|
+
"description": "Filtro de teclas aceitas. Aceita regex ou string."
|
|
1069
|
+
},
|
|
1070
|
+
"style": {
|
|
1071
|
+
"type": "Partial<CSSStyleDeclaration>",
|
|
1072
|
+
"required": false,
|
|
1073
|
+
"description": "Estilos CSS inline aplicados diretamente no elemento textarea."
|
|
1074
|
+
},
|
|
1075
|
+
"prompt": {
|
|
1076
|
+
"type": "string",
|
|
1077
|
+
"required": false,
|
|
1078
|
+
"description": "Prompt inicial enviado à IA para gerar conteúdo.\nDefine a instrução base para o assistente de geração de texto."
|
|
1079
|
+
},
|
|
1080
|
+
"readonly": {
|
|
1081
|
+
"type": "() => boolean",
|
|
1082
|
+
"required": false,
|
|
1083
|
+
"description": "Função que retorna `true` quando o campo deve estar em modo somente-leitura."
|
|
1084
|
+
},
|
|
1085
|
+
"speechRecognition": {
|
|
1086
|
+
"type": "boolean",
|
|
1087
|
+
"required": false,
|
|
1088
|
+
"description": "Quando `true`, ativa o botão de reconhecimento de voz (speech-to-text).\nO conteúdo falado é convertido em texto e inserido no campo."
|
|
1089
|
+
},
|
|
1090
|
+
"keepContext": {
|
|
1091
|
+
"type": "boolean",
|
|
1092
|
+
"required": true,
|
|
1093
|
+
"description": "Quando `true`, o contexto das gerações anteriores é mantido ao gerar novo conteúdo.\nPermite que a IA considere o histórico da conversa na próxima geração."
|
|
1094
|
+
},
|
|
1095
|
+
"speechRecognitionPlaceholder": {
|
|
1096
|
+
"type": "string",
|
|
1097
|
+
"required": true,
|
|
1098
|
+
"description": "Texto de placeholder exibido na área de reconhecimento de voz enquanto o microfone está ativo."
|
|
1099
|
+
},
|
|
1100
|
+
"maxLength": {
|
|
1101
|
+
"type": "number",
|
|
1102
|
+
"required": false,
|
|
1103
|
+
"description": "Número máximo de caracteres permitidos no campo."
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
},
|
|
1107
|
+
"countryPhonePicker": {
|
|
1108
|
+
"interface": "CountryPhonePickerConfig",
|
|
1109
|
+
"sourceFile": "country-phone-picker-field.ts",
|
|
1110
|
+
"description": "Configuração para campo de seleção de país com entrada de número de telefone.\n\nCombina um dropdown de seleção de país (com bandeira e código DDI) com um campo de telefone\nque aplica automaticamente a máscara de cada país selecionado.\n\nO valor do campo é do tipo `PhoneSelectionData`, contendo o país e o número.",
|
|
1111
|
+
"ownProperties": {
|
|
1112
|
+
"type": {
|
|
1113
|
+
"type": "'countryPhonePicker'",
|
|
1114
|
+
"required": true,
|
|
1115
|
+
"description": "Tipo do campo: sempre `'countryPhonePicker'`."
|
|
1116
|
+
},
|
|
1117
|
+
"countries": {
|
|
1118
|
+
"type": "string[]",
|
|
1119
|
+
"required": true,
|
|
1120
|
+
"description": "Lista de códigos de países disponíveis no dropdown.\nUse códigos ISO 3166-1 alpha-2 em maiúsculas."
|
|
1121
|
+
},
|
|
1122
|
+
"ordination": {
|
|
1123
|
+
"type": "Ordination",
|
|
1124
|
+
"required": true,
|
|
1125
|
+
"description": "Critério de ordenação dos países no dropdown.\nImportado de `@seniorsistemas/angular-components/country-phone-picker`."
|
|
1126
|
+
},
|
|
1127
|
+
"onSelected": {
|
|
1128
|
+
"type": "(data: CountryPhoneData) => void",
|
|
1129
|
+
"required": true,
|
|
1130
|
+
"description": "Callback obrigatório chamado quando o país é selecionado.\nRecebe os dados do país escolhido (nome, DDI, código)."
|
|
1131
|
+
},
|
|
1132
|
+
"onFocusLost": {
|
|
1133
|
+
"type": "(data: PhoneSelectionData | null) => void",
|
|
1134
|
+
"required": false,
|
|
1135
|
+
"description": "Callback chamado quando o campo de telefone perde o foco.\nRecebe os dados completos da seleção (país + número), ou `null` se vazio."
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
},
|
|
1139
|
+
"money": {
|
|
1140
|
+
"interface": "CurrencyFieldConfig",
|
|
1141
|
+
"sourceFile": "currency-field.ts",
|
|
1142
|
+
"description": "Configuração para campo monetário com símbolo de moeda.",
|
|
1143
|
+
"ownProperties": {
|
|
1144
|
+
"type": {
|
|
1145
|
+
"type": "'money'",
|
|
1146
|
+
"required": true,
|
|
1147
|
+
"description": "Tipo do campo: sempre `'money'`."
|
|
1148
|
+
},
|
|
1149
|
+
"alignTo": {
|
|
1150
|
+
"type": "'left' | 'right'",
|
|
1151
|
+
"required": false,
|
|
1152
|
+
"description": "Alinhamento do texto dentro do campo.\n`'left'` — alinhado à esquerda.\n`'right'` — alinhado à direita (comum em campos monetários)."
|
|
1153
|
+
},
|
|
1154
|
+
"currency": {
|
|
1155
|
+
"type": "() => Currency",
|
|
1156
|
+
"required": false,
|
|
1157
|
+
"description": "Função que retorna o objeto de moeda a ser exibido junto ao valor.\nInclui símbolo, código e formatação."
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
},
|
|
1161
|
+
"lookup": {
|
|
1162
|
+
"interface": "LookupFieldConfig",
|
|
1163
|
+
"sourceFile": "lookup-field.ts",
|
|
1164
|
+
"description": "Configuração para campo de pesquisa avançada (Lookup).\n\nExibe um input com autocompletar e botão de pesquisa que abre um diálogo com grid de resultados.\nSuporta seleção simples ou múltipla, filtros padrão, ações CRUD na seleção e configuração\ndinâmica das colunas da grade.\n\nRequer dois Observables:\n- `suggestionsObservable`: para sugestões no autocompletar\n- `searchObservable`: para a grade de resultados do diálogo",
|
|
1165
|
+
"ownProperties": {
|
|
1166
|
+
"type": {
|
|
1167
|
+
"type": "'lookup'",
|
|
1168
|
+
"required": true,
|
|
1169
|
+
"description": "Tipo do campo: sempre `'lookup'`."
|
|
1170
|
+
},
|
|
1171
|
+
"defaultValue": {
|
|
1172
|
+
"type": "any",
|
|
1173
|
+
"required": false,
|
|
1174
|
+
"description": "Valor padrão pré-selecionado ao inicializar o formulário."
|
|
1175
|
+
},
|
|
1176
|
+
"multiple": {
|
|
1177
|
+
"type": "boolean",
|
|
1178
|
+
"required": false,
|
|
1179
|
+
"description": "Quando `true`, permite selecionar múltiplos registros exibidos como tags."
|
|
1180
|
+
},
|
|
1181
|
+
"showSearch": {
|
|
1182
|
+
"type": "boolean",
|
|
1183
|
+
"required": false,
|
|
1184
|
+
"description": "Quando `true`, exibe o botão de pesquisa avançada que abre o diálogo com a grade."
|
|
1185
|
+
},
|
|
1186
|
+
"searchFields": {
|
|
1187
|
+
"type": "DynamicType[]",
|
|
1188
|
+
"required": true,
|
|
1189
|
+
"description": "Colunas de filtro exibidas no diálogo de pesquisa avançada.\nCada item define o campo de filtro disponível para o usuário."
|
|
1190
|
+
},
|
|
1191
|
+
"searchGridFields": {
|
|
1192
|
+
"type": "DynamicType[]",
|
|
1193
|
+
"required": true,
|
|
1194
|
+
"description": "Colunas exibidas na grade de resultados do diálogo de pesquisa.\nCada item define uma coluna com header e campo de dados."
|
|
1195
|
+
},
|
|
1196
|
+
"suggestionsObservable": {
|
|
1197
|
+
"type": "Observable<any[]>",
|
|
1198
|
+
"required": true,
|
|
1199
|
+
"description": "Observable que emite sugestões para o autocompletar do input do lookup.\nDeve emitir um array de objetos com a propriedade `lookupDisplayField`."
|
|
1200
|
+
},
|
|
1201
|
+
"searchObservable": {
|
|
1202
|
+
"type": "Observable<SearchObservable>",
|
|
1203
|
+
"required": true,
|
|
1204
|
+
"description": "Observable que emite os dados da grade do diálogo de pesquisa avançada.\nDeve emitir um objeto `SearchObservable` com `gridData` e `totalRecords`.\n\nEstrutura de `SearchObservable`: `{ gridData: any[]; totalRecords: number; searchTotalRecordsLabel?: string; }`",
|
|
1205
|
+
"imports": [
|
|
1206
|
+
"import { SearchObservable } from '@seniorsistemas/angular-components/dynamic-form';"
|
|
1207
|
+
]
|
|
1208
|
+
},
|
|
1209
|
+
"dataKey": {
|
|
1210
|
+
"type": "string",
|
|
1211
|
+
"required": true,
|
|
1212
|
+
"description": "Nome da propriedade única do objeto que identifica cada registro."
|
|
1213
|
+
},
|
|
1214
|
+
"lookupDisplayField": {
|
|
1215
|
+
"type": "string",
|
|
1216
|
+
"required": true,
|
|
1217
|
+
"description": "Nome da propriedade do objeto de resultado a ser exibida no input e nas tags."
|
|
1218
|
+
},
|
|
1219
|
+
"searchTitle": {
|
|
1220
|
+
"type": "string",
|
|
1221
|
+
"required": false,
|
|
1222
|
+
"description": "Título do diálogo de pesquisa avançada."
|
|
1223
|
+
},
|
|
1224
|
+
"searchEmptyTitle": {
|
|
1225
|
+
"type": "string",
|
|
1226
|
+
"required": false,
|
|
1227
|
+
"description": "Mensagem exibida quando a pesquisa não retorna resultados."
|
|
1228
|
+
},
|
|
1229
|
+
"filterLabel": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"required": false,
|
|
1232
|
+
"description": "Label do campo de filtro no diálogo."
|
|
1233
|
+
},
|
|
1234
|
+
"filterTitle": {
|
|
1235
|
+
"type": "string",
|
|
1236
|
+
"required": false,
|
|
1237
|
+
"description": "Título do campo de filtro no diálogo."
|
|
1238
|
+
},
|
|
1239
|
+
"clearLabel": {
|
|
1240
|
+
"type": "string",
|
|
1241
|
+
"required": false,
|
|
1242
|
+
"description": "Label do botão de limpar filtros."
|
|
1243
|
+
},
|
|
1244
|
+
"cancelLabel": {
|
|
1245
|
+
"type": "string",
|
|
1246
|
+
"required": false,
|
|
1247
|
+
"description": "Label do botão de cancelar e fechar o diálogo."
|
|
1248
|
+
},
|
|
1249
|
+
"selectLabel": {
|
|
1250
|
+
"type": "string",
|
|
1251
|
+
"required": false,
|
|
1252
|
+
"description": "Label do botão de confirmar a seleção no diálogo."
|
|
1253
|
+
},
|
|
1254
|
+
"emptyMessage": {
|
|
1255
|
+
"type": "string",
|
|
1256
|
+
"required": false,
|
|
1257
|
+
"description": "Mensagem exibida quando nenhum registro é encontrado na grade."
|
|
1258
|
+
},
|
|
1259
|
+
"recordLabel": {
|
|
1260
|
+
"type": "string",
|
|
1261
|
+
"required": false,
|
|
1262
|
+
"description": "Label para um registro (singular)."
|
|
1263
|
+
},
|
|
1264
|
+
"recordsLabel": {
|
|
1265
|
+
"type": "string",
|
|
1266
|
+
"required": false,
|
|
1267
|
+
"description": "Label para múltiplos registros (plural)."
|
|
1268
|
+
},
|
|
1269
|
+
"emptyFieldLabel": {
|
|
1270
|
+
"type": "string",
|
|
1271
|
+
"required": false,
|
|
1272
|
+
"description": "Label exibida quando o campo está vazio e sem seleção."
|
|
1273
|
+
},
|
|
1274
|
+
"appendTo": {
|
|
1275
|
+
"type": "string",
|
|
1276
|
+
"required": false,
|
|
1277
|
+
"description": "Elemento DOM ao qual o painel de sugestões será anexado.\nUse `'body'` para evitar problemas com `overflow: hidden`."
|
|
1278
|
+
},
|
|
1279
|
+
"autocompleteForceSelection": {
|
|
1280
|
+
"type": "boolean",
|
|
1281
|
+
"required": false,
|
|
1282
|
+
"description": "Quando `true`, o usuário só pode selecionar valores da lista de sugestões;\ntexto livre é descartado ao perder o foco."
|
|
1283
|
+
},
|
|
1284
|
+
"maxlength": {
|
|
1285
|
+
"type": "number | null",
|
|
1286
|
+
"required": false,
|
|
1287
|
+
"description": null
|
|
1288
|
+
},
|
|
1289
|
+
"showAddOption": {
|
|
1290
|
+
"type": "boolean",
|
|
1291
|
+
"required": false,
|
|
1292
|
+
"description": null
|
|
1293
|
+
},
|
|
1294
|
+
"showEditOption": {
|
|
1295
|
+
"type": "boolean",
|
|
1296
|
+
"required": false,
|
|
1297
|
+
"description": "Quando `true`, exibe o botão de editar o registro selecionado."
|
|
1298
|
+
},
|
|
1299
|
+
"showRemoveOption": {
|
|
1300
|
+
"type": "boolean",
|
|
1301
|
+
"required": false,
|
|
1302
|
+
"description": "Quando `true`, exibe o botão de remover registros selecionados."
|
|
1303
|
+
},
|
|
1304
|
+
"sortableColumnsDisabled": {
|
|
1305
|
+
"type": "string[]",
|
|
1306
|
+
"required": false,
|
|
1307
|
+
"description": "Lista de colunas que não podem ser ordenadas na grade do diálogo."
|
|
1308
|
+
},
|
|
1309
|
+
"defaultFilter": {
|
|
1310
|
+
"type": "DefaultFilter[]",
|
|
1311
|
+
"required": false,
|
|
1312
|
+
"description": "Filtros padrão aplicados automaticamente à pesquisa.\nCada item define um campo e um valor fixo ou dinâmico (função).\n\nEstrutura de `DefaultFilter`: `{ field: string; value: string | (() => string); }`",
|
|
1313
|
+
"imports": [
|
|
1314
|
+
"import { DefaultFilter } from '@seniorsistemas/angular-components/dynamic-form';"
|
|
1315
|
+
]
|
|
1316
|
+
},
|
|
1317
|
+
"onLookupRequest": {
|
|
1318
|
+
"type": "(query: string) => void",
|
|
1319
|
+
"required": true,
|
|
1320
|
+
"description": "Callback chamado quando o usuário digita para buscar sugestões.\nDeve atualizar o `suggestionsObservable` com os resultados da busca."
|
|
1321
|
+
},
|
|
1322
|
+
"onSearchRequest": {
|
|
1323
|
+
"type": "(event: LookupSearchRequest) => void",
|
|
1324
|
+
"required": true,
|
|
1325
|
+
"description": "Callback chamado quando o usuário realiza uma pesquisa no diálogo avançado.\nDeve atualizar o `searchObservable` com os resultados paginados.\n\nEstrutura de `LookupSearchRequest`: `{ filterData: Record<string, any>; first: number; rows: number; }`",
|
|
1326
|
+
"imports": [
|
|
1327
|
+
"import { LookupSearchRequest } from '@seniorsistemas/angular-components/dynamic-form';"
|
|
1328
|
+
]
|
|
1329
|
+
},
|
|
1330
|
+
"onSelect": {
|
|
1331
|
+
"type": "(event: any) => void",
|
|
1332
|
+
"required": false,
|
|
1333
|
+
"description": "Callback chamado quando o usuário seleciona um registro."
|
|
1334
|
+
},
|
|
1335
|
+
"onUnselect": {
|
|
1336
|
+
"type": "(event: any) => void",
|
|
1337
|
+
"required": false,
|
|
1338
|
+
"description": "Callback chamado quando o usuário remove um registro selecionado (modo múltiplo)."
|
|
1339
|
+
},
|
|
1340
|
+
"onClear": {
|
|
1341
|
+
"type": "(event: any) => void",
|
|
1342
|
+
"required": false,
|
|
1343
|
+
"description": "Callback chamado quando o usuário limpa todos os registros selecionados."
|
|
1344
|
+
},
|
|
1345
|
+
"onBlur": {
|
|
1346
|
+
"type": "(event: FocusEvent) => void",
|
|
1347
|
+
"required": false,
|
|
1348
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
1349
|
+
},
|
|
1350
|
+
"onAdd": {
|
|
1351
|
+
"type": "() => void",
|
|
1352
|
+
"required": false,
|
|
1353
|
+
"description": "Callback chamado quando o usuário clica no botão de adicionar novo registro."
|
|
1354
|
+
},
|
|
1355
|
+
"onEdit": {
|
|
1356
|
+
"type": "(selectedItem: unknown) => void",
|
|
1357
|
+
"required": false,
|
|
1358
|
+
"description": "Callback chamado quando o usuário clica no botão de editar. Recebe o item selecionado."
|
|
1359
|
+
},
|
|
1360
|
+
"onRemove": {
|
|
1361
|
+
"type": "(selectedItems: unknown[]) => void",
|
|
1362
|
+
"required": false,
|
|
1363
|
+
"description": "Callback chamado quando o usuário clica no botão de remover. Recebe os itens selecionados."
|
|
1364
|
+
},
|
|
1365
|
+
"onClearButtonClick": {
|
|
1366
|
+
"type": "() => void",
|
|
1367
|
+
"required": false,
|
|
1368
|
+
"description": "Callback chamado quando o usuário clica no botão de limpar do campo (X)."
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
"integer": {
|
|
1373
|
+
"interface": "NumberFieldConfig",
|
|
1374
|
+
"sourceFile": "number-field.ts",
|
|
1375
|
+
"description": "Configuração para campos numéricos inteiros ou de número legado.",
|
|
1376
|
+
"ownProperties": {
|
|
1377
|
+
"type": {
|
|
1378
|
+
"type": "'integer' | 'legacyNumber'",
|
|
1379
|
+
"required": true,
|
|
1380
|
+
"description": "`'integer'` — campo numérico inteiro.\n`'legacyNumber'` — campo numérico legado."
|
|
1381
|
+
},
|
|
1382
|
+
"numberLocaleOptions": {
|
|
1383
|
+
"type": "NumberLocaleOptions",
|
|
1384
|
+
"required": false,
|
|
1385
|
+
"description": "Opções de localização numérica."
|
|
1386
|
+
},
|
|
1387
|
+
"browserAutocomplete": {
|
|
1388
|
+
"type": "boolean",
|
|
1389
|
+
"required": false,
|
|
1390
|
+
"description": "Controla o autocomplete nativo do browser."
|
|
1391
|
+
},
|
|
1392
|
+
"precision": {
|
|
1393
|
+
"type": "Function | number",
|
|
1394
|
+
"required": false,
|
|
1395
|
+
"description": "Número total de dígitos aceitos. Pode ser função para controle dinâmico."
|
|
1396
|
+
},
|
|
1397
|
+
"scale": {
|
|
1398
|
+
"type": "(() => number) | number",
|
|
1399
|
+
"required": false,
|
|
1400
|
+
"description": "Número de casas decimais. Pode ser função para controle dinâmico."
|
|
1401
|
+
},
|
|
1402
|
+
"alignTo": {
|
|
1403
|
+
"type": "NumberAlignmentOption",
|
|
1404
|
+
"required": false,
|
|
1405
|
+
"description": "Alinhamento do texto no campo."
|
|
1406
|
+
},
|
|
1407
|
+
"mask": {
|
|
1408
|
+
"type": "stringFn | string",
|
|
1409
|
+
"required": false,
|
|
1410
|
+
"description": "Máscara de entrada. Pode ser string estática ou função."
|
|
1411
|
+
},
|
|
1412
|
+
"leftAddon": {
|
|
1413
|
+
"type": "AddonConfig",
|
|
1414
|
+
"required": false,
|
|
1415
|
+
"description": "Addon exibido à esquerda do campo."
|
|
1416
|
+
},
|
|
1417
|
+
"rightAddon": {
|
|
1418
|
+
"type": "AddonConfig",
|
|
1419
|
+
"required": false,
|
|
1420
|
+
"description": "Addon exibido à direita do campo."
|
|
1421
|
+
},
|
|
1422
|
+
"localizedNumber": {
|
|
1423
|
+
"type": "boolean",
|
|
1424
|
+
"required": false,
|
|
1425
|
+
"description": "Quando `true`, usa o componente de número localizado."
|
|
1426
|
+
},
|
|
1427
|
+
"onBlur": {
|
|
1428
|
+
"type": "(event: Event) => void",
|
|
1429
|
+
"required": false,
|
|
1430
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
1431
|
+
},
|
|
1432
|
+
"onFocus": {
|
|
1433
|
+
"type": "(event: Event) => void",
|
|
1434
|
+
"required": false,
|
|
1435
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
1436
|
+
},
|
|
1437
|
+
"onComplete": {
|
|
1438
|
+
"type": "(event: Event) => void",
|
|
1439
|
+
"required": false,
|
|
1440
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
1441
|
+
},
|
|
1442
|
+
"onInput": {
|
|
1443
|
+
"type": "(event: Event) => void",
|
|
1444
|
+
"required": false,
|
|
1445
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
},
|
|
1449
|
+
"legacyNumber": {
|
|
1450
|
+
"interface": "NumberFieldConfig",
|
|
1451
|
+
"sourceFile": "number-field.ts",
|
|
1452
|
+
"description": "Configuração para campos numéricos inteiros ou de número legado.",
|
|
1453
|
+
"ownProperties": {
|
|
1454
|
+
"type": {
|
|
1455
|
+
"type": "'integer' | 'legacyNumber'",
|
|
1456
|
+
"required": true,
|
|
1457
|
+
"description": "`'integer'` — campo numérico inteiro.\n`'legacyNumber'` — campo numérico legado."
|
|
1458
|
+
},
|
|
1459
|
+
"numberLocaleOptions": {
|
|
1460
|
+
"type": "NumberLocaleOptions",
|
|
1461
|
+
"required": false,
|
|
1462
|
+
"description": "Opções de localização numérica."
|
|
1463
|
+
},
|
|
1464
|
+
"browserAutocomplete": {
|
|
1465
|
+
"type": "boolean",
|
|
1466
|
+
"required": false,
|
|
1467
|
+
"description": "Controla o autocomplete nativo do browser."
|
|
1468
|
+
},
|
|
1469
|
+
"precision": {
|
|
1470
|
+
"type": "Function | number",
|
|
1471
|
+
"required": false,
|
|
1472
|
+
"description": "Número total de dígitos aceitos. Pode ser função para controle dinâmico."
|
|
1473
|
+
},
|
|
1474
|
+
"scale": {
|
|
1475
|
+
"type": "(() => number) | number",
|
|
1476
|
+
"required": false,
|
|
1477
|
+
"description": "Número de casas decimais. Pode ser função para controle dinâmico."
|
|
1478
|
+
},
|
|
1479
|
+
"alignTo": {
|
|
1480
|
+
"type": "NumberAlignmentOption",
|
|
1481
|
+
"required": false,
|
|
1482
|
+
"description": "Alinhamento do texto no campo."
|
|
1483
|
+
},
|
|
1484
|
+
"mask": {
|
|
1485
|
+
"type": "stringFn | string",
|
|
1486
|
+
"required": false,
|
|
1487
|
+
"description": "Máscara de entrada. Pode ser string estática ou função."
|
|
1488
|
+
},
|
|
1489
|
+
"leftAddon": {
|
|
1490
|
+
"type": "AddonConfig",
|
|
1491
|
+
"required": false,
|
|
1492
|
+
"description": "Addon exibido à esquerda do campo."
|
|
1493
|
+
},
|
|
1494
|
+
"rightAddon": {
|
|
1495
|
+
"type": "AddonConfig",
|
|
1496
|
+
"required": false,
|
|
1497
|
+
"description": "Addon exibido à direita do campo."
|
|
1498
|
+
},
|
|
1499
|
+
"localizedNumber": {
|
|
1500
|
+
"type": "boolean",
|
|
1501
|
+
"required": false,
|
|
1502
|
+
"description": "Quando `true`, usa o componente de número localizado."
|
|
1503
|
+
},
|
|
1504
|
+
"onBlur": {
|
|
1505
|
+
"type": "(event: Event) => void",
|
|
1506
|
+
"required": false,
|
|
1507
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
1508
|
+
},
|
|
1509
|
+
"onFocus": {
|
|
1510
|
+
"type": "(event: Event) => void",
|
|
1511
|
+
"required": false,
|
|
1512
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
1513
|
+
},
|
|
1514
|
+
"onComplete": {
|
|
1515
|
+
"type": "(event: Event) => void",
|
|
1516
|
+
"required": false,
|
|
1517
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
1518
|
+
},
|
|
1519
|
+
"onInput": {
|
|
1520
|
+
"type": "(event: Event) => void",
|
|
1521
|
+
"required": false,
|
|
1522
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
},
|
|
1526
|
+
"password": {
|
|
1527
|
+
"interface": "PasswordFieldConfig",
|
|
1528
|
+
"sourceFile": "password-field.ts",
|
|
1529
|
+
"description": "Configuração para campo de senha com indicador de força.\n\nRenderiza um input de senha com:\n- Togglear a visibilidade da senha (mostrar/ocultar)\n- Indicador visual de força da senha (fraca/média/forte)\n- Configuração customizada das regras de validação da força",
|
|
1530
|
+
"ownProperties": {
|
|
1531
|
+
"type": {
|
|
1532
|
+
"type": "'password'",
|
|
1533
|
+
"required": true,
|
|
1534
|
+
"description": "Tipo do campo: sempre `'password'`."
|
|
1535
|
+
},
|
|
1536
|
+
"inputType": {
|
|
1537
|
+
"type": "string",
|
|
1538
|
+
"required": false,
|
|
1539
|
+
"description": "Tipo HTML do input."
|
|
1540
|
+
},
|
|
1541
|
+
"keyFilter": {
|
|
1542
|
+
"type": "any",
|
|
1543
|
+
"required": false,
|
|
1544
|
+
"description": "Filtro de teclas aceitas. Aceita regex, string ou qualquer valor aceito pelo componente."
|
|
1545
|
+
},
|
|
1546
|
+
"maxLength": {
|
|
1547
|
+
"type": "string | number",
|
|
1548
|
+
"required": false,
|
|
1549
|
+
"description": "Número máximo de caracteres permitidos."
|
|
1550
|
+
},
|
|
1551
|
+
"passwordStrength": {
|
|
1552
|
+
"type": "boolean",
|
|
1553
|
+
"required": true,
|
|
1554
|
+
"description": "Quando `true`, exibe a barra de força da senha abaixo do campo.\nRequer `passwordStrengthOptions` para personalizar as regras de avaliação."
|
|
1555
|
+
},
|
|
1556
|
+
"passwordStrengthOptions": {
|
|
1557
|
+
"type": "PasswordStrengthOptions",
|
|
1558
|
+
"required": false,
|
|
1559
|
+
"description": "Opções de configuração da barra de força da senha.\nObrigatório quando `passwordStrength: true`."
|
|
1560
|
+
},
|
|
1561
|
+
"showToggle": {
|
|
1562
|
+
"type": "boolean",
|
|
1563
|
+
"required": true,
|
|
1564
|
+
"description": "Quando `true`, exibe o botão de alternar visibilidade da senha (olho/olho fechado)."
|
|
1565
|
+
},
|
|
1566
|
+
"style": {
|
|
1567
|
+
"type": "{\n [klass: string]: any;\n}",
|
|
1568
|
+
"required": false,
|
|
1569
|
+
"description": "Estilos CSS inline aplicados ao elemento de input."
|
|
1570
|
+
},
|
|
1571
|
+
"onBlur": {
|
|
1572
|
+
"type": "(event: FocusEvent) => void",
|
|
1573
|
+
"required": false,
|
|
1574
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
1575
|
+
},
|
|
1576
|
+
"onFocus": {
|
|
1577
|
+
"type": "(event: FocusEvent) => void",
|
|
1578
|
+
"required": false,
|
|
1579
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
1580
|
+
},
|
|
1581
|
+
"onComplete": {
|
|
1582
|
+
"type": "(event: FocusEvent) => void",
|
|
1583
|
+
"required": false,
|
|
1584
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
1585
|
+
},
|
|
1586
|
+
"onInput": {
|
|
1587
|
+
"type": "(event: Event) => void",
|
|
1588
|
+
"required": false,
|
|
1589
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
},
|
|
1593
|
+
"profilePicture": {
|
|
1594
|
+
"interface": "ProfilePictureConfig",
|
|
1595
|
+
"sourceFile": "profile-picture.ts",
|
|
1596
|
+
"description": "Configuração para campo de foto de perfil com recorte.\n\nExibe uma área para upload e recorte de imagem de perfil.\nSuporta pré-visualização, recorte interativo (cropper), validação de tipo e tamanho,\nconfirmação de remoção e labels customizadas para todas as ações.",
|
|
1597
|
+
"ownProperties": {
|
|
1598
|
+
"type": {
|
|
1599
|
+
"type": "'profilePicture'",
|
|
1600
|
+
"required": true,
|
|
1601
|
+
"description": "Tipo do campo: sempre `'profilePicture'`."
|
|
1602
|
+
},
|
|
1603
|
+
"simpleTitle": {
|
|
1604
|
+
"type": "string",
|
|
1605
|
+
"required": true,
|
|
1606
|
+
"description": "Título exibido no modo simples (sem imagem carregada)."
|
|
1607
|
+
},
|
|
1608
|
+
"actionTitle": {
|
|
1609
|
+
"type": "string",
|
|
1610
|
+
"required": true,
|
|
1611
|
+
"description": "Título exibido quando o painel de ações está ativo (com imagem carregada)."
|
|
1612
|
+
},
|
|
1613
|
+
"subtitle": {
|
|
1614
|
+
"type": "string",
|
|
1615
|
+
"required": true,
|
|
1616
|
+
"description": "Subtexto descritivo exibido abaixo do título."
|
|
1617
|
+
},
|
|
1618
|
+
"aspectRatio": {
|
|
1619
|
+
"type": "number",
|
|
1620
|
+
"required": true,
|
|
1621
|
+
"description": "Proporção de aspecto da área de recorte (largura / altura)."
|
|
1622
|
+
},
|
|
1623
|
+
"cropperLabelsConfig": {
|
|
1624
|
+
"type": "CropperLabelsConfig",
|
|
1625
|
+
"required": false,
|
|
1626
|
+
"description": "Labels dos botões exibidos no diálogo do cropper.\nImportado de `@seniorsistemas/angular-components/profile-picture-picker`."
|
|
1627
|
+
},
|
|
1628
|
+
"removeButtonLabel": {
|
|
1629
|
+
"type": "string",
|
|
1630
|
+
"required": false,
|
|
1631
|
+
"description": "Label do botão de remover a imagem atual."
|
|
1632
|
+
},
|
|
1633
|
+
"changeButtonLabel": {
|
|
1634
|
+
"type": "string",
|
|
1635
|
+
"required": false,
|
|
1636
|
+
"description": "Label do botão de alterar a imagem atual."
|
|
1637
|
+
},
|
|
1638
|
+
"confirmationTexts": {
|
|
1639
|
+
"type": "ConfirmationTexts",
|
|
1640
|
+
"required": false,
|
|
1641
|
+
"description": "Textos de confirmação exibidos no diálogo de remoção da imagem."
|
|
1642
|
+
},
|
|
1643
|
+
"maxFileSize": {
|
|
1644
|
+
"type": "number",
|
|
1645
|
+
"required": false,
|
|
1646
|
+
"description": "Tamanho máximo do arquivo aceito em bytes."
|
|
1647
|
+
},
|
|
1648
|
+
"accept": {
|
|
1649
|
+
"type": "string",
|
|
1650
|
+
"required": false,
|
|
1651
|
+
"description": "Tipos MIME aceitos."
|
|
1652
|
+
},
|
|
1653
|
+
"supportedExtensions": {
|
|
1654
|
+
"type": "string[]",
|
|
1655
|
+
"required": false,
|
|
1656
|
+
"description": "Extensões de arquivo aceitas (com ponto)."
|
|
1657
|
+
},
|
|
1658
|
+
"onChangeImage": {
|
|
1659
|
+
"type": "(event: string | ProfilePicturePickerData) => void",
|
|
1660
|
+
"required": false,
|
|
1661
|
+
"description": "Callback chamado quando a imagem é alterada após o recorte.\nRecebe a imagem em base64 ou objeto `ProfilePicturePickerData`."
|
|
1662
|
+
},
|
|
1663
|
+
"onRemovedImage": {
|
|
1664
|
+
"type": "() => void",
|
|
1665
|
+
"required": false,
|
|
1666
|
+
"description": "Callback chamado quando a imagem é removida pelo usuário."
|
|
1667
|
+
},
|
|
1668
|
+
"onInvalidFile": {
|
|
1669
|
+
"type": "(event: FileValidationErrors) => void",
|
|
1670
|
+
"required": false,
|
|
1671
|
+
"description": "Callback chamado quando o arquivo selecionado não passa na validação.\nRecebe os erros de validação ocorridos (ex: tamanho, extensão)."
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
},
|
|
1675
|
+
"radioButton": {
|
|
1676
|
+
"interface": "RadioButtonFieldConfig",
|
|
1677
|
+
"sourceFile": "radio-button-field.ts",
|
|
1678
|
+
"description": "Configuração para campo de seleção única com radio buttons.\n\nExibe um grupo de radio buttons onde o usuário pode selecionar exatamente uma opção.\nA lista de opções é definida estaticamente via `options`.\n\nUse quando o número de opções é pequeno (até ~5 itens) e todas devem estar visíveis.\nPara listas longas, prefira `type: 'enum'` com dropdown.",
|
|
1679
|
+
"ownProperties": {
|
|
1680
|
+
"type": {
|
|
1681
|
+
"type": "'radioButton'",
|
|
1682
|
+
"required": true,
|
|
1683
|
+
"description": "Tipo do campo: sempre `'radioButton'`."
|
|
1684
|
+
},
|
|
1685
|
+
"verticalAlignment": {
|
|
1686
|
+
"type": "boolean",
|
|
1687
|
+
"required": false,
|
|
1688
|
+
"description": "Quando `true`, os radio buttons são exibidos verticalmente (empilhados).\nPor padrão, são exibidos horizontalmente."
|
|
1689
|
+
},
|
|
1690
|
+
"clearLabel": {
|
|
1691
|
+
"type": "string",
|
|
1692
|
+
"required": false,
|
|
1693
|
+
"description": "Label do botão de limpar a seleção. Exibido quando `showClear: true`."
|
|
1694
|
+
},
|
|
1695
|
+
"options": {
|
|
1696
|
+
"type": "RationButtonOption[]",
|
|
1697
|
+
"required": true,
|
|
1698
|
+
"description": "Lista de opções disponíveis para seleção. Obrigatório."
|
|
1699
|
+
},
|
|
1700
|
+
"onBlur": {
|
|
1701
|
+
"type": "(event: Event) => void",
|
|
1702
|
+
"required": false,
|
|
1703
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
1704
|
+
},
|
|
1705
|
+
"onFocus": {
|
|
1706
|
+
"type": "(event: FocusEvent) => void",
|
|
1707
|
+
"required": false,
|
|
1708
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
1709
|
+
},
|
|
1710
|
+
"onClick": {
|
|
1711
|
+
"type": "(event: any) => void",
|
|
1712
|
+
"required": false,
|
|
1713
|
+
"description": "Callback chamado quando o usuário clica em uma opção."
|
|
1714
|
+
},
|
|
1715
|
+
"showClear": {
|
|
1716
|
+
"type": "boolean",
|
|
1717
|
+
"required": false,
|
|
1718
|
+
"description": "Quando `true`, exibe um botão para limpar a seleção atual.\nO texto do botão é definido em `clearLabel`."
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
"enum": {
|
|
1723
|
+
"interface": "SelectFieldConfig",
|
|
1724
|
+
"sourceFile": "select-field.ts",
|
|
1725
|
+
"description": "Configuração para campo de seleção (dropdown/select).\n\nExibe um dropdown com lista de opções estáticas ou dinâmicas.\nSuporta seleção múltipla, filtro de pesquisa, opções editadas, grupos hierárquicos\ne badges coloridos por opção.\n\nPara listas grandes com busca no servidor, prefira `type: 'autocomplete'` ou `type: 'lookup'`.",
|
|
1726
|
+
"ownProperties": {
|
|
1727
|
+
"type": {
|
|
1728
|
+
"type": "'enum'",
|
|
1729
|
+
"required": true,
|
|
1730
|
+
"description": "Tipo do campo: sempre `'enum'`."
|
|
1731
|
+
},
|
|
1732
|
+
"optionLabel": {
|
|
1733
|
+
"type": "string",
|
|
1734
|
+
"required": false,
|
|
1735
|
+
"description": "Nome da propriedade do objeto de opção usada como label visível."
|
|
1736
|
+
},
|
|
1737
|
+
"optionValue": {
|
|
1738
|
+
"type": "string",
|
|
1739
|
+
"required": false,
|
|
1740
|
+
"description": "Nome da propriedade do objeto de opção usada como valor armazenado."
|
|
1741
|
+
},
|
|
1742
|
+
"dataKey": {
|
|
1743
|
+
"type": "string",
|
|
1744
|
+
"required": false,
|
|
1745
|
+
"description": "Chave única identificadora de cada opção. Usada para rastrear seleção corretamente."
|
|
1746
|
+
},
|
|
1747
|
+
"autoDisplayFirst": {
|
|
1748
|
+
"type": "boolean",
|
|
1749
|
+
"required": false,
|
|
1750
|
+
"description": "Quando `true`, a primeira opção da lista é selecionada automaticamente."
|
|
1751
|
+
},
|
|
1752
|
+
"options": {
|
|
1753
|
+
"type": "selectOptionFn | SelectOption[]",
|
|
1754
|
+
"required": true,
|
|
1755
|
+
"description": "Lista de opções disponíveis. Pode ser um array estático ou uma função que retorna o array.\nCada opção pode ter `label`, `value`, `items` (subgrupo) e `badge`."
|
|
1756
|
+
},
|
|
1757
|
+
"multiple": {
|
|
1758
|
+
"type": "boolean",
|
|
1759
|
+
"required": false,
|
|
1760
|
+
"description": "Quando `true`, permite selecionar múltiplas opções.\nO valor do campo será um array."
|
|
1761
|
+
},
|
|
1762
|
+
"multipleSelectedLabel": {
|
|
1763
|
+
"type": "string",
|
|
1764
|
+
"required": false,
|
|
1765
|
+
"description": "Label exibida no campo quando múltiplas opções forem selecionadas."
|
|
1766
|
+
},
|
|
1767
|
+
"onClick": {
|
|
1768
|
+
"type": "(event: any) => void",
|
|
1769
|
+
"required": false,
|
|
1770
|
+
"description": "Callback chamado quando o usuário clica no dropdown."
|
|
1771
|
+
},
|
|
1772
|
+
"onChange": {
|
|
1773
|
+
"type": "(event: any) => void",
|
|
1774
|
+
"required": false,
|
|
1775
|
+
"description": "Callback chamado quando o valor selecionado muda."
|
|
1776
|
+
},
|
|
1777
|
+
"emptyMessage": {
|
|
1778
|
+
"type": "string",
|
|
1779
|
+
"required": false,
|
|
1780
|
+
"description": "Mensagem exibida quando a lista está vazia ou a pesquisa não retorna resultados."
|
|
1781
|
+
},
|
|
1782
|
+
"editable": {
|
|
1783
|
+
"type": "boolean",
|
|
1784
|
+
"required": false,
|
|
1785
|
+
"description": "Quando `true`, o campo se torna um combobox editável, permitindo digitar um valor livre\nalém das opções da lista."
|
|
1786
|
+
},
|
|
1787
|
+
"filter": {
|
|
1788
|
+
"type": "boolean",
|
|
1789
|
+
"required": false,
|
|
1790
|
+
"description": "Quando `true`, exibe um campo de pesquisa interno no dropdown para filtrar as opções."
|
|
1791
|
+
},
|
|
1792
|
+
"group": {
|
|
1793
|
+
"type": "boolean",
|
|
1794
|
+
"required": false,
|
|
1795
|
+
"description": "Quando `true`, agrupa as opções por categoria usando a propriedade `items` de cada opção."
|
|
1796
|
+
},
|
|
1797
|
+
"showClear": {
|
|
1798
|
+
"type": "boolean",
|
|
1799
|
+
"required": false,
|
|
1800
|
+
"description": "Quando `true`, exibe um botão de limpar a seleção (X) no campo."
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
},
|
|
1804
|
+
"slider": {
|
|
1805
|
+
"interface": "SliderFieldConfig",
|
|
1806
|
+
"sourceFile": "slider-field.ts",
|
|
1807
|
+
"description": "Configuração para campo de controle deslizante (slider).\n\nExibe um slider interativo para seleção de valor numérico dentro de um intervalo.\nSuporta modo de intervalo (range) com dois pontos de seleção, orientação\nhorizontal/vertical, step configurado e exibição de prefixo/sufixo.",
|
|
1808
|
+
"ownProperties": {
|
|
1809
|
+
"type": {
|
|
1810
|
+
"type": "'slider'",
|
|
1811
|
+
"required": true,
|
|
1812
|
+
"description": "Tipo do campo: sempre `'slider'`."
|
|
1813
|
+
},
|
|
1814
|
+
"onChange": {
|
|
1815
|
+
"type": "(event: any) => void",
|
|
1816
|
+
"required": false,
|
|
1817
|
+
"description": "Callback chamado enquanto o usuário arrastar o slider (alteração contínua)."
|
|
1818
|
+
},
|
|
1819
|
+
"onSlideEnd": {
|
|
1820
|
+
"type": "(event: any) => void",
|
|
1821
|
+
"required": false,
|
|
1822
|
+
"description": "Callback chamado quando o usuário solta o slider (fim do arraste)."
|
|
1823
|
+
},
|
|
1824
|
+
"range": {
|
|
1825
|
+
"type": "boolean",
|
|
1826
|
+
"required": false,
|
|
1827
|
+
"description": "Quando `true`, exibe dois pontos de seleção para definir um intervalo (min-max).\nO valor do campo será um array `[min, max]` em vez de um número único."
|
|
1828
|
+
},
|
|
1829
|
+
"min": {
|
|
1830
|
+
"type": "number",
|
|
1831
|
+
"required": false,
|
|
1832
|
+
"description": "Valor mínimo do slider."
|
|
1833
|
+
},
|
|
1834
|
+
"max": {
|
|
1835
|
+
"type": "number",
|
|
1836
|
+
"required": false,
|
|
1837
|
+
"description": "Valor máximo do slider."
|
|
1838
|
+
},
|
|
1839
|
+
"step": {
|
|
1840
|
+
"type": "number",
|
|
1841
|
+
"required": false,
|
|
1842
|
+
"description": "Incremento de cada passo ao mover o slider."
|
|
1843
|
+
},
|
|
1844
|
+
"orientation": {
|
|
1845
|
+
"type": "'horizontal' | 'vertical'",
|
|
1846
|
+
"required": true,
|
|
1847
|
+
"description": "Orientação do slider.\n`'horizontal'` — slider na horizontal (padrão).\n`'vertical'` — slider na vertical."
|
|
1848
|
+
},
|
|
1849
|
+
"disabled": {
|
|
1850
|
+
"type": "boolean",
|
|
1851
|
+
"required": false,
|
|
1852
|
+
"description": "Quando `true`, o slider fica desabilitado (não interativo e sem alteração de valor)."
|
|
1853
|
+
},
|
|
1854
|
+
"prefix": {
|
|
1855
|
+
"type": "string",
|
|
1856
|
+
"required": false,
|
|
1857
|
+
"description": "Texto exibido antes do valor do slider (ex: `'R$'`, `'>'`)."
|
|
1858
|
+
},
|
|
1859
|
+
"suffix": {
|
|
1860
|
+
"type": "string",
|
|
1861
|
+
"required": false,
|
|
1862
|
+
"description": "Texto exibido após o valor do slider (ex: `'km'`, `'%'`)."
|
|
1863
|
+
},
|
|
1864
|
+
"rangeSeparator": {
|
|
1865
|
+
"type": "string",
|
|
1866
|
+
"required": false,
|
|
1867
|
+
"description": "Texto exibido entre os dois valores quando `range: true`."
|
|
1868
|
+
},
|
|
1869
|
+
"defaultValue": {
|
|
1870
|
+
"type": "any",
|
|
1871
|
+
"required": false,
|
|
1872
|
+
"description": "Valor inicial do slider ao renderizar o formulário.\nPara modo range, passe um array `[min, max]`."
|
|
1873
|
+
}
|
|
1874
|
+
}
|
|
1875
|
+
},
|
|
1876
|
+
"starRating": {
|
|
1877
|
+
"interface": "StarRatingFieldConfig",
|
|
1878
|
+
"sourceFile": "star-rating-field.ts",
|
|
1879
|
+
"description": "Configuração para campo de avaliação com estrelas.\n\nRenderiza um componente de rating visual com estrelas clicáveis.\nO valor do campo é um número inteiro correspondente à estrela selecionada.",
|
|
1880
|
+
"ownProperties": {
|
|
1881
|
+
"type": {
|
|
1882
|
+
"type": "'starRating'",
|
|
1883
|
+
"required": true,
|
|
1884
|
+
"description": "Tipo do campo: sempre `'starRating'`."
|
|
1885
|
+
},
|
|
1886
|
+
"starRange": {
|
|
1887
|
+
"type": "number",
|
|
1888
|
+
"required": true,
|
|
1889
|
+
"description": "Número total de estrelas exibidas."
|
|
1890
|
+
},
|
|
1891
|
+
"disabled": {
|
|
1892
|
+
"type": "boolean | booleanFn",
|
|
1893
|
+
"required": true,
|
|
1894
|
+
"description": "Quando `true` ou função que retorna `true`, o componente fica desabilitado (somente leitura).\nUse função para controle dinâmico baseado no estado do formulário."
|
|
1895
|
+
},
|
|
1896
|
+
"justifyContent": {
|
|
1897
|
+
"type": "JustifyTypes",
|
|
1898
|
+
"required": false,
|
|
1899
|
+
"description": "Alinhamento horizontal das estrelas dentro da célula do formulário.\nImportado de `@seniorsistemas/angular-components/star-rating`."
|
|
1900
|
+
},
|
|
1901
|
+
"valueChange": {
|
|
1902
|
+
"type": "(star: number) => any",
|
|
1903
|
+
"required": false,
|
|
1904
|
+
"description": "Callback chamado quando a estrela selecionada muda.\nRecebe o valor numérico da estrela clicada."
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
},
|
|
1908
|
+
"textArea": {
|
|
1909
|
+
"interface": "TextAreaFieldConfig",
|
|
1910
|
+
"sourceFile": "text-area-field.ts",
|
|
1911
|
+
"description": "Configuração para campo de área de texto multilinha.\n\nExibe um textarea com suporte a reconhecimento de voz, controle de linhas/colunas,\nmodo somente-leitura e limite de caracteres.\n\nPara funcionalidades de geração de texto por IA, use `type: 'contentGenerator'`.",
|
|
1912
|
+
"ownProperties": {
|
|
1913
|
+
"type": {
|
|
1914
|
+
"type": "'textArea'",
|
|
1915
|
+
"required": true,
|
|
1916
|
+
"description": "Tipo do campo: sempre `'textArea'`."
|
|
1917
|
+
},
|
|
1918
|
+
"cols": {
|
|
1919
|
+
"type": "number",
|
|
1920
|
+
"required": false,
|
|
1921
|
+
"description": "Número de colunas de texto do textarea (largura)."
|
|
1922
|
+
},
|
|
1923
|
+
"rows": {
|
|
1924
|
+
"type": "number",
|
|
1925
|
+
"required": false,
|
|
1926
|
+
"description": "Número de linhas visíveis do textarea (altura inicial)."
|
|
1927
|
+
},
|
|
1928
|
+
"keyFilter": {
|
|
1929
|
+
"type": "any",
|
|
1930
|
+
"required": false,
|
|
1931
|
+
"description": "Filtro de teclas aceitas no campo. Aceita regex ou string."
|
|
1932
|
+
},
|
|
1933
|
+
"style": {
|
|
1934
|
+
"type": "Partial<CSSStyleDeclaration>",
|
|
1935
|
+
"required": false,
|
|
1936
|
+
"description": "Estilos CSS inline aplicados diretamente no elemento textarea."
|
|
1937
|
+
},
|
|
1938
|
+
"readonly": {
|
|
1939
|
+
"type": "() => boolean",
|
|
1940
|
+
"required": false,
|
|
1941
|
+
"description": "Função que retorna `true` quando o campo deve estar em modo somente-leitura."
|
|
1942
|
+
},
|
|
1943
|
+
"speechRecognition": {
|
|
1944
|
+
"type": "boolean",
|
|
1945
|
+
"required": false,
|
|
1946
|
+
"description": "Quando `true`, exibe o botão de reconhecimento de voz (speech-to-text)."
|
|
1947
|
+
},
|
|
1948
|
+
"keepContext": {
|
|
1949
|
+
"type": "boolean",
|
|
1950
|
+
"required": false,
|
|
1951
|
+
"description": "Quando `true`, mantém o contexto das interações anteriores de voz/IA."
|
|
1952
|
+
},
|
|
1953
|
+
"speechRecognitionPlaceholder": {
|
|
1954
|
+
"type": "string",
|
|
1955
|
+
"required": false,
|
|
1956
|
+
"description": "Texto de placeholder exibido na área de reconhecimento de voz enquanto o microfone está ativo."
|
|
1957
|
+
},
|
|
1958
|
+
"maxLength": {
|
|
1959
|
+
"type": "number",
|
|
1960
|
+
"required": false,
|
|
1961
|
+
"description": "Número máximo de caracteres permitidos no campo."
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1964
|
+
},
|
|
1965
|
+
"string": {
|
|
1966
|
+
"interface": "TextFieldConfig",
|
|
1967
|
+
"sourceFile": "text-field.ts",
|
|
1968
|
+
"description": "Configuração para campos de texto simples.\n\nUse `type: 'string'` para texto livre geral.\nUse `type: 'binary'` para campos que armazenam dados binários como texto (ex: base64).\n\nSuporta máscaras de entrada, addons laterais, filtro de caracteres e eventos do input.",
|
|
1969
|
+
"ownProperties": {
|
|
1970
|
+
"type": {
|
|
1971
|
+
"type": "'string' | 'binary'",
|
|
1972
|
+
"required": true,
|
|
1973
|
+
"description": "`'string'` — campo de texto livre padrão.\n`'binary'` — campo de texto tratado como dado binário (ex: base64 encoding)."
|
|
1974
|
+
},
|
|
1975
|
+
"mask": {
|
|
1976
|
+
"type": "stringFn | string",
|
|
1977
|
+
"required": false,
|
|
1978
|
+
"description": "Máscara de entrada aplicada ao campo. Pode ser uma string fixa ou uma função que retorna a máscara dinamicamente.\nExemplo de máscara: `'999.999.999-99'` (CPF), `'(99) 99999-9999'` (telefone).\nQuando definida, `leftAddon` e `rightAddon` não funcionam."
|
|
1979
|
+
},
|
|
1980
|
+
"readonly": {
|
|
1981
|
+
"type": "() => boolean",
|
|
1982
|
+
"required": false,
|
|
1983
|
+
"description": "Função que retorna `true` quando o campo deve estar em modo somente-leitura.\nUse uma função para controle dinâmico baseado no estado do formulário."
|
|
1984
|
+
},
|
|
1985
|
+
"characterPattern": {
|
|
1986
|
+
"type": "stringFn | string",
|
|
1987
|
+
"required": false,
|
|
1988
|
+
"description": "Padrão regex para filtrar os caracteres permitidos na digitação.\nPode ser uma string de pattern ou uma função que retorna o padrão.\nExemplo: `'[a-zA-Z]'` permite apenas letras."
|
|
1989
|
+
},
|
|
1990
|
+
"unmask": {
|
|
1991
|
+
"type": "booleanFn | boolean",
|
|
1992
|
+
"required": false,
|
|
1993
|
+
"description": "Quando `true`, remove os caracteres da máscara do valor enviado ao modelo.\nExemplo: com máscara CPF `'999.999.999-99'`, o valor armazenado será apenas os dígitos."
|
|
1994
|
+
},
|
|
1995
|
+
"inputType": {
|
|
1996
|
+
"type": "string",
|
|
1997
|
+
"required": false,
|
|
1998
|
+
"description": "Tipo HTML do input (ex: `'text'`, `'email'`, `'tel'`, `'url'`).\nAfeta o teclado exibido em dispositivos móveis e a validação nativa do browser."
|
|
1999
|
+
},
|
|
2000
|
+
"keyFilter": {
|
|
2001
|
+
"type": "any",
|
|
2002
|
+
"required": false,
|
|
2003
|
+
"description": "Filtro de teclas aceitas no campo. Aceita uma expressão regular ou string.\nExemplo: `/[0-9]/` para aceitar apenas números."
|
|
2004
|
+
},
|
|
2005
|
+
"leftAddon": {
|
|
2006
|
+
"type": "AddonConfig",
|
|
2007
|
+
"required": false,
|
|
2008
|
+
"description": "Addon exibido à esquerda do input (ex: ícone, texto, botão).\n**Não funciona quando `mask` está definida.**"
|
|
2009
|
+
},
|
|
2010
|
+
"rightAddon": {
|
|
2011
|
+
"type": "AddonConfig",
|
|
2012
|
+
"required": false,
|
|
2013
|
+
"description": "Addon exibido à direita do input (ex: ícone, texto, botão).\n**Não funciona quando `mask` está definida.**"
|
|
2014
|
+
},
|
|
2015
|
+
"maxLength": {
|
|
2016
|
+
"type": "string | number",
|
|
2017
|
+
"required": false,
|
|
2018
|
+
"description": "Número máximo de caracteres permitidos no campo."
|
|
2019
|
+
},
|
|
2020
|
+
"browserAutocomplete": {
|
|
2021
|
+
"type": "boolean",
|
|
2022
|
+
"required": false,
|
|
2023
|
+
"description": "Controla o autocomplete nativo do browser.\n`true` ativa o autocomplete; `false` desativa."
|
|
2024
|
+
},
|
|
2025
|
+
"style": {
|
|
2026
|
+
"type": "{\n [klass: string]: any;\n}",
|
|
2027
|
+
"required": false,
|
|
2028
|
+
"description": "Estilos CSS inline aplicados diretamente no elemento de input."
|
|
2029
|
+
},
|
|
2030
|
+
"onBlur": {
|
|
2031
|
+
"type": "(event: Event) => void",
|
|
2032
|
+
"required": false,
|
|
2033
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
2034
|
+
},
|
|
2035
|
+
"onFocus": {
|
|
2036
|
+
"type": "(event: FocusEvent) => void",
|
|
2037
|
+
"required": false,
|
|
2038
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
2039
|
+
},
|
|
2040
|
+
"onComplete": {
|
|
2041
|
+
"type": "(event: FocusEvent) => void",
|
|
2042
|
+
"required": false,
|
|
2043
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
2044
|
+
},
|
|
2045
|
+
"onInput": {
|
|
2046
|
+
"type": "(event: FocusEvent) => void",
|
|
2047
|
+
"required": false,
|
|
2048
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
2052
|
+
"binary": {
|
|
2053
|
+
"interface": "TextFieldConfig",
|
|
2054
|
+
"sourceFile": "text-field.ts",
|
|
2055
|
+
"description": "Configuração para campos de texto simples.\n\nUse `type: 'string'` para texto livre geral.\nUse `type: 'binary'` para campos que armazenam dados binários como texto (ex: base64).\n\nSuporta máscaras de entrada, addons laterais, filtro de caracteres e eventos do input.",
|
|
2056
|
+
"ownProperties": {
|
|
2057
|
+
"type": {
|
|
2058
|
+
"type": "'string' | 'binary'",
|
|
2059
|
+
"required": true,
|
|
2060
|
+
"description": "`'string'` — campo de texto livre padrão.\n`'binary'` — campo de texto tratado como dado binário (ex: base64 encoding)."
|
|
2061
|
+
},
|
|
2062
|
+
"mask": {
|
|
2063
|
+
"type": "stringFn | string",
|
|
2064
|
+
"required": false,
|
|
2065
|
+
"description": "Máscara de entrada aplicada ao campo. Pode ser uma string fixa ou uma função que retorna a máscara dinamicamente.\nExemplo de máscara: `'999.999.999-99'` (CPF), `'(99) 99999-9999'` (telefone).\nQuando definida, `leftAddon` e `rightAddon` não funcionam."
|
|
2066
|
+
},
|
|
2067
|
+
"readonly": {
|
|
2068
|
+
"type": "() => boolean",
|
|
2069
|
+
"required": false,
|
|
2070
|
+
"description": "Função que retorna `true` quando o campo deve estar em modo somente-leitura.\nUse uma função para controle dinâmico baseado no estado do formulário."
|
|
2071
|
+
},
|
|
2072
|
+
"characterPattern": {
|
|
2073
|
+
"type": "stringFn | string",
|
|
2074
|
+
"required": false,
|
|
2075
|
+
"description": "Padrão regex para filtrar os caracteres permitidos na digitação.\nPode ser uma string de pattern ou uma função que retorna o padrão.\nExemplo: `'[a-zA-Z]'` permite apenas letras."
|
|
2076
|
+
},
|
|
2077
|
+
"unmask": {
|
|
2078
|
+
"type": "booleanFn | boolean",
|
|
2079
|
+
"required": false,
|
|
2080
|
+
"description": "Quando `true`, remove os caracteres da máscara do valor enviado ao modelo.\nExemplo: com máscara CPF `'999.999.999-99'`, o valor armazenado será apenas os dígitos."
|
|
2081
|
+
},
|
|
2082
|
+
"inputType": {
|
|
2083
|
+
"type": "string",
|
|
2084
|
+
"required": false,
|
|
2085
|
+
"description": "Tipo HTML do input (ex: `'text'`, `'email'`, `'tel'`, `'url'`).\nAfeta o teclado exibido em dispositivos móveis e a validação nativa do browser."
|
|
2086
|
+
},
|
|
2087
|
+
"keyFilter": {
|
|
2088
|
+
"type": "any",
|
|
2089
|
+
"required": false,
|
|
2090
|
+
"description": "Filtro de teclas aceitas no campo. Aceita uma expressão regular ou string.\nExemplo: `/[0-9]/` para aceitar apenas números."
|
|
2091
|
+
},
|
|
2092
|
+
"leftAddon": {
|
|
2093
|
+
"type": "AddonConfig",
|
|
2094
|
+
"required": false,
|
|
2095
|
+
"description": "Addon exibido à esquerda do input (ex: ícone, texto, botão).\n**Não funciona quando `mask` está definida.**"
|
|
2096
|
+
},
|
|
2097
|
+
"rightAddon": {
|
|
2098
|
+
"type": "AddonConfig",
|
|
2099
|
+
"required": false,
|
|
2100
|
+
"description": "Addon exibido à direita do input (ex: ícone, texto, botão).\n**Não funciona quando `mask` está definida.**"
|
|
2101
|
+
},
|
|
2102
|
+
"maxLength": {
|
|
2103
|
+
"type": "string | number",
|
|
2104
|
+
"required": false,
|
|
2105
|
+
"description": "Número máximo de caracteres permitidos no campo."
|
|
2106
|
+
},
|
|
2107
|
+
"browserAutocomplete": {
|
|
2108
|
+
"type": "boolean",
|
|
2109
|
+
"required": false,
|
|
2110
|
+
"description": "Controla o autocomplete nativo do browser.\n`true` ativa o autocomplete; `false` desativa."
|
|
2111
|
+
},
|
|
2112
|
+
"style": {
|
|
2113
|
+
"type": "{\n [klass: string]: any;\n}",
|
|
2114
|
+
"required": false,
|
|
2115
|
+
"description": "Estilos CSS inline aplicados diretamente no elemento de input."
|
|
2116
|
+
},
|
|
2117
|
+
"onBlur": {
|
|
2118
|
+
"type": "(event: Event) => void",
|
|
2119
|
+
"required": false,
|
|
2120
|
+
"description": "Callback chamado quando o campo perde o foco."
|
|
2121
|
+
},
|
|
2122
|
+
"onFocus": {
|
|
2123
|
+
"type": "(event: FocusEvent) => void",
|
|
2124
|
+
"required": false,
|
|
2125
|
+
"description": "Callback chamado quando o campo recebe foco."
|
|
2126
|
+
},
|
|
2127
|
+
"onComplete": {
|
|
2128
|
+
"type": "(event: FocusEvent) => void",
|
|
2129
|
+
"required": false,
|
|
2130
|
+
"description": "Callback chamado quando a máscara é completamente preenchida."
|
|
2131
|
+
},
|
|
2132
|
+
"onInput": {
|
|
2133
|
+
"type": "(event: FocusEvent) => void",
|
|
2134
|
+
"required": false,
|
|
2135
|
+
"description": "Callback chamado a cada alteração no valor do input."
|
|
2136
|
+
}
|
|
2137
|
+
}
|
|
2138
|
+
}
|
|
2139
|
+
},
|
|
2140
|
+
"structureTypes": {
|
|
2141
|
+
"fieldset": {
|
|
2142
|
+
"interface": "FieldsetConfig",
|
|
2143
|
+
"sourceFile": "fieldset.ts",
|
|
2144
|
+
"description": "Configuração para estrutura do tipo fieldset (grupo recolhível).\n\nAgrupa campos dentro de um painel que pode ser expandido ou recolhido pelo usuário.\nÚtil para separar logicamente seções opcionais ou detalhes avançados do formulário.",
|
|
2145
|
+
"ownProperties": {
|
|
2146
|
+
"type": {
|
|
2147
|
+
"type": "'fieldset'",
|
|
2148
|
+
"required": true,
|
|
2149
|
+
"description": "Tipo da estrutura: sempre `'fieldset'`."
|
|
2150
|
+
},
|
|
2151
|
+
"beforeToggle": {
|
|
2152
|
+
"type": "(event: any) => void",
|
|
2153
|
+
"required": false,
|
|
2154
|
+
"description": "Callback chamado antes de o painel ser expandido ou recolhido.\nPode ser usado para cancelar a ação ou realizar operações prévias."
|
|
2155
|
+
},
|
|
2156
|
+
"afterToggle": {
|
|
2157
|
+
"type": "(event: any) => void",
|
|
2158
|
+
"required": false,
|
|
2159
|
+
"description": "Callback chamado após o painel ser expandido ou recolhido."
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
},
|
|
2163
|
+
"row": {
|
|
2164
|
+
"interface": "RowConfig",
|
|
2165
|
+
"sourceFile": "row.ts",
|
|
2166
|
+
"description": "Configuração para estrutura do tipo linha (row).\n\nOrganiza campos lado a lado em uma linha horizontal usando grid layout.\nCada campo dentro de um `row` pode receber propriedades adicionais de `RowAdditionalFields`,\ncomo `size`, `visible`, `errorMessages`, `footer` e `bottomTemplate`.",
|
|
2167
|
+
"ownProperties": {
|
|
2168
|
+
"type": {
|
|
2169
|
+
"type": "'row'",
|
|
2170
|
+
"required": true,
|
|
2171
|
+
"description": "Tipo da estrutura: sempre `'row'`."
|
|
2172
|
+
},
|
|
2173
|
+
"fields": {
|
|
2174
|
+
"type": "RowType[]",
|
|
2175
|
+
"required": true,
|
|
2176
|
+
"description": "Lista de campos e sub-estruturas dispostos em linha.\nCada item pode ter propriedades adicionais de `RowAdditionalFields` (size, visible, footer, etc.)."
|
|
2177
|
+
},
|
|
2178
|
+
"visible": {
|
|
2179
|
+
"type": "booleanFn | boolean",
|
|
2180
|
+
"required": false,
|
|
2181
|
+
"description": "Controla a visibilidade da linha inteira.\nPode ser um booleano estático ou função reativa."
|
|
2182
|
+
}
|
|
2183
|
+
},
|
|
2184
|
+
"rowAdditionalFields": {
|
|
2185
|
+
"description": "Extra properties available on every field/structure placed inside a row (via ExpandedDynamicType / ExpandedDynamicStructure).",
|
|
2186
|
+
"properties": {
|
|
2187
|
+
"size": {
|
|
2188
|
+
"type": "FieldSizeConfig",
|
|
2189
|
+
"required": false,
|
|
2190
|
+
"description": "Tamanho (largura) deste campo dentro da linha.\nPermite definir colunas responsivas (ex: metade da linha, terço, etc.)\nusando `FieldSizeConfig` com breakpoints."
|
|
2191
|
+
},
|
|
2192
|
+
"visible": {
|
|
2193
|
+
"type": "() => boolean",
|
|
2194
|
+
"required": false,
|
|
2195
|
+
"description": "Função que retorna `true` quando o campo deve ser exibido.\nPermite ocultar/exibir o campo dinamicamente sem removê-lo da configuração."
|
|
2196
|
+
},
|
|
2197
|
+
"errorMessages": {
|
|
2198
|
+
"type": "() => {} | {}",
|
|
2199
|
+
"required": false,
|
|
2200
|
+
"description": "Função que retorna um mapa de mensagens de erro customizadas para o campo.\nA chave é o nome do validador (ex: `'required'`, `'minlength'`) e o valor é a mensagem."
|
|
2201
|
+
},
|
|
2202
|
+
"bottomTemplate": {
|
|
2203
|
+
"type": "TemplateRef<Element>",
|
|
2204
|
+
"required": false,
|
|
2205
|
+
"description": "Template Angular (`ng-template`) renderizado abaixo do campo.\nUse para adicionar conteúdo customizado abaixo do input, como dicas ou informações extras."
|
|
2206
|
+
},
|
|
2207
|
+
"footer": {
|
|
2208
|
+
"type": "{\n help?: {\n text: string;\n visible?: (options: {\n abstractControl: AbstractControl;\n formField: DynamicType;\n }) => boolean;\n };\n link?: {\n label: string;\n onClick?: (options: {\n abstractControl: AbstractControl;\n formField: DynamicType;\n }) => void;\n visible?: (options: {\n abstractControl: AbstractControl;\n formField: DynamicType;\n }) => boolean;\n };\n}",
|
|
2209
|
+
"required": false,
|
|
2210
|
+
"description": "Rodapé exibido abaixo do campo com texto de ajuda e/ou link de ação.\nPermite adicionar orientações contextuais ou atalhos diretamente associados ao campo."
|
|
2211
|
+
}
|
|
2212
|
+
}
|
|
2213
|
+
}
|
|
2214
|
+
},
|
|
2215
|
+
"section": {
|
|
2216
|
+
"interface": "SectionConfig",
|
|
2217
|
+
"sourceFile": "section.ts",
|
|
2218
|
+
"description": "Configuração para estrutura do tipo seção.\n\nÉ o container principal do DynamicForm, agrupa campos e outras estruturas.\nSuporta layout flexbox para controlar disposição dos filhos com `isFlex`,\n`justifyContent` e `alignItems`.",
|
|
2219
|
+
"ownProperties": {
|
|
2220
|
+
"type": {
|
|
2221
|
+
"type": "'section'",
|
|
2222
|
+
"required": true,
|
|
2223
|
+
"description": "Tipo da estrutura: sempre `'section'`."
|
|
2224
|
+
},
|
|
2225
|
+
"isFlex": {
|
|
2226
|
+
"type": "boolean",
|
|
2227
|
+
"required": false,
|
|
2228
|
+
"description": "Define if the structure is a flex container."
|
|
2229
|
+
},
|
|
2230
|
+
"justifyContent": {
|
|
2231
|
+
"type": "'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'",
|
|
2232
|
+
"required": false,
|
|
2233
|
+
"description": "Define the justify-content property."
|
|
2234
|
+
},
|
|
2235
|
+
"alignItems": {
|
|
2236
|
+
"type": "'stretch' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'initial' | 'inherit'",
|
|
2237
|
+
"required": false,
|
|
2238
|
+
"description": "Define the align-items property."
|
|
2239
|
+
}
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
},
|
|
2243
|
+
"optionalFieldTypes": {
|
|
2244
|
+
"editor": {
|
|
2245
|
+
"interface": "EditorFieldConfig",
|
|
2246
|
+
"sourceFile": "optional-fields/editor/editor-field.ts",
|
|
2247
|
+
"description": "Configuração fornecida ao instanciar um campo do tipo 'editor'.\nUtilizado para renderizar um editor de rich text (wysiwyg).",
|
|
2248
|
+
"ownProperties": {
|
|
2249
|
+
"type": {
|
|
2250
|
+
"type": "'editor'",
|
|
2251
|
+
"required": true,
|
|
2252
|
+
"description": "Define o tipo único deste campo opcional."
|
|
2253
|
+
},
|
|
2254
|
+
"formats": {
|
|
2255
|
+
"type": "string[]",
|
|
2256
|
+
"required": false,
|
|
2257
|
+
"description": "Formatos suportados pelo editor (ex: 'bold', 'italic')."
|
|
2258
|
+
},
|
|
2259
|
+
"readonly": {
|
|
2260
|
+
"type": "boolean",
|
|
2261
|
+
"required": false,
|
|
2262
|
+
"description": "Define se o editor estará apenas em modo leitura."
|
|
2263
|
+
},
|
|
2264
|
+
"modules": {
|
|
2265
|
+
"type": "any",
|
|
2266
|
+
"required": false,
|
|
2267
|
+
"description": "Módulos adicionais do QuillJS a serem ativados no editor."
|
|
2268
|
+
},
|
|
2269
|
+
"style": {
|
|
2270
|
+
"type": "{\n [klass: string]: unknown;\n}",
|
|
2271
|
+
"required": false,
|
|
2272
|
+
"description": "Estilos customizados aplicados diretamente no container do editor."
|
|
2273
|
+
}
|
|
2274
|
+
},
|
|
2275
|
+
"provider": "provideEditorField()",
|
|
2276
|
+
"providerFunction": "provideEditorField",
|
|
2277
|
+
"providerImport": "import { provideEditorField } from '@seniorsistemas/angular-components/optional-fields/editor';",
|
|
2278
|
+
"package": "@seniorsistemas/angular-components/optional-fields/editor"
|
|
2279
|
+
}
|
|
2280
|
+
}
|
|
2281
|
+
}
|