@praxisui/dynamic-fields 8.0.0-beta.9 → 8.0.0-beta.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +19 -0
  2. package/docs/dynamic-fields-field-catalog.md +217 -0
  3. package/docs/dynamic-fields-field-selection-guide.md +204 -0
  4. package/docs/dynamic-fields-host-custom-field-guide.md +252 -0
  5. package/docs/dynamic-fields-host-custom-field-troubleshooting.md +160 -0
  6. package/docs/dynamic-fields-inline-components-guide.md +582 -0
  7. package/docs/dynamic-fields-inline-filter-catalog.md +518 -0
  8. package/docs/dynamic-fields-inline-filter-custom-component-guide.md +241 -0
  9. package/docs/dynamic-fields-inline-filter-inventory.md +250 -0
  10. package/docs/dynamic-fields-inline-filter-runtime-contract.md +394 -0
  11. package/docs/dynamic-fields-inline-filter-selection-guide.md +419 -0
  12. package/docs/dynamic-fields-inline-filter-troubleshooting.md +201 -0
  13. package/docs/dynamic-fields-inventory.md +207 -0
  14. package/docs/dynamic-fields-playground-catalog-plan.md +243 -0
  15. package/docs/generic-crud-service.md +152 -0
  16. package/fesm2022/praxisui-dynamic-fields-index-BYVmv78m.mjs +1 -0
  17. package/fesm2022/praxisui-dynamic-fields-index-CWPZdn1Y.mjs +6 -0
  18. package/fesm2022/praxisui-dynamic-fields-index-CrHhyUMO.mjs +1 -0
  19. package/fesm2022/praxisui-dynamic-fields-index-DhGo5In4.mjs +6 -0
  20. package/fesm2022/praxisui-dynamic-fields.mjs +14500 -5745
  21. package/package.json +14 -13
  22. package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +526 -0
  23. package/src/lib/base/pdx-base-select-runtime-contract.json-api.md +474 -0
  24. package/src/lib/components/color-input/pdx-color-input.json-api.md +573 -0
  25. package/src/lib/components/color-picker/pdx-color-picker.json-api.md +686 -0
  26. package/src/lib/components/date-input/pdx-date-input.json-api.md +581 -0
  27. package/src/lib/components/datetime-local-input/pdx-datetime-local-input.json-api.md +560 -0
  28. package/src/lib/components/email-input/pdx-email-input.json-api.md +546 -0
  29. package/src/lib/components/field-shell/praxis-field-shell.json-api.md +523 -0
  30. package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +566 -0
  31. package/src/lib/components/inline-autocomplete/pdx-inline-autocomplete.json-api.md +554 -0
  32. package/src/lib/components/inline-color-label/pdx-inline-color-label.json-api.md +615 -0
  33. package/src/lib/components/inline-currency/pdx-inline-currency.json-api.md +542 -0
  34. package/src/lib/components/inline-currency-range/pdx-inline-currency-range.json-api.md +630 -0
  35. package/src/lib/components/inline-date/pdx-inline-date.json-api.md +529 -0
  36. package/src/lib/components/inline-date-range/pdx-inline-date-range.json-api.md +592 -0
  37. package/src/lib/components/inline-distance-radius/pdx-inline-distance-radius.json-api.md +649 -0
  38. package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +656 -0
  39. package/src/lib/components/inline-input/pdx-inline-input.json-api.md +538 -0
  40. package/src/lib/components/inline-multi-select/pdx-inline-multi-select.json-api.md +566 -0
  41. package/src/lib/components/inline-number/pdx-inline-number.json-api.md +533 -0
  42. package/src/lib/components/inline-pipeline-status/pdx-inline-pipeline-status.json-api.md +619 -0
  43. package/src/lib/components/inline-range-slider/pdx-inline-range-slider.json-api.md +605 -0
  44. package/src/lib/components/inline-rating/pdx-inline-rating.json-api.md +594 -0
  45. package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +623 -0
  46. package/src/lib/components/inline-score-priority/pdx-inline-score-priority.json-api.md +632 -0
  47. package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +564 -0
  48. package/src/lib/components/inline-select/pdx-inline-select.json-api.md +571 -0
  49. package/src/lib/components/inline-sentiment/pdx-inline-sentiment.json-api.md +661 -0
  50. package/src/lib/components/inline-time/pdx-inline-time.json-api.md +573 -0
  51. package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +635 -0
  52. package/src/lib/components/inline-toggle/pdx-inline-toggle.json-api.md +516 -0
  53. package/src/lib/components/inline-tree-select/pdx-inline-tree-select.json-api.md +637 -0
  54. package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +566 -0
  55. package/src/lib/components/material-autocomplete/pdx-material-autocomplete.json-api.md +561 -0
  56. package/src/lib/components/material-avatar/pdx-material-avatar.json-api.md +670 -0
  57. package/src/lib/components/material-button/pdx-material-button.json-api.md +572 -0
  58. package/src/lib/components/material-button-toggle/pdx-material-button-toggle.json-api.md +577 -0
  59. package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +611 -0
  60. package/src/lib/components/material-chips/pdx-material-chips.json-api.md +601 -0
  61. package/src/lib/components/material-colorpicker/pdx-material-colorpicker.json-api.md +545 -0
  62. package/src/lib/components/material-cpf-cnpj-input/pdx-material-cpf-cnpj-input.json-api.md +531 -0
  63. package/src/lib/components/material-currency/pdx-material-currency.json-api.md +569 -0
  64. package/src/lib/components/material-date-range/pdx-material-date-range.json-api.md +636 -0
  65. package/src/lib/components/material-datepicker/pdx-material-datepicker.json-api.md +556 -0
  66. package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +511 -0
  67. package/src/lib/components/material-multi-select/pdx-material-multi-select.json-api.md +596 -0
  68. package/src/lib/components/material-multi-select-tree/pdx-material-multi-select-tree.json-api.md +623 -0
  69. package/src/lib/components/material-price-range/pdx-material-price-range.json-api.md +619 -0
  70. package/src/lib/components/material-radio-group/pdx-material-radio-group.json-api.md +585 -0
  71. package/src/lib/components/material-range-slider/pdx-material-range-slider.json-api.md +664 -0
  72. package/src/lib/components/material-rating/pdx-material-rating.json-api.md +551 -0
  73. package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +602 -0
  74. package/src/lib/components/material-select/pdx-material-select.json-api.md +601 -0
  75. package/src/lib/components/material-selection-list/pdx-material-selection-list.json-api.md +607 -0
  76. package/src/lib/components/material-slide-toggle/pdx-material-slide-toggle.json-api.md +522 -0
  77. package/src/lib/components/material-slider/pdx-material-slider.json-api.md +602 -0
  78. package/src/lib/components/material-textarea/pdx-material-textarea.json-api.md +598 -0
  79. package/src/lib/components/material-timepicker/pdx-material-timepicker.json-api.md +554 -0
  80. package/src/lib/components/material-transfer-list/pdx-material-transfer-list.json-api.md +614 -0
  81. package/src/lib/components/material-tree-select/pdx-material-tree-select.json-api.md +649 -0
  82. package/src/lib/components/month-input/pdx-month-input.json-api.md +527 -0
  83. package/src/lib/components/number-input/pdx-number-input.json-api.md +594 -0
  84. package/src/lib/components/password-input/pdx-password-input.json-api.md +574 -0
  85. package/src/lib/components/pdx-material-time-range/pdx-material-time-range.json-api.md +592 -0
  86. package/src/lib/components/pdx-year-input/pdx-year-input.json-api.md +543 -0
  87. package/src/lib/components/phone-input/pdx-phone-input.json-api.md +583 -0
  88. package/src/lib/components/preload-status/pdx-preload-status.json-api.md +455 -0
  89. package/src/lib/components/search-input/pdx-search-input.json-api.md +536 -0
  90. package/src/lib/components/text-input/pdx-text-input.json-api.md +600 -0
  91. package/src/lib/components/time-input/pdx-time-input.json-api.md +546 -0
  92. package/src/lib/components/url-input/pdx-url-input.json-api.md +542 -0
  93. package/src/lib/components/week-input/pdx-week-input.json-api.md +533 -0
  94. package/{index.d.ts → types/praxisui-dynamic-fields.d.ts} +848 -445
  95. package/fesm2022/praxisui-dynamic-fields-index-C9IUU4lo.mjs +0 -1
  96. package/fesm2022/praxisui-dynamic-fields-index-GJtthzkD.mjs +0 -1
  97. package/fesm2022/praxisui-dynamic-fields-index-XvVS6lAQ.mjs +0 -1
  98. package/fesm2022/praxisui-dynamic-fields-index-iIeaA6ko.mjs +0 -1
@@ -0,0 +1,419 @@
1
+ ---
2
+ title: "Dynamic Fields Inline Filter Selection Guide"
3
+ slug: "dynamic-fields-inline-filter-selection-guide"
4
+ description: "Guia de decisao para escolher o inline correto na trilha de filtro, equilibrando densidade, semantica, payload e custo de integracao."
5
+ doc_type: "guide"
6
+ document_kind: "host-guide"
7
+ component: "dynamic-fields"
8
+ category: "components"
9
+ audience:
10
+ - "frontend"
11
+ - "host"
12
+ - "designer"
13
+ - "architect"
14
+ level: "advanced"
15
+ status: "active"
16
+ owner: "praxis-ui"
17
+ tags:
18
+ - "dynamic-fields"
19
+ - "dynamic-filter"
20
+ - "selection"
21
+ - "ux"
22
+ order: 43
23
+ icon: "rule"
24
+ toc: true
25
+ sidebar: true
26
+ search_boost: 1.16
27
+ reading_time: 16
28
+ estimated_setup_time: 15
29
+ version: "1.0"
30
+ related_docs:
31
+ - "dynamic-fields-inline-filter-catalog"
32
+ - "dynamic-fields-inline-filter-runtime-contract"
33
+ - "dynamic-inline-filter-catalog"
34
+ - "dynamic-filter-range-filters-guide"
35
+ keywords:
36
+ - "quando usar inline"
37
+ - "single value vs range"
38
+ - "local vs remoto"
39
+ - "compact toolbar"
40
+ last_updated: "2026-03-26"
41
+ ---
42
+
43
+ # Dynamic Fields Inline Filter Selection Guide
44
+
45
+ ## Objetivo
46
+
47
+ Ajudar times host a escolher o inline correto sem transformar a toolbar do filtro em um formulario comprimido e confuso.
48
+
49
+ ## Pre-requisitos
50
+
51
+ - Conhecer a feature de filtro dinamico em `praxis-table`
52
+ - Saber o tipo de dado e a expectativa de payload do backend
53
+
54
+ ## Fonte canonica para descoberta
55
+
56
+ Para landing pages, playgrounds e outros hosts oficiais, a descoberta da trilha inline deve partir do catalogo exportado por `@praxisui/dynamic-fields`.
57
+
58
+ Esse catalogo centraliza os mesmos `controlType` desta trilha com semantica pronta para descoberta:
59
+
60
+ - `track`, para separar `inline-filter` de outras trilhas;
61
+ - `family`, para agrupar a natureza funcional do filtro;
62
+ - `interactionPattern`, para resumir se o caso dominante e `lookup`, `range`, `single-choice`, `multi-choice`, `visual` ou `trigger`;
63
+ - `dataSourceKind`, para deixar claro se o caso e local, remoto, misto ou especializado;
64
+ - `icon.key` e `icon.tone`, para projetar identidade visual canonica sem inventar outra taxonomia no host.
65
+
66
+ Regra de uso:
67
+
68
+ - este guia continua sendo a narrativa de decisao;
69
+ - o inventario continua provando suporte runtime real;
70
+ - cues de navegacao, mini-cards e vitrines devem ser derivados do catalogo exportado da lib.
71
+
72
+ ## Principio central
73
+
74
+ Um inline filter component so vale a pena quando melhora a velocidade de decisao na barra compacta.
75
+
76
+ Se ele exige muita exploracao, muita leitura ou muito backend roundtrip, prefira deixar a experiencia no filtro avancado.
77
+
78
+ ```mermaid
79
+ flowchart TD
80
+ field["Filter field candidate"] --> freq{"High frequency?"}
81
+ freq -- no --> advanced["Keep in advanced filter"]
82
+ freq -- yes --> legible{"Readable active state?"}
83
+ legible -- no --> advanced
84
+ legible -- yes --> payload{"Payload fits backend DTO?"}
85
+ payload -- no --> advanced
86
+ payload -- yes --> density{"Compact enough for toolbar?"}
87
+ density -- yes --> inline["Promote to inline control"]
88
+ density -- no --> advanced
89
+ ```
90
+
91
+ ## Perguntas de decisao
92
+
93
+ 1. O usuario usa esse filtro com frequencia alta?
94
+ 2. O valor final continua legivel na pill?
95
+ 3. O shape do valor ja conversa bem com o DTO do backend?
96
+ 4. O filtro depende de lista remota pesada ou hierarquia profunda?
97
+ 5. O controle expressa uma semantica especifica do dominio ou eh so um field generico?
98
+
99
+ Antes de transformar essas respostas em navegacao publicada, projete o resultado usando `interactionPattern`, `dataSourceKind` e `icon` vindos do catalogo exportado em vez de montar uma tabela paralela no host.
100
+
101
+ ## Simples vs multipla
102
+
103
+ ### Escolha simples
104
+
105
+ Prefira:
106
+
107
+ - `inlineSelect`
108
+ - `inlineSearchableSelect`
109
+ - `inlineAsyncSelect`
110
+ - `inlineEntityLookup`
111
+ - `inlineAutocomplete`
112
+
113
+ Pergunta chave:
114
+
115
+ - o usuario escolhe um item ou procura por uma entidade?
116
+
117
+ Use `entity-lookup` quando a identidade do item importa.
118
+ Use `select`/`searchable` quando o label por si so basta.
119
+
120
+ ### Escolha multipla
121
+
122
+ Prefira:
123
+
124
+ - `inlineMultiSelect`
125
+ - `inlinePipelineStatus`
126
+ - `inlineColorLabel`
127
+
128
+ Evite inline multiplo quando:
129
+
130
+ - a selecao tipica passa de 3 ou 4 itens;
131
+ - a pill perde poder explicativo;
132
+ - o usuario precisa revisar a lista completa para confiar no estado.
133
+
134
+ ## Local vs remoto
135
+
136
+ ### Local
137
+
138
+ Use variantes locais quando:
139
+
140
+ - o conjunto de opcoes eh estavel;
141
+ - a lista cabe em memoria sem custo operacional;
142
+ - a toolbar precisa abrir rapido.
143
+
144
+ ### Remoto
145
+
146
+ Use variantes remotas quando:
147
+
148
+ - o conjunto eh grande ou dependente de tenant;
149
+ - ha busca paginada;
150
+ - o filtro faz parte de operacao enterprise real.
151
+
152
+ Prefira:
153
+
154
+ - `inlineAsyncSelect`
155
+ - `inlineEntityLookup`
156
+ - `inlineAutocomplete`
157
+
158
+ Risco:
159
+
160
+ - backend lento degrada a UX da toolbar mais rapido do que degrada um modal de filtro avancado.
161
+
162
+ ## Single value vs range
163
+
164
+ ### Single value
165
+
166
+ Prefira:
167
+
168
+ - `inlineInput`
169
+ - `inlineNumber`
170
+ - `inlineCurrency`
171
+ - `inlineDate`
172
+ - `inlineTime`
173
+ - `inlineToggle`
174
+
175
+ ### Range
176
+
177
+ Prefira:
178
+
179
+ - `inlineRange`
180
+ - `inlineCurrencyRange`
181
+ - `inlineDateRange`
182
+ - `inlineTimeRange`
183
+ - `inlineRating`
184
+ - `inlineDistanceRadius`
185
+ - `inlineScorePriority`
186
+
187
+ Regra:
188
+
189
+ - se o backend opera com lower/upper bound, documente o shape canonicamente como range
190
+ - nao disfarce um range como numero simples apenas para caber na toolbar
191
+
192
+ ## Inline compacto vs advanced filter
193
+
194
+ ### Fica bem na toolbar
195
+
196
+ - valor curto e recorrente
197
+ - uma ou duas interacoes para definir
198
+ - leitura rapida do estado ativo
199
+ - clear facil
200
+
201
+ ### Melhor no painel avancado
202
+
203
+ - lista profunda
204
+ - arvore grande
205
+ - validacao pesada
206
+ - combinacao de muitos subcampos
207
+ - dependencia forte de contexto adicional
208
+
209
+ ## Especializado semantico vs controle generico
210
+
211
+ Use controles especializados quando a semantica visual reduz ambiguidade:
212
+
213
+ - `inlineRating`
214
+ - `inlineDistanceRadius`
215
+ - `inlinePipelineStatus`
216
+ - `inlineScorePriority`
217
+ - `inlineRelativePeriod`
218
+ - `inlineSentiment`
219
+ - `inlineColorLabel`
220
+
221
+ Evite especializados quando:
222
+
223
+ - o backend e o usuario so precisam de um enum simples;
224
+ - a visualizacao rica nao muda a decisao.
225
+
226
+ Regra de produto obrigatoria:
227
+
228
+ - componentes `graphic specialized` entram na toolbar somente por `controlType` explicito no schema
229
+ - eles nao devem ser promovidos automaticamente a partir de um controle generico
230
+ - se houver duvida entre `inlineSelect` e um especializado visual, prefira o controle generico
231
+
232
+ Familia `graphic specialized`:
233
+
234
+ - `inlinePipelineStatus`
235
+ - `inlineRelativePeriod`
236
+ - `inlineRating`
237
+ - `inlineDistanceRadius`
238
+ - `inlineScorePriority`
239
+ - `inlineSentiment`
240
+ - `inlineColorLabel`
241
+
242
+ ## Tiers de densidade
243
+
244
+ ### Core compact
245
+
246
+ Use como primeira opcao na toolbar:
247
+
248
+ - `inlineInput`
249
+ - `inlineSelect`
250
+ - `inlineSearchableSelect`
251
+ - `inlineAsyncSelect`
252
+ - `inlineEntityLookup`
253
+ - `inlineAutocomplete`
254
+ - `inlineNumber`
255
+ - `inlineCurrency`
256
+ - `inlineRange`
257
+ - `inlineCurrencyRange`
258
+ - `inlineDate`
259
+ - `inlineDateRange`
260
+ - `inlineTime`
261
+ - `inlineTimeRange`
262
+ - `inlineToggle`
263
+ - `inlinePeriodRange`
264
+
265
+ Heuristica:
266
+
267
+ - uma interacao principal
268
+ - estado preenchido facil de ler
269
+ - baixo custo de explicacao para usuario novo
270
+
271
+ ### Advanced compact
272
+
273
+ Use quando houver ganho claro e frequente:
274
+
275
+ - `inlineMultiSelect`
276
+ - `inlineTreeSelect`
277
+
278
+ Regra:
279
+
280
+ - `inlineTreeSelect` so vale a pena para hierarquias rasas, com rotulo final curto e selecao de no unico
281
+ - se a arvore exigir exploracao profunda, varios niveis expandidos ou revisao estrutural para confiar no estado, prefira filtro avancado ou desative a promocao inline
282
+
283
+ ### Graphic specialized
284
+
285
+ Use apenas por opt-in explicito:
286
+
287
+ - `inlinePipelineStatus`
288
+ - `inlineRelativePeriod`
289
+ - `inlineRating`
290
+ - `inlineDistanceRadius`
291
+ - `inlineScorePriority`
292
+ - `inlineSentiment`
293
+ - `inlineColorLabel`
294
+
295
+ Regra:
296
+
297
+ - esses componentes nunca devem ser o primeiro default editorial quando um controle generico resolve
298
+ - so use quando a linguagem visual reduz ambiguidade ou acelera decisao de forma mensuravel
299
+ - se a principal vantagem for "ficar mais bonito", nao use na toolbar compacta
300
+
301
+ ## Anti-padroes comuns
302
+
303
+ - promover `inlineTreeSelect` para qualquer taxonomia so porque existe arvore no backend
304
+ - usar `inlineRelativePeriod` quando a API nao normaliza presets relativos de forma canonica
305
+ - usar `inlinePipelineStatus` para enum simples de status administrativo
306
+ - usar `inlineColorLabel` quando a cor eh o unico canal sem texto de apoio
307
+ - usar `inlineRating` ou `inlineScorePriority` quando o usuario pensa em numero bruto, nao em banda visual
308
+
309
+ ## Matriz de decisao
310
+
311
+ | Pergunta | Melhor opcao |
312
+ | --- | --- |
313
+ | Lista pequena, selecao unica | `inlineSelect` |
314
+ | Lista grande com busca | `inlineSearchableSelect` |
315
+ | Lista remota paginada | `inlineAsyncSelect` |
316
+ | Entidade com id + descricao | `inlineEntityLookup` |
317
+ | Sugestao incremental | `inlineAutocomplete` |
318
+ | Texto curto | `inlineInput` |
319
+ | Numero unico | `inlineNumber` |
320
+ | Valor monetario unico | `inlineCurrency` |
321
+ | Faixa monetaria | `inlineCurrencyRange` |
322
+ | Range numerico generico | `inlineRange` |
323
+ | Data unica | `inlineDate` |
324
+ | Periodo | `inlineDateRange` |
325
+ | Horario unico | `inlineTime` |
326
+ | Faixa horaria | `inlineTimeRange` |
327
+ | Hierarquia rasa, no unico e leitura curta | `inlineTreeSelect` |
328
+ | Booleano com neutro | `inlineToggle` |
329
+ | Score visual com ganho semantico real | `inlineRating` |
330
+ | Distancia / raio com unidade explicita | `inlineDistanceRadius` |
331
+ | Status visual de pipeline com semantica operacional | `inlinePipelineStatus` |
332
+ | Score / prioridade por banda com legenda clara | `inlineScorePriority` |
333
+ | Preset temporal em API com normalizacao canonica | `inlineRelativePeriod` |
334
+ | Polaridade / sentimento com leitura textual clara | `inlineSentiment` |
335
+ | Tags com cor e rotulo textual forte | `inlineColorLabel` |
336
+
337
+ ## Recipes comparativos
338
+
339
+ ### Use isto / evite isto
340
+
341
+ #### Enum simples de status administrativo
342
+
343
+ Use isto:
344
+
345
+ - `inlineSelect`
346
+
347
+ Evite isto:
348
+
349
+ - `inlinePipelineStatus`
350
+
351
+ Motivo:
352
+
353
+ - se o usuario so precisa escolher `Ativo`, `Inativo` ou `Pendente`, a metafora de pipeline adiciona peso visual sem acelerar decisao
354
+
355
+ #### Periodo analitico com rastreabilidade
356
+
357
+ Use isto:
358
+
359
+ - `inlineDateRange`
360
+ - `inlinePeriodRange`
361
+
362
+ Evite isto:
363
+
364
+ - `inlineRelativePeriod` quando o backend nao normaliza presets
365
+
366
+ Motivo:
367
+
368
+ - filtros analiticos precisam deixar claro o recorte final enviado ao backend; se a plataforma nao fecha essa traducao canonicamente, o preset relativo cria opacidade
369
+
370
+ #### Hierarquia organizacional
371
+
372
+ Use isto:
373
+
374
+ - `inlineTreeSelect` para arvore rasa, selecao unica e rotulo final curto
375
+
376
+ Evite isto:
377
+
378
+ - `inlineTreeSelect` para navegacao exploratoria ou estruturas profundas
379
+
380
+ Motivo:
381
+
382
+ - quando a pessoa precisa abrir muitos ramos para decidir, a toolbar vira um mini navegador de arvore e perde sua funcao compacta
383
+
384
+ #### Faixa numerica sem semantica visual forte
385
+
386
+ Use isto:
387
+
388
+ - `inlineRange`
389
+
390
+ Evite isto:
391
+
392
+ - `inlineRating`
393
+ - `inlineScorePriority`
394
+
395
+ Motivo:
396
+
397
+ - se o dominio pensa em numero ou intervalo bruto, o componente especializado so troca clareza por ornamento
398
+
399
+ #### Tags ou categorias
400
+
401
+ Use isto:
402
+
403
+ - `inlineMultiSelect`
404
+
405
+ Evite isto:
406
+
407
+ - `inlineColorLabel` quando a cor for o principal canal
408
+
409
+ Motivo:
410
+
411
+ - cor pode ajudar, mas nao pode carregar sozinha a semantica de um filtro enterprise
412
+
413
+ ## Recomendacoes enterprise
414
+
415
+ - use `controlType` canonico `inline*`
416
+ - valide sempre o shape do valor com o DTO da tabela
417
+ - nao promova um controle para inline so porque existe componente pronto
418
+ - trate `inlineTreeSelect` como excecao operacional, nao como default para qualquer hierarquia
419
+ - trate a familia `graphic specialized` como opt-in de produto, nunca como decoracao padrao
@@ -0,0 +1,201 @@
1
+ ---
2
+ title: "Dynamic Fields Inline Filter Troubleshooting"
3
+ slug: "dynamic-fields-inline-filter-troubleshooting"
4
+ description: "Runbook de troubleshooting para inline filters, cobrindo renderizacao, payload, range, clear button e problemas de densidade na toolbar."
5
+ doc_type: "reference"
6
+ document_kind: "host-guide"
7
+ component: "dynamic-fields"
8
+ category: "integration"
9
+ audience:
10
+ - "frontend"
11
+ - "host"
12
+ - "platform-team"
13
+ level: "advanced"
14
+ status: "active"
15
+ owner: "praxis-ui"
16
+ tags:
17
+ - "dynamic-fields"
18
+ - "dynamic-filter"
19
+ - "troubleshooting"
20
+ - "inline"
21
+ order: 46
22
+ icon: "build_circle"
23
+ toc: true
24
+ sidebar: true
25
+ search_boost: 1.12
26
+ reading_time: 16
27
+ estimated_setup_time: 15
28
+ version: "1.0"
29
+ related_docs:
30
+ - "dynamic-fields-inline-filter-runtime-contract"
31
+ - "dynamic-fields-inline-filter-custom-component-guide"
32
+ - "dynamic-filter-troubleshooting-guide"
33
+ - "dynamic-filter-backend-contract-cheatsheet"
34
+ keywords:
35
+ - "inline nao renderiza"
36
+ - "payload invalido"
37
+ - "controlType errado"
38
+ - "toolbar overflow"
39
+ last_updated: "2026-03-07"
40
+ ---
41
+
42
+ # Dynamic Fields Inline Filter Troubleshooting
43
+
44
+ ## Objetivo
45
+
46
+ Resolver as falhas mais comuns na trilha de inline filters entre `dynamic-fields`, `table` e backend.
47
+
48
+ ```mermaid
49
+ flowchart TD
50
+ issue["Inline filter issue"] --> render["Check controlType and registry"]
51
+ render --> mapping["Confirm resolved component"]
52
+ mapping --> payload["Inspect emitted form value"]
53
+ payload --> range["Validate range shape"]
54
+ range --> toolbar["Review toolbar density and accessibility"]
55
+ toolbar --> backend["Compare with backend DTO and filter contract"]
56
+ ```
57
+
58
+ ## Pre-requisitos
59
+
60
+ - Saber qual `controlType` o schema esta enviando
61
+ - Conseguir inspecionar o valor emitido pelo formulario
62
+ - Ter o contrato do backend ou `GenericFilterDTO` em maos
63
+
64
+ ## 1. Inline nao renderiza
65
+
66
+ Checklist:
67
+
68
+ - o `controlType` existe em `INLINE_FILTER_CONTROL_TYPES` ou foi registrado no host?
69
+ - o `ComponentRegistryService` conhece esse tipo?
70
+ - o `praxis-filter` realmente promoveu o campo para a variante inline esperada?
71
+
72
+ Causas comuns:
73
+
74
+ - `controlType` inventado
75
+ - flag `useInline*Variant` desligada
76
+ - componente custom registrado fora do root injector
77
+
78
+ ## 2. `controlType` resolve para componente errado
79
+
80
+ Checklist:
81
+
82
+ - verifique `inline-filter-controls.util.ts`
83
+ - verifique `normalizeControlType` do `ComponentRegistryService`
84
+ - verifique `normalizeInlineControlType` no `filter-settings`
85
+
86
+ Causas comuns:
87
+
88
+ - schema usando `controlType` inexistente
89
+ - host assumindo um componente que nao esta registrado
90
+ - divergencia entre o `controlType` salvo e o `controlType` esperado pelo runtime
91
+
92
+ ## 3. Payload nao bate com backend
93
+
94
+ Checklist:
95
+
96
+ - confirme o valor emitido pelo form
97
+ - confirme o DTO esperado pelo backend
98
+ - confirme o shape de range
99
+ - confirme serializacao de data/hora
100
+
101
+ Causas comuns:
102
+
103
+ - enviar metadata de UI junto do DTO
104
+ - assumir que option object sera aceito pelo backend
105
+ - tratar preset relativo como se o backend entendesse automaticamente
106
+
107
+ ## 4. Range sai em shape invalido
108
+
109
+ Checklist:
110
+
111
+ - `inlineRange`: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
112
+ - `inlineCurrencyRange`: `{ minPrice?, maxPrice?, currency? }`
113
+ - `inlineDateRange`: `{ startDate?, endDate? }`
114
+ - `inlineTimeRange`: `{ start?, end? }`
115
+
116
+ Causas comuns:
117
+
118
+ - range vazio indo para submit
119
+ - bound invertido sem tratamento
120
+ - payload escalar enviado para operacao Java de range
121
+
122
+ ## 5. Funciona no form, mas nao no filtro inline
123
+
124
+ Isso e esperado em varios casos.
125
+
126
+ O fato de um field existir no catalogo geral nao significa que ele cabe na shell compacta do filtro.
127
+
128
+ Valide:
129
+
130
+ - densidade
131
+ - clear rapido
132
+ - leitura do valor na pill
133
+ - overlay/popover
134
+
135
+ ## 6. Clear button / readonly / disabled nao respeitados
136
+
137
+ Checklist:
138
+
139
+ - metadata chega ao componente?
140
+ - o componente custom consome `clearButton`, `readonly` e `disabled`?
141
+ - o shell esta bloqueando interacao por `readonlyMode` ou `disabledMode`?
142
+ - o `FormControl` esta desabilitado quando o componente realmente precisa refletir `aria-disabled` no DOM?
143
+ - `clear` volta para estado neutro ou para valor arbitrario?
144
+
145
+ Risco:
146
+
147
+ - toolbar enterprise fica inconsistente e gera criterio fantasma
148
+
149
+ Regra canonica:
150
+
151
+ - `disabledMode` bloqueia interacao no `FieldShell`
152
+ - `FormControl.disabled` controla o estado nativo do controle
153
+ - em selects Material, nao reintroduzir `[disabled]` local so para espelhar `disabledMode`
154
+
155
+ ## 7. Overflow, densidade e acessibilidade ruins na toolbar
156
+
157
+ Checklist:
158
+
159
+ - o valor cabe na pill?
160
+ - o overlay abre com largura controlada?
161
+ - foco visivel?
162
+ - contraste suficiente?
163
+ - navegacao por teclado mantida?
164
+ - overrides globais do host em `.mat-mdc-form-field`, `.mat-mdc-select-panel` ou
165
+ `.mat-mdc-option` estao preservando os tokens package-owned
166
+ `--pdx-inline-field-*` e `--pdx-inline-panel-*`?
167
+
168
+ Regra:
169
+
170
+ - se a leitura do estado ativo fica ruim, o componente deveria estar no filtro avancado, nao na toolbar
171
+
172
+ ## 8. Componente remoto parece vazio ao reabrir
173
+
174
+ Checklist:
175
+
176
+ - termo de busca temporario esta sendo resetado?
177
+ - selecionados sao preloadados?
178
+ - `resourcePath` responde?
179
+
180
+ Especialmente relevante para:
181
+
182
+ - `inlineSearchableSelect`
183
+ - `inlineAsyncSelect`
184
+ - `inlineEntityLookup`
185
+ - `inlineAutocomplete`
186
+
187
+ ## 9. Componente custom do host nao aparece
188
+
189
+ Checklist:
190
+
191
+ - `ComponentRegistryService.register(...)`
192
+ - `ComponentMetadataRegistry.register(...)`
193
+ - bootstrap em `ENVIRONMENT_INITIALIZER`
194
+ - mesmo `controlType` no runtime e na metadata
195
+
196
+ ## 10. Duplicacao confusa entre docs de table e dynamic-fields
197
+
198
+ Regra de diagnostico:
199
+
200
+ - se a duvida eh sobre jornada do filtro, procure `table`
201
+ - se a duvida eh sobre componente inline, procure `dynamic-fields`