@praxisui/dynamic-fields 8.0.0-beta.7 → 8.0.0-beta.70
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,502 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Dynamic Fields Inline Filter Catalog"
|
|
3
|
+
slug: "dynamic-fields-inline-filter-catalog"
|
|
4
|
+
description: "Catalogo especializado dos inline filter components do dynamic-fields, com criterios de uso, shape de valor e notas de UX para a trilha de filtro em table."
|
|
5
|
+
doc_type: "reference"
|
|
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
|
+
- "inline"
|
|
21
|
+
- "catalog"
|
|
22
|
+
order: 42
|
|
23
|
+
icon: "view_compact_alt"
|
|
24
|
+
toc: true
|
|
25
|
+
sidebar: true
|
|
26
|
+
search_boost: 1.2
|
|
27
|
+
reading_time: 24
|
|
28
|
+
estimated_setup_time: 25
|
|
29
|
+
version: "1.0"
|
|
30
|
+
related_docs:
|
|
31
|
+
- "dynamic-fields-inline-filter-selection-guide"
|
|
32
|
+
- "dynamic-fields-inline-filter-runtime-contract"
|
|
33
|
+
- "dynamic-fields-inline-filter-custom-component-guide"
|
|
34
|
+
- "dynamic-inline-filter-catalog"
|
|
35
|
+
- "dynamic-filter-range-filters-guide"
|
|
36
|
+
keywords:
|
|
37
|
+
- "inlineSelect"
|
|
38
|
+
- "inlineDateRange"
|
|
39
|
+
- "inlineTreeSelect"
|
|
40
|
+
- "inlineRelativePeriod"
|
|
41
|
+
last_updated: "2026-03-26"
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
# Dynamic Fields Inline Filter Catalog
|
|
45
|
+
|
|
46
|
+
## Objetivo
|
|
47
|
+
|
|
48
|
+
Catalogar os inline components reais usados pela trilha de filtro em `praxis-table`, sem misturar com o catalogo geral de fields do formulario.
|
|
49
|
+
|
|
50
|
+
## Superficie publicada para hosts
|
|
51
|
+
|
|
52
|
+
Este documento continua sendo a referencia editorial da trilha inline.
|
|
53
|
+
|
|
54
|
+
Para consumo operacional por hosts oficiais, landing page e playground, a superficie canonica e o catalogo exportado pela lib de dynamic-fields. Nele, os inline filters aparecem em `track: inline-filter`, separados dos fields de formulario comuns e validados contra o registry default.
|
|
55
|
+
|
|
56
|
+
Nesse catalogo exportado, a trilha inline tambem publica:
|
|
57
|
+
|
|
58
|
+
- `family`, para agrupar a natureza funcional do filtro;
|
|
59
|
+
- `interactionPattern`, para resumir se o caso e `lookup`, `range`, `single-choice`, `multi-choice`, `visual` ou outro padrao dominante;
|
|
60
|
+
- `icon.key` + `icon.tone`, para identidade visual canonica em menus, playgrounds e vitrines derivadas;
|
|
61
|
+
- `dataSourceKind`, para explicitar o custo de integracao do filtro.
|
|
62
|
+
|
|
63
|
+
## Pre-requisitos
|
|
64
|
+
|
|
65
|
+
- Entendimento basico de toolbar compacta vs filtro avancado
|
|
66
|
+
- Leitura recomendada do inventario runtime e do guia de payload do filtro
|
|
67
|
+
|
|
68
|
+
## Como usar este catalogo
|
|
69
|
+
|
|
70
|
+
Para cada item, leia em conjunto:
|
|
71
|
+
|
|
72
|
+
- **quando usar**: cenarios em que a variante inline agrega produtividade
|
|
73
|
+
- **quando evitar**: quando a compactacao piora a UX
|
|
74
|
+
- **shape do valor**: valor do componente dentro do form do filtro
|
|
75
|
+
- **UX note**: restricoes de densidade, acessibilidade e leitura na toolbar
|
|
76
|
+
|
|
77
|
+
Para hosts oficiais:
|
|
78
|
+
|
|
79
|
+
- a narrativa continua vindo deste markdown;
|
|
80
|
+
- a navegacao, os cues e a iconografia devem ser derivados do catalogo exportado da lib;
|
|
81
|
+
- nao mantenha uma tabela paralela de `interactionPattern` ou `icon` dentro do host.
|
|
82
|
+
|
|
83
|
+
## Tiers editoriais
|
|
84
|
+
|
|
85
|
+
- `core compact`: controles universais, previsiveis e de alta recorrencia
|
|
86
|
+
- `advanced compact`: controles validos em toolbar, mas que exigem criterio adicional de densidade
|
|
87
|
+
- `graphic specialized`: controles semanticos ou visuais que entram apenas por decisao explicita de produto
|
|
88
|
+
|
|
89
|
+
## 1. Texto
|
|
90
|
+
|
|
91
|
+
### <span id="inline-input"></span>`inlineInput`
|
|
92
|
+
|
|
93
|
+
- Quando usar: busca textual curta, identificador, nome, codigo, termo livre
|
|
94
|
+
- Quando evitar: texto longo, mascara pesada, validacao complexa que exija componente dedicado
|
|
95
|
+
- Shape do valor: `string`
|
|
96
|
+
- Mascara de display: quando houver semantica explicita em metadata (`mask`, `displayMask`,
|
|
97
|
+
`inputMask`, `format` com tokens de mascara) o campo renderiza o valor mascarado e preserva
|
|
98
|
+
o valor cru no form. Para compatibilidade com filtros metadata-driven, `inlineInput` tambem
|
|
99
|
+
reconhece sinais explicitos de CPF/CNPJ, telefone BR/E.164 e CEP; numeros sem essa semantica
|
|
100
|
+
permanecem texto cru.
|
|
101
|
+
- Snippet:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{ "name": "name", "controlType": "inlineInput", "label": "Nome" }
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
- UX note: mantenha placeholder curto e `clearButton` habilitado
|
|
108
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
|
|
109
|
+
|
|
110
|
+
## 2. Selecao simples e multipla
|
|
111
|
+
|
|
112
|
+
### <span id="inline-select"></span>`inlineSelect`
|
|
113
|
+
|
|
114
|
+
- Quando usar: lista local pequena ou media
|
|
115
|
+
- Quando evitar: catalogo remoto grande ou lookup rico
|
|
116
|
+
- Shape do valor: valor simples
|
|
117
|
+
- Snippet:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{ "name": "status", "controlType": "inlineSelect", "options": [{ "label": "Ativo", "value": "ACTIVE" }] }
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
- UX note: o valor precisa continuar legivel dentro da pill
|
|
124
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`, `dynamic-inline-filter-catalog`
|
|
125
|
+
|
|
126
|
+
### <span id="inline-multiselect"></span>`inlineMultiSelect`
|
|
127
|
+
|
|
128
|
+
- Quando usar: poucas selecoes simultaneas que precisam permanecer visiveis como tokens compactos na pill
|
|
129
|
+
- Quando evitar: selecao grande ou dependencia de leitura integral permanente fora do painel
|
|
130
|
+
- Shape do valor: `unknown[]`
|
|
131
|
+
- Snippet:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{ "name": "status", "controlType": "inlineMultiSelect", "multiple": true }
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- UX note: o trigger mostra tokens selecionados com overflow `+N`; o painel deve manter uma secao de selecionados para leitura e remocao rapida
|
|
138
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
|
|
139
|
+
|
|
140
|
+
### <span id="inline-searchable-select"></span>`inlineSearchableSelect`
|
|
141
|
+
|
|
142
|
+
- Quando usar: lista media/grande com busca
|
|
143
|
+
- Quando evitar: se `select` simples ja resolve
|
|
144
|
+
- Shape do valor: valor simples ou option object, conforme metadata
|
|
145
|
+
- Snippet:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{ "name": "departmentId", "controlType": "inlineSearchableSelect", "resourcePath": "/departments/options" }
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
- UX note: so use quando a busca realmente reduz friccao
|
|
152
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-backend-contract-cheatsheet`
|
|
153
|
+
|
|
154
|
+
### <span id="inline-async-select"></span>`inlineAsyncSelect`
|
|
155
|
+
|
|
156
|
+
- Quando usar: fonte remota com busca sob demanda ou paginacao
|
|
157
|
+
- Quando evitar: se o custo cognitivo de abrir painel remoto na toolbar for alto
|
|
158
|
+
- Shape do valor: valor simples ou option object
|
|
159
|
+
- Snippet:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{ "name": "ownerId", "controlType": "inlineAsyncSelect", "resourcePath": "/users/options" }
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- UX note: valide loading, empty state e reset de termo na reabertura
|
|
166
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
|
|
167
|
+
|
|
168
|
+
## 3. Lookup e autocomplete
|
|
169
|
+
|
|
170
|
+
### <span id="inline-entity-lookup"></span>`inlineEntityLookup`
|
|
171
|
+
|
|
172
|
+
- Quando usar: entidade com `id + descricao`, busca operacional, confirmacao de identidade
|
|
173
|
+
- Quando evitar: simples select local
|
|
174
|
+
- Shape do valor: objeto ou id final, conforme `optionValueKey`
|
|
175
|
+
- Snippet:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{ "name": "customerId", "controlType": "inlineEntityLookup", "resourcePath": "/customers/options" }
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
- UX note: sempre explicite `optionLabelKey` e `optionValueKey`
|
|
182
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
|
|
183
|
+
|
|
184
|
+
### <span id="inline-autocomplete"></span>`inlineAutocomplete`
|
|
185
|
+
|
|
186
|
+
- Quando usar: sugestao incremental com escolha unica
|
|
187
|
+
- Quando evitar: lookup rico com mais de um identificador
|
|
188
|
+
- Shape do valor: valor simples ou option object
|
|
189
|
+
- Snippet:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{ "name": "city", "controlType": "inlineAutocomplete", "resourcePath": "/cities/options" }
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
- UX note: autocomplete inline exige placeholder claro e feedback de carregamento
|
|
196
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
|
|
197
|
+
|
|
198
|
+
## 4. Numero e moeda
|
|
199
|
+
|
|
200
|
+
### <span id="inline-number"></span>`inlineNumber`
|
|
201
|
+
|
|
202
|
+
- Quando usar: valor numerico unico, score absoluto, quantidade
|
|
203
|
+
- Quando evitar: quando o dominio e intervalo, nao valor pontual
|
|
204
|
+
- Shape do valor: `number`
|
|
205
|
+
- Snippet:
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{ "name": "attempts", "controlType": "inlineNumber", "min": 0, "max": 100 }
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
- UX note: use `suffix` ou `%` quando o numero isolado puder ser ambiguo
|
|
212
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
|
|
213
|
+
|
|
214
|
+
### <span id="inline-currency"></span>`inlineCurrency`
|
|
215
|
+
|
|
216
|
+
- Quando usar: valor monetario unico
|
|
217
|
+
- Quando evitar: faixa monetaria
|
|
218
|
+
- Shape do valor: `number`
|
|
219
|
+
- Snippet:
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{ "name": "ticket", "controlType": "inlineCurrency", "currency": "BRL", "locale": "pt-BR" }
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
- UX note: compacte moeda, mas nao esconda contexto de locale
|
|
226
|
+
- Docs relacionadas: `dynamic-filter-backend-contract-cheatsheet`
|
|
227
|
+
|
|
228
|
+
## 5. Range
|
|
229
|
+
|
|
230
|
+
### <span id="inline-currency-range"></span>`inlineCurrencyRange`
|
|
231
|
+
|
|
232
|
+
- Quando usar: preco, budget, ticket medio, contrato
|
|
233
|
+
- Quando evitar: valor pontual
|
|
234
|
+
- Shape do valor: `{ minPrice?, maxPrice?, currency? }`
|
|
235
|
+
- Snippet:
|
|
236
|
+
|
|
237
|
+
```json
|
|
238
|
+
{ "name": "salaryRange", "controlType": "inlineCurrencyRange", "currency": "BRL" }
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
- UX note: resumo na pill deve deixar claro lower/upper bound
|
|
242
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
243
|
+
|
|
244
|
+
### <span id="inline-range"></span>`inlineRange`
|
|
245
|
+
|
|
246
|
+
- Quando usar: range numerico generico, slider simples ou duplo
|
|
247
|
+
- Quando evitar: data, hora ou semantica monetaria
|
|
248
|
+
- Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
|
|
249
|
+
- Snippet:
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{ "name": "scoreRange", "controlType": "inlineRange", "min": 0, "max": 10, "mode": "range" }
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
- UX note: use presets apenas quando houver ganho real de velocidade
|
|
256
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
257
|
+
|
|
258
|
+
### <span id="inline-rating"></span>`inlineRating`
|
|
259
|
+
|
|
260
|
+
- Tier editorial: `graphic specialized`
|
|
261
|
+
- Quando usar: score visual, rating, classificacao por estrelas
|
|
262
|
+
- Quando evitar: se o backend so entende numero bruto sem ganho semantico ou se o usuario pensa em faixa numerica simples
|
|
263
|
+
- Shape do valor: `{ start?, end? }`
|
|
264
|
+
- Snippet:
|
|
265
|
+
|
|
266
|
+
```json
|
|
267
|
+
{ "name": "rating", "controlType": "inlineRating", "max": 5 }
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
- UX note: explicite se a leitura eh valor unico ou faixa e mantenha fallback textual claro na pill
|
|
271
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
272
|
+
|
|
273
|
+
### <span id="inline-distance-radius"></span>`inlineDistanceRadius`
|
|
274
|
+
|
|
275
|
+
- Tier editorial: `graphic specialized`
|
|
276
|
+
- Quando usar: raio de busca, distancia operacional, proximidade
|
|
277
|
+
- Quando evitar: range numerico generico sem semantica espacial ou quando a unidade varia por contexto
|
|
278
|
+
- Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
|
|
279
|
+
- Snippet:
|
|
280
|
+
|
|
281
|
+
```json
|
|
282
|
+
{ "name": "radius", "controlType": "inlineDistanceRadius", "unit": "km" }
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
- UX note: sempre mostre unidade e evite esse inline quando o usuario precisar comparar varios sistemas de medida
|
|
286
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
287
|
+
|
|
288
|
+
### <span id="inline-score-priority"></span>`inlineScorePriority`
|
|
289
|
+
|
|
290
|
+
- Tier editorial: `graphic specialized`
|
|
291
|
+
- Quando usar: score com bandas, prioridade, criticidade
|
|
292
|
+
- Quando evitar: numero simples sem valor visual
|
|
293
|
+
- Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
|
|
294
|
+
- Snippet:
|
|
295
|
+
|
|
296
|
+
```json
|
|
297
|
+
{ "name": "priority", "controlType": "inlineScorePriority", "min": 1, "max": 10 }
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
- UX note: a legenda visual precisa bater com a semantica do dominio; sem legenda confiavel, prefira `inlineRange`
|
|
301
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
|
|
302
|
+
|
|
303
|
+
## 6. Data e tempo
|
|
304
|
+
|
|
305
|
+
### <span id="inline-date"></span>`inlineDate`
|
|
306
|
+
|
|
307
|
+
- Quando usar: data unica
|
|
308
|
+
- Quando evitar: periodo completo
|
|
309
|
+
- Shape do valor: `Date`
|
|
310
|
+
- Snippet:
|
|
311
|
+
|
|
312
|
+
```json
|
|
313
|
+
{ "name": "createdAt", "controlType": "inlineDate", "label": "Criado em" }
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
- UX note: o host precisa serializar e alinhar timezone com backend
|
|
317
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
|
|
318
|
+
|
|
319
|
+
### <span id="inline-date-range"></span>`inlineDateRange`
|
|
320
|
+
|
|
321
|
+
- Quando usar: janela temporal, periodo de analise, atalhos como hoje/7 dias
|
|
322
|
+
- Quando evitar: quando a toolbar ja esta saturada
|
|
323
|
+
- Shape do valor: `{ startDate?, endDate? }`
|
|
324
|
+
- Snippet:
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{ "name": "period", "controlType": "inlineDateRange", "showShortcuts": true }
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
- UX note: shortcuts nao podem mascarar o shape final enviado ao backend
|
|
331
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
332
|
+
|
|
333
|
+
### <span id="inline-time"></span>`inlineTime`
|
|
334
|
+
|
|
335
|
+
- Quando usar: horario unico
|
|
336
|
+
- Quando evitar: se o usuario pensa em data ou periodo relativo
|
|
337
|
+
- Shape do valor: string `HH:mm`
|
|
338
|
+
- Snippet:
|
|
339
|
+
|
|
340
|
+
```json
|
|
341
|
+
{ "name": "hour", "controlType": "inlineTime" }
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
- UX note: sempre mantenha estado vazio claramente distinguivel
|
|
345
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
|
|
346
|
+
|
|
347
|
+
### <span id="inline-time-range"></span>`inlineTimeRange`
|
|
348
|
+
|
|
349
|
+
- Quando usar: turno, janela operacional, horario de atendimento
|
|
350
|
+
- Quando evitar: quando o backend espera `LocalDateTime`
|
|
351
|
+
- Shape do valor: `{ start?, end? }` com strings `HH:mm`
|
|
352
|
+
- Snippet:
|
|
353
|
+
|
|
354
|
+
```json
|
|
355
|
+
{ "name": "workHour", "controlType": "inlineTimeRange" }
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
- UX note: valide bound invertido e fallback de clear
|
|
359
|
+
- Docs relacionadas: `dynamic-filter-range-filters-guide`
|
|
360
|
+
|
|
361
|
+
## 7. Arvore
|
|
362
|
+
|
|
363
|
+
### <span id="inline-tree-select"></span>`inlineTreeSelect`
|
|
364
|
+
|
|
365
|
+
- Tier editorial: `advanced compact`
|
|
366
|
+
- Quando usar: taxonomia, estrutura hierarquica ou unidade organizacional com selecao de no unico e profundidade curta
|
|
367
|
+
- Quando evitar: arvore profunda demais para toolbar, necessidade de expandir varios ramos ou revisao visual da estrutura completa
|
|
368
|
+
- Shape do valor: valor simples do no
|
|
369
|
+
- Snippet:
|
|
370
|
+
|
|
371
|
+
```json
|
|
372
|
+
{ "name": "orgUnit", "controlType": "inlineTreeSelect", "nodes": [] }
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
- UX note: preserve contraste, foco e navegacao por teclado no popover; se o usuario precisar "navegar a arvore para pensar", mova o caso para o filtro avancado
|
|
376
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
|
|
377
|
+
|
|
378
|
+
## 8. Semanticos especializados
|
|
379
|
+
|
|
380
|
+
### <span id="inline-pipeline-status"></span>`inlinePipelineStatus`
|
|
381
|
+
|
|
382
|
+
- Tier editorial: `graphic specialized`
|
|
383
|
+
- Quando usar: pipeline comercial, esteira, estado operacional
|
|
384
|
+
- Quando evitar: status simples de enum
|
|
385
|
+
- Shape do valor: valor simples ou `unknown[]`
|
|
386
|
+
- Snippet:
|
|
387
|
+
|
|
388
|
+
```json
|
|
389
|
+
{ "name": "pipelineStatus", "controlType": "inlinePipelineStatus", "options": [] }
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
- UX note: nao use se o desenho visual nao agrega mais do que um select; esse componente precisa representar uma jornada operacional reconhecivel
|
|
393
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
|
|
394
|
+
|
|
395
|
+
### <span id="inline-relative-period"></span>`inlineRelativePeriod`
|
|
396
|
+
|
|
397
|
+
- Tier editorial: `graphic specialized`
|
|
398
|
+
- Quando usar: hoje, ontem, ultimos 7 dias, este mes
|
|
399
|
+
- Quando evitar: quando a API nao usa a trilha canonica de filtros da plataforma, nao normaliza presets relativos ou quando o time precisa de rastreabilidade exata por data
|
|
400
|
+
- Shape do valor: `string`
|
|
401
|
+
- Snippet:
|
|
402
|
+
|
|
403
|
+
```json
|
|
404
|
+
{ "name": "periodPreset", "controlType": "inlineRelativePeriod" }
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
- UX note: com `praxis-metadata-starter`, presets suportados sao normalizados automaticamente para `onDate`, `lastDays` ou `between`; fora dessa trilha, documente a semantica HTTP equivalente e prefira `inlineDateRange`
|
|
408
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
|
|
409
|
+
|
|
410
|
+
### <span id="inline-sentiment"></span>`inlineSentiment`
|
|
411
|
+
|
|
412
|
+
- Tier editorial: `graphic specialized`
|
|
413
|
+
- Quando usar: sentimento, humor, polaridade
|
|
414
|
+
- Quando evitar: quando o backend ja usa enum simples sem ganho visual
|
|
415
|
+
- Shape do valor: `string`
|
|
416
|
+
- Snippet:
|
|
417
|
+
|
|
418
|
+
```json
|
|
419
|
+
{ "name": "sentiment", "controlType": "inlineSentiment" }
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
- UX note: contraste e rotulagem textual continuam obrigatorios; se a leitura final depender de cor ou emoji, o componente esta mal curado
|
|
423
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
|
|
424
|
+
|
|
425
|
+
### <span id="inline-color-label"></span>`inlineColorLabel`
|
|
426
|
+
|
|
427
|
+
- Tier editorial: `graphic specialized`
|
|
428
|
+
- Quando usar: tags coloridas, labels semanticas, squads, categorias visuais
|
|
429
|
+
- Quando evitar: quando a cor eh o unico canal de significado
|
|
430
|
+
- Shape do valor: valor simples ou `unknown[]`
|
|
431
|
+
- Snippet:
|
|
432
|
+
|
|
433
|
+
```json
|
|
434
|
+
{ "name": "labels", "controlType": "inlineColorLabel", "options": [] }
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
- UX note: siga WCAG AA e nao dependa apenas de cor; sem texto curto e consistente, prefira `inlineMultiSelect`
|
|
438
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
|
|
439
|
+
|
|
440
|
+
## 9. Toggle
|
|
441
|
+
|
|
442
|
+
### <span id="inline-toggle"></span>`inlineToggle`
|
|
443
|
+
|
|
444
|
+
- Quando usar: booleano com estado neutro
|
|
445
|
+
- Quando evitar: quando `false` e `null` significam coisas diferentes e nao estao documentadas
|
|
446
|
+
- Shape do valor: `boolean | null`
|
|
447
|
+
- Snippet:
|
|
448
|
+
|
|
449
|
+
```json
|
|
450
|
+
{ "name": "active", "controlType": "inlineToggle" }
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
- UX note: `clear` deve voltar para neutro, nao para `false`
|
|
454
|
+
- Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
|
|
455
|
+
|
|
456
|
+
## Nota editorial importante
|
|
457
|
+
|
|
458
|
+
`praxis-table/docs/dynamic-inline-filter-catalog.md` continua sendo a visao de feature e jornada.
|
|
459
|
+
|
|
460
|
+
Este documento eh a visao de componente e implementacao.
|
|
461
|
+
|
|
462
|
+
Regra de governanca:
|
|
463
|
+
|
|
464
|
+
- `praxis-table`: documenta jornada, payload e operacao da feature de filtro;
|
|
465
|
+
- `@praxisui/dynamic-fields`: documenta e publica os componentes inline reutilizaveis;
|
|
466
|
+
- hosts oficiais devem consumir o catalogo exportado da lib, nao reconstruir uma lista inline paralela.
|
|
467
|
+
|
|
468
|
+
Regra para ranges Java:
|
|
469
|
+
|
|
470
|
+
- quando o backend usar operacoes `BETWEEN`, `BETWEEN_EXCLUSIVE`, `NOT_BETWEEN` ou `OUTSIDE_RANGE`, o valor simples `number` nao e payload HTTP valido; configure o inline em `mode: "range"` ou use um controle de range dedicado.
|
|
471
|
+
|
|
472
|
+
## Comparativos rapidos de curadoria
|
|
473
|
+
|
|
474
|
+
### Prefira `inlineSelect` em vez de `inlinePipelineStatus` quando
|
|
475
|
+
|
|
476
|
+
- o valor final for um enum simples
|
|
477
|
+
- nao houver jornada operacional clara por etapas
|
|
478
|
+
- a pill precisar permanecer discreta na toolbar
|
|
479
|
+
|
|
480
|
+
### Prefira `inlineDateRange` em vez de `inlineRelativePeriod` quando
|
|
481
|
+
|
|
482
|
+
- o time precisa de rastreabilidade exata por data
|
|
483
|
+
- o backend nao normaliza presets relativos de forma canonica
|
|
484
|
+
- usuarios auditam o filtro pelo valor final, nao pelo atalho semantico
|
|
485
|
+
|
|
486
|
+
### Prefira `inlineRange` em vez de `inlineRating` ou `inlineScorePriority` quando
|
|
487
|
+
|
|
488
|
+
- a pessoa usuaria pensa em numero bruto
|
|
489
|
+
- nao existe legenda de dominio forte
|
|
490
|
+
- o valor precisa ser comparado com facilidade entre telas
|
|
491
|
+
|
|
492
|
+
### Prefira `inlineMultiSelect` em vez de `inlineColorLabel` quando
|
|
493
|
+
|
|
494
|
+
- a cor nao for semanticamente confiavel
|
|
495
|
+
- o estado final precisar continuar claro em acessibilidade
|
|
496
|
+
- o usuario reconhecer a categoria pelo texto, nao pelo badge
|
|
497
|
+
|
|
498
|
+
### Prefira filtro avancado em vez de `inlineTreeSelect` quando
|
|
499
|
+
|
|
500
|
+
- a arvore tiver muitos niveis
|
|
501
|
+
- a decisao depender de explorar varios ramos
|
|
502
|
+
- a pessoa usuaria precisar revisar a estrutura para confiar no filtro ativo
|