@praxisui/dynamic-fields 8.0.0-beta.8 → 8.0.0-beta.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/docs/dynamic-fields-field-catalog.md +217 -0
- package/docs/dynamic-fields-field-selection-guide.md +204 -0
- package/docs/dynamic-fields-host-custom-field-guide.md +252 -0
- package/docs/dynamic-fields-host-custom-field-troubleshooting.md +160 -0
- package/docs/dynamic-fields-inline-components-guide.md +582 -0
- package/docs/dynamic-fields-inline-filter-catalog.md +502 -0
- package/docs/dynamic-fields-inline-filter-custom-component-guide.md +241 -0
- package/docs/dynamic-fields-inline-filter-inventory.md +247 -0
- package/docs/dynamic-fields-inline-filter-runtime-contract.md +391 -0
- package/docs/dynamic-fields-inline-filter-selection-guide.md +419 -0
- package/docs/dynamic-fields-inline-filter-troubleshooting.md +201 -0
- package/docs/dynamic-fields-inventory.md +206 -0
- package/docs/dynamic-fields-playground-catalog-plan.md +243 -0
- package/docs/generic-crud-service.md +152 -0
- package/fesm2022/praxisui-dynamic-fields-index-CBogy3si.mjs +1 -0
- package/fesm2022/praxisui-dynamic-fields-index-CWPZdn1Y.mjs +6 -0
- package/fesm2022/praxisui-dynamic-fields-index-CrHhyUMO.mjs +1 -0
- package/fesm2022/praxisui-dynamic-fields-index-DhGo5In4.mjs +6 -0
- package/fesm2022/praxisui-dynamic-fields.mjs +19551 -10669
- package/package.json +14 -13
- package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +526 -0
- package/src/lib/base/pdx-base-select-runtime-contract.json-api.md +474 -0
- package/src/lib/components/color-input/pdx-color-input.json-api.md +573 -0
- package/src/lib/components/color-picker/pdx-color-picker.json-api.md +686 -0
- package/src/lib/components/date-input/pdx-date-input.json-api.md +581 -0
- package/src/lib/components/datetime-local-input/pdx-datetime-local-input.json-api.md +560 -0
- package/src/lib/components/email-input/pdx-email-input.json-api.md +546 -0
- package/src/lib/components/field-shell/praxis-field-shell.json-api.md +523 -0
- package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +566 -0
- package/src/lib/components/inline-autocomplete/pdx-inline-autocomplete.json-api.md +554 -0
- package/src/lib/components/inline-color-label/pdx-inline-color-label.json-api.md +615 -0
- package/src/lib/components/inline-currency/pdx-inline-currency.json-api.md +542 -0
- package/src/lib/components/inline-currency-range/pdx-inline-currency-range.json-api.md +630 -0
- package/src/lib/components/inline-date/pdx-inline-date.json-api.md +529 -0
- package/src/lib/components/inline-date-range/pdx-inline-date-range.json-api.md +592 -0
- package/src/lib/components/inline-distance-radius/pdx-inline-distance-radius.json-api.md +649 -0
- package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +656 -0
- package/src/lib/components/inline-input/pdx-inline-input.json-api.md +538 -0
- package/src/lib/components/inline-multi-select/pdx-inline-multi-select.json-api.md +566 -0
- package/src/lib/components/inline-number/pdx-inline-number.json-api.md +533 -0
- package/src/lib/components/inline-pipeline-status/pdx-inline-pipeline-status.json-api.md +619 -0
- package/src/lib/components/inline-range-slider/pdx-inline-range-slider.json-api.md +605 -0
- package/src/lib/components/inline-rating/pdx-inline-rating.json-api.md +594 -0
- package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +623 -0
- package/src/lib/components/inline-score-priority/pdx-inline-score-priority.json-api.md +632 -0
- package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +564 -0
- package/src/lib/components/inline-select/pdx-inline-select.json-api.md +571 -0
- package/src/lib/components/inline-sentiment/pdx-inline-sentiment.json-api.md +661 -0
- package/src/lib/components/inline-time/pdx-inline-time.json-api.md +573 -0
- package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +635 -0
- package/src/lib/components/inline-toggle/pdx-inline-toggle.json-api.md +516 -0
- package/src/lib/components/inline-tree-select/pdx-inline-tree-select.json-api.md +637 -0
- package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +566 -0
- package/src/lib/components/material-autocomplete/pdx-material-autocomplete.json-api.md +561 -0
- package/src/lib/components/material-avatar/pdx-material-avatar.json-api.md +670 -0
- package/src/lib/components/material-button/pdx-material-button.json-api.md +572 -0
- package/src/lib/components/material-button-toggle/pdx-material-button-toggle.json-api.md +577 -0
- package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +611 -0
- package/src/lib/components/material-chips/pdx-material-chips.json-api.md +601 -0
- package/src/lib/components/material-colorpicker/pdx-material-colorpicker.json-api.md +545 -0
- package/src/lib/components/material-cpf-cnpj-input/pdx-material-cpf-cnpj-input.json-api.md +531 -0
- package/src/lib/components/material-currency/pdx-material-currency.json-api.md +569 -0
- package/src/lib/components/material-date-range/pdx-material-date-range.json-api.md +636 -0
- package/src/lib/components/material-datepicker/pdx-material-datepicker.json-api.md +551 -0
- package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +511 -0
- package/src/lib/components/material-multi-select/pdx-material-multi-select.json-api.md +596 -0
- package/src/lib/components/material-multi-select-tree/pdx-material-multi-select-tree.json-api.md +623 -0
- package/src/lib/components/material-price-range/pdx-material-price-range.json-api.md +619 -0
- package/src/lib/components/material-radio-group/pdx-material-radio-group.json-api.md +585 -0
- package/src/lib/components/material-range-slider/pdx-material-range-slider.json-api.md +664 -0
- package/src/lib/components/material-rating/pdx-material-rating.json-api.md +551 -0
- package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +602 -0
- package/src/lib/components/material-select/pdx-material-select.json-api.md +601 -0
- package/src/lib/components/material-selection-list/pdx-material-selection-list.json-api.md +607 -0
- package/src/lib/components/material-slide-toggle/pdx-material-slide-toggle.json-api.md +522 -0
- package/src/lib/components/material-slider/pdx-material-slider.json-api.md +602 -0
- package/src/lib/components/material-textarea/pdx-material-textarea.json-api.md +598 -0
- package/src/lib/components/material-timepicker/pdx-material-timepicker.json-api.md +554 -0
- package/src/lib/components/material-transfer-list/pdx-material-transfer-list.json-api.md +614 -0
- package/src/lib/components/material-tree-select/pdx-material-tree-select.json-api.md +649 -0
- package/src/lib/components/month-input/pdx-month-input.json-api.md +527 -0
- package/src/lib/components/number-input/pdx-number-input.json-api.md +594 -0
- package/src/lib/components/password-input/pdx-password-input.json-api.md +574 -0
- package/src/lib/components/pdx-material-time-range/pdx-material-time-range.json-api.md +592 -0
- package/src/lib/components/pdx-year-input/pdx-year-input.json-api.md +543 -0
- package/src/lib/components/phone-input/pdx-phone-input.json-api.md +583 -0
- package/src/lib/components/preload-status/pdx-preload-status.json-api.md +455 -0
- package/src/lib/components/search-input/pdx-search-input.json-api.md +536 -0
- package/src/lib/components/text-input/pdx-text-input.json-api.md +600 -0
- package/src/lib/components/time-input/pdx-time-input.json-api.md +546 -0
- package/src/lib/components/url-input/pdx-url-input.json-api.md +542 -0
- package/src/lib/components/week-input/pdx-week-input.json-api.md +533 -0
- package/{index.d.ts → types/praxisui-dynamic-fields.d.ts} +874 -440
- package/fesm2022/praxisui-dynamic-fields-index-C9IUU4lo.mjs +0 -1
- package/fesm2022/praxisui-dynamic-fields-index-GJtthzkD.mjs +0 -1
- package/fesm2022/praxisui-dynamic-fields-index-XvVS6lAQ.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`
|