@praxisui/table 1.0.0-beta.48 → 1.0.0-beta.52
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 +60 -8
- package/fesm2022/praxisui-table.mjs +130 -51
- package/fesm2022/praxisui-table.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Table"
|
|
3
|
+
slug: "table-overview"
|
|
4
|
+
description: "Visao geral do @praxisui/table com TableConfig unificada, filtros, renderers, performance e integracao enterprise."
|
|
5
|
+
doc_type: "reference"
|
|
6
|
+
document_kind: "component-overview"
|
|
7
|
+
component: "table"
|
|
8
|
+
category: "components"
|
|
9
|
+
audience:
|
|
10
|
+
- "frontend"
|
|
11
|
+
- "host"
|
|
12
|
+
- "architect"
|
|
13
|
+
level: "intermediate"
|
|
14
|
+
status: "active"
|
|
15
|
+
owner: "praxis-ui"
|
|
16
|
+
tags:
|
|
17
|
+
- "table"
|
|
18
|
+
- "tableconfig"
|
|
19
|
+
- "filters"
|
|
20
|
+
- "renderers"
|
|
21
|
+
- "enterprise"
|
|
22
|
+
order: 25
|
|
23
|
+
icon: "table_chart"
|
|
24
|
+
toc: true
|
|
25
|
+
sidebar: true
|
|
26
|
+
search_boost: 1.0
|
|
27
|
+
reading_time: 14
|
|
28
|
+
estimated_setup_time: 25
|
|
29
|
+
version: "1.0"
|
|
30
|
+
related_docs:
|
|
31
|
+
- "dynamic-filter-architecture-overview"
|
|
32
|
+
- "dynamic-filter-host-integration-guide"
|
|
33
|
+
- "dynamic-filter-payload-contract"
|
|
34
|
+
- "dynamic-filter-range-filters-guide"
|
|
35
|
+
- "dynamic-filter-editor-settings-guide"
|
|
36
|
+
- "dynamic-filter-inline-catalog"
|
|
37
|
+
- "dynamic-filter-troubleshooting-guide"
|
|
38
|
+
- "dynamic-filter-backend-contract-cheatsheet"
|
|
39
|
+
- "adr-dynamic-filter-cross-lib-coupling-2026-03"
|
|
40
|
+
- "host-integration-guide"
|
|
41
|
+
- "consumer-integration-quickstart"
|
|
42
|
+
keywords:
|
|
43
|
+
- "TableConfig"
|
|
44
|
+
- "filters"
|
|
45
|
+
- "renderers"
|
|
46
|
+
- "performance"
|
|
47
|
+
- "dynamic filter"
|
|
48
|
+
last_updated: "2026-03-07"
|
|
49
|
+
---
|
|
50
|
+
|
|
1
51
|
# @praxisui/table
|
|
2
52
|
|
|
3
53
|
## 🔰 Exemplos / Quickstart
|
|
@@ -50,7 +100,7 @@ Nota: a classe de tema é decisão do host (`.dark-theme` ou `.theme-dark`/`.the
|
|
|
50
100
|
|
|
51
101
|
### 📄 Contrato Inline do Filtro
|
|
52
102
|
|
|
53
|
-
- Referencia canonica: `projects/praxis-dynamic-fields/docs/filter-inline-components-guide.md`
|
|
103
|
+
- Referencia canonica: `projects/praxis-dynamic-fields/docs/filter-inline-components-guide.md` (slug publicado: `dynamic-fields-filter-inline-components-guide`)
|
|
54
104
|
- No contexto da tabela, use este contrato para definir `controlType` inline e politica de compatibilidade (canonica vs legado).
|
|
55
105
|
|
|
56
106
|
### 🧭 Decisoes de Arquitetura (ADR)
|
|
@@ -313,7 +363,7 @@ Neste exemplo:
|
|
|
313
363
|
|
|
314
364
|
- `resourcePath="human-resources/departamentos"` instrui a tabela a se comunicar com o endpoint `/api/human-resources/departamentos`.
|
|
315
365
|
- A tabela fará requisições como `POST /api/human-resources/departamentos/filter` para obter os dados e `GET /api/human-resources/departamentos/schemas` para obter a configuração das colunas.
|
|
316
|
-
- `[editModeEnabled]="
|
|
366
|
+
- `editModeEnabled` controla explicitamente o gate de edição visual. No runtime atual o default já é `true`; declare `[editModeEnabled]="false"` quando o host precisar publicar a tabela em modo estritamente read-only.
|
|
317
367
|
|
|
318
368
|
### Empty State + Quick Connect (sem `resourcePath`)
|
|
319
369
|
|
|
@@ -628,12 +678,13 @@ sequenceDiagram
|
|
|
628
678
|
|
|
629
679
|
- Inputs (efetivos apenas quando `editModeEnabled = true`):
|
|
630
680
|
- `notifyIfOutdated: 'inline' | 'snackbar' | 'both' | 'none' = 'both'`
|
|
631
|
-
- `snoozeMs: number = 86400000`
|
|
681
|
+
- `snoozeMs: number = 86400000`
|
|
632
682
|
- `autoOpenSettingsOnOutdated: boolean = false`
|
|
683
|
+
- `dslFunctionRegistry: FunctionRegistry<any> | null = null`
|
|
633
684
|
- Outputs:
|
|
634
|
-
- `schemaStatusChange: { outdated: boolean; serverHash?: string; lastVerifiedAt?: string;
|
|
685
|
+
- `schemaStatusChange: { outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string }`
|
|
635
686
|
- Emitido tanto na verificação leve (304/200) quanto no bootstrap do schema (primeira carga via `loadSchema()`).
|
|
636
|
-
- `metadataChange: { meta: any;
|
|
687
|
+
- `metadataChange: { trigger: string; meta: any; tableId?: string }`
|
|
637
688
|
- Emitido quando `config.meta` é atualizado (ex.: após bootstrap ou verificação ETag). Útil para sincronizar sidebars/bridges de metadados.
|
|
638
689
|
|
|
639
690
|
### Fallback Global (opcional)
|
|
@@ -889,7 +940,7 @@ sequenceDiagram
|
|
|
889
940
|
|
|
890
941
|
## 🎨 Edição Visual da Tabela: O Poder do Low-Code
|
|
891
942
|
|
|
892
|
-
A `<praxis-table>` vem com um poderoso editor de configuração visual que permite personalizar quase todos os aspectos da sua tabela em tempo real, sem escrever uma única linha de código.
|
|
943
|
+
A `<praxis-table>` vem com um poderoso editor de configuração visual que permite personalizar quase todos os aspectos da sua tabela em tempo real, sem escrever uma única linha de código. No runtime atual, o editor já nasce habilitado por padrão; use `[editModeEnabled]="false"` quando o host precisar bloquear customização e manter a tabela em modo estritamente operacional.
|
|
893
944
|
|
|
894
945
|
A seguir, veja os principais recursos que você pode configurar visualmente:
|
|
895
946
|
|
|
@@ -1361,11 +1412,12 @@ Veja também: `docs/host-crud-integration.md` (guia operacional host) e `project
|
|
|
1361
1412
|
|
|
1362
1413
|
- Inputs (efetivos apenas quando `editModeEnabled = true`):
|
|
1363
1414
|
- `editModeEnabled: boolean` — habilita o gate de customização para notificações de schema.
|
|
1364
|
-
- `notifyIfOutdated: 'inline' | 'snackbar' | 'both' | 'none' = 'both'` —
|
|
1415
|
+
- `notifyIfOutdated: 'inline' | 'snackbar' | 'both' | 'none' = 'both'` — seleciona como o runtime publica avisos de drift quando a política operacional estiver habilitada.
|
|
1365
1416
|
- `snoozeMs: number = 86400000` — tempo de soneca para avisos (ms).
|
|
1366
1417
|
- `autoOpenSettingsOnOutdated: boolean = false` — abre Configurações ao detectar schema desatualizado.
|
|
1418
|
+
- `dslFunctionRegistry: FunctionRegistry<any> | null = null` — adiciona funções DSL custom sem substituir o registry nativo.
|
|
1367
1419
|
- Output:
|
|
1368
|
-
- `schemaStatusChange: { outdated: boolean; serverHash?: string; lastVerifiedAt?: string;
|
|
1420
|
+
- `schemaStatusChange: { outdated: boolean; serverHash?: string; lastVerifiedAt?: string; tableId?: string }` — emitido após verificação leve (304/200).
|
|
1369
1421
|
|
|
1370
1422
|
#### Fallback Global (opcional)
|
|
1371
1423
|
|
|
@@ -21146,7 +21146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
21146
21146
|
type: Output
|
|
21147
21147
|
}] } });
|
|
21148
21148
|
|
|
21149
|
-
const { SELECT: FILTER_INLINE_SELECT_CONTROL_TYPE$1, SEARCHABLE_SELECT: FILTER_INLINE_SEARCHABLE_SELECT_CONTROL_TYPE$1, MULTI_SELECT: FILTER_INLINE_MULTI_SELECT_CONTROL_TYPE$1, INPUT: FILTER_INLINE_INPUT_CONTROL_TYPE$1, TOGGLE: FILTER_INLINE_TOGGLE_CONTROL_TYPE$1, RANGE: FILTER_INLINE_RANGE_CONTROL_TYPE$1, ASYNC_SELECT: FILTER_INLINE_ASYNC_SELECT_CONTROL_TYPE$1, ENTITY_LOOKUP: FILTER_INLINE_ENTITY_LOOKUP_CONTROL_TYPE$1, AUTOCOMPLETE: FILTER_INLINE_AUTOCOMPLETE_CONTROL_TYPE$1, NUMBER: FILTER_INLINE_NUMBER_CONTROL_TYPE$1, CURRENCY: FILTER_INLINE_CURRENCY_CONTROL_TYPE$1, CURRENCY_RANGE: FILTER_INLINE_CURRENCY_RANGE_CONTROL_TYPE$1, DATE: FILTER_INLINE_DATE_CONTROL_TYPE$1, DATE_RANGE: FILTER_INLINE_DATE_RANGE_CONTROL_TYPE$1, TIME: FILTER_INLINE_TIME_CONTROL_TYPE$1, TIME_RANGE: FILTER_INLINE_TIME_RANGE_CONTROL_TYPE$1, TREE_SELECT: FILTER_INLINE_TREE_SELECT_CONTROL_TYPE$1, RATING: FILTER_INLINE_RATING_CONTROL_TYPE$1, DISTANCE_RADIUS: FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE$1, PIPELINE_STATUS: FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE$1, SCORE_PRIORITY: FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE$1, RELATIVE_PERIOD: FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE, SENTIMENT: FILTER_INLINE_SENTIMENT_CONTROL_TYPE, COLOR_LABEL: FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE, } = INLINE_FILTER_CONTROL_TYPES;
|
|
21149
|
+
const { SELECT: FILTER_INLINE_SELECT_CONTROL_TYPE$1, SEARCHABLE_SELECT: FILTER_INLINE_SEARCHABLE_SELECT_CONTROL_TYPE$1, MULTI_SELECT: FILTER_INLINE_MULTI_SELECT_CONTROL_TYPE$1, INPUT: FILTER_INLINE_INPUT_CONTROL_TYPE$1, TOGGLE: FILTER_INLINE_TOGGLE_CONTROL_TYPE$1, RANGE: FILTER_INLINE_RANGE_CONTROL_TYPE$1, ASYNC_SELECT: FILTER_INLINE_ASYNC_SELECT_CONTROL_TYPE$1, ENTITY_LOOKUP: FILTER_INLINE_ENTITY_LOOKUP_CONTROL_TYPE$1, AUTOCOMPLETE: FILTER_INLINE_AUTOCOMPLETE_CONTROL_TYPE$1, NUMBER: FILTER_INLINE_NUMBER_CONTROL_TYPE$1, CURRENCY: FILTER_INLINE_CURRENCY_CONTROL_TYPE$1, CURRENCY_RANGE: FILTER_INLINE_CURRENCY_RANGE_CONTROL_TYPE$1, DATE: FILTER_INLINE_DATE_CONTROL_TYPE$1, DATE_RANGE: FILTER_INLINE_DATE_RANGE_CONTROL_TYPE$1, TIME: FILTER_INLINE_TIME_CONTROL_TYPE$1, TIME_RANGE: FILTER_INLINE_TIME_RANGE_CONTROL_TYPE$1, TREE_SELECT: FILTER_INLINE_TREE_SELECT_CONTROL_TYPE$1, RATING: FILTER_INLINE_RATING_CONTROL_TYPE$1, DISTANCE_RADIUS: FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE$1, PIPELINE_STATUS: FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE$1, SCORE_PRIORITY: FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE$1, RELATIVE_PERIOD: FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1, SENTIMENT: FILTER_INLINE_SENTIMENT_CONTROL_TYPE$1, COLOR_LABEL: FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE$1, } = INLINE_FILTER_CONTROL_TYPES;
|
|
21150
21150
|
const KNOWN_FILTER_SETTINGS_CONTROL_TYPES = new Set([
|
|
21151
21151
|
...Object.values(FieldControlType).map((type) => String(type).toLowerCase()),
|
|
21152
21152
|
...INLINE_FILTER_CONTROL_TYPE_VALUES,
|
|
@@ -21201,9 +21201,9 @@ const CONTROL_TYPE_LABELS = {
|
|
|
21201
21201
|
[FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE$1]: 'Raio de distancia inline',
|
|
21202
21202
|
[FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE$1]: 'Pipeline de status inline',
|
|
21203
21203
|
[FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE$1]: 'Score/prioridade inline',
|
|
21204
|
-
[FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE]: 'Periodo relativo inline',
|
|
21205
|
-
[FILTER_INLINE_SENTIMENT_CONTROL_TYPE]: 'Sentimento inline',
|
|
21206
|
-
[FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE]: 'Cor/label inline',
|
|
21204
|
+
[FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1]: 'Periodo relativo inline',
|
|
21205
|
+
[FILTER_INLINE_SENTIMENT_CONTROL_TYPE$1]: 'Sentimento inline',
|
|
21206
|
+
[FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE$1]: 'Cor/label inline',
|
|
21207
21207
|
[String(FieldControlType.CURRENCY_INPUT).toLowerCase()]: 'Moeda',
|
|
21208
21208
|
[String(FieldControlType.PRICE_RANGE).toLowerCase()]: 'Faixa monetária',
|
|
21209
21209
|
[String(FieldControlType.TOGGLE).toLowerCase()]: 'Toggle',
|
|
@@ -21253,9 +21253,9 @@ const CONTROL_TYPE_WIDTH_HINTS = {
|
|
|
21253
21253
|
[FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE$1]: '188-360px',
|
|
21254
21254
|
[FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE$1]: '188-420px',
|
|
21255
21255
|
[FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE$1]: '182-340px',
|
|
21256
|
-
[FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE]: '186-360px',
|
|
21257
|
-
[FILTER_INLINE_SENTIMENT_CONTROL_TYPE]: '186-360px',
|
|
21258
|
-
[FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE]: '186-360px',
|
|
21256
|
+
[FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1]: '186-360px',
|
|
21257
|
+
[FILTER_INLINE_SENTIMENT_CONTROL_TYPE$1]: '186-360px',
|
|
21258
|
+
[FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE$1]: '186-360px',
|
|
21259
21259
|
[FILTER_INLINE_MULTI_SELECT_CONTROL_TYPE$1]: '100-320px',
|
|
21260
21260
|
[FILTER_INLINE_RANGE_CONTROL_TYPE$1]: '120-300px',
|
|
21261
21261
|
[FILTER_INLINE_TOGGLE_CONTROL_TYPE$1]: '76-320px',
|
|
@@ -22053,6 +22053,18 @@ class FilterSettingsComponent {
|
|
|
22053
22053
|
token === normalizeControlTypeToken('filter-inline-score-priority')) {
|
|
22054
22054
|
return FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE$1;
|
|
22055
22055
|
}
|
|
22056
|
+
if (token === normalizeControlTypeToken(FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1) ||
|
|
22057
|
+
token === normalizeControlTypeToken('filter-inline-relative-period')) {
|
|
22058
|
+
return FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1;
|
|
22059
|
+
}
|
|
22060
|
+
if (token === normalizeControlTypeToken(FILTER_INLINE_SENTIMENT_CONTROL_TYPE$1) ||
|
|
22061
|
+
token === normalizeControlTypeToken('filter-inline-sentiment')) {
|
|
22062
|
+
return FILTER_INLINE_SENTIMENT_CONTROL_TYPE$1;
|
|
22063
|
+
}
|
|
22064
|
+
if (token === normalizeControlTypeToken(FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE$1) ||
|
|
22065
|
+
token === normalizeControlTypeToken('filter-inline-color-label')) {
|
|
22066
|
+
return FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE$1;
|
|
22067
|
+
}
|
|
22056
22068
|
if (token === selectToken)
|
|
22057
22069
|
return FILTER_INLINE_SELECT_CONTROL_TYPE$1;
|
|
22058
22070
|
if (token === searchableSelectToken ||
|
|
@@ -28934,7 +28946,7 @@ const DEFAULT_I18N = {
|
|
|
28934
28946
|
shortcutRemoved: 'Atalho removido',
|
|
28935
28947
|
undo: 'Desfazer',
|
|
28936
28948
|
};
|
|
28937
|
-
const { SELECT: FILTER_INLINE_SELECT_CONTROL_TYPE, SEARCHABLE_SELECT: FILTER_INLINE_SEARCHABLE_SELECT_CONTROL_TYPE, MULTI_SELECT: FILTER_INLINE_MULTI_SELECT_CONTROL_TYPE, INPUT: FILTER_INLINE_INPUT_CONTROL_TYPE, TOGGLE: FILTER_INLINE_TOGGLE_CONTROL_TYPE, RANGE: FILTER_INLINE_RANGE_CONTROL_TYPE, DATE: FILTER_INLINE_DATE_CONTROL_TYPE, DATE_RANGE: FILTER_INLINE_DATE_RANGE_CONTROL_TYPE, ASYNC_SELECT: FILTER_INLINE_ASYNC_SELECT_CONTROL_TYPE, ENTITY_LOOKUP: FILTER_INLINE_ENTITY_LOOKUP_CONTROL_TYPE, AUTOCOMPLETE: FILTER_INLINE_AUTOCOMPLETE_CONTROL_TYPE, NUMBER: FILTER_INLINE_NUMBER_CONTROL_TYPE, CURRENCY: FILTER_INLINE_CURRENCY_CONTROL_TYPE, CURRENCY_RANGE: FILTER_INLINE_CURRENCY_RANGE_CONTROL_TYPE, TIME: FILTER_INLINE_TIME_CONTROL_TYPE, TIME_RANGE: FILTER_INLINE_TIME_RANGE_CONTROL_TYPE, TREE_SELECT: FILTER_INLINE_TREE_SELECT_CONTROL_TYPE, RATING: FILTER_INLINE_RATING_CONTROL_TYPE, DISTANCE_RADIUS: FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE, PIPELINE_STATUS: FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE, SCORE_PRIORITY: FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE, } = INLINE_FILTER_CONTROL_TYPES;
|
|
28949
|
+
const { SELECT: FILTER_INLINE_SELECT_CONTROL_TYPE, SEARCHABLE_SELECT: FILTER_INLINE_SEARCHABLE_SELECT_CONTROL_TYPE, MULTI_SELECT: FILTER_INLINE_MULTI_SELECT_CONTROL_TYPE, INPUT: FILTER_INLINE_INPUT_CONTROL_TYPE, TOGGLE: FILTER_INLINE_TOGGLE_CONTROL_TYPE, RANGE: FILTER_INLINE_RANGE_CONTROL_TYPE, DATE: FILTER_INLINE_DATE_CONTROL_TYPE, DATE_RANGE: FILTER_INLINE_DATE_RANGE_CONTROL_TYPE, ASYNC_SELECT: FILTER_INLINE_ASYNC_SELECT_CONTROL_TYPE, ENTITY_LOOKUP: FILTER_INLINE_ENTITY_LOOKUP_CONTROL_TYPE, AUTOCOMPLETE: FILTER_INLINE_AUTOCOMPLETE_CONTROL_TYPE, NUMBER: FILTER_INLINE_NUMBER_CONTROL_TYPE, CURRENCY: FILTER_INLINE_CURRENCY_CONTROL_TYPE, CURRENCY_RANGE: FILTER_INLINE_CURRENCY_RANGE_CONTROL_TYPE, TIME: FILTER_INLINE_TIME_CONTROL_TYPE, TIME_RANGE: FILTER_INLINE_TIME_RANGE_CONTROL_TYPE, TREE_SELECT: FILTER_INLINE_TREE_SELECT_CONTROL_TYPE, RATING: FILTER_INLINE_RATING_CONTROL_TYPE, DISTANCE_RADIUS: FILTER_INLINE_DISTANCE_RADIUS_CONTROL_TYPE, PIPELINE_STATUS: FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE, SCORE_PRIORITY: FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE, RELATIVE_PERIOD: FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE, SENTIMENT: FILTER_INLINE_SENTIMENT_CONTROL_TYPE, COLOR_LABEL: FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE, } = INLINE_FILTER_CONTROL_TYPES;
|
|
28938
28950
|
const INLINE_DATE_RANGE_CORPORATE_SHORTCUTS = [
|
|
28939
28951
|
'today',
|
|
28940
28952
|
'thisWeek',
|
|
@@ -30757,6 +30769,18 @@ class PraxisFilter {
|
|
|
30757
30769
|
normalizedControlType === 'filter-inline-score-priority' ||
|
|
30758
30770
|
controlTypeToken === 'filterscorepriorityinline' ||
|
|
30759
30771
|
controlTypeToken === 'filterinlinescorepriority';
|
|
30772
|
+
const isInlineRelativePeriodExplicit = normalizedControlType === FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE ||
|
|
30773
|
+
normalizedControlType === 'filter-inline-relative-period' ||
|
|
30774
|
+
controlTypeToken === 'filterrelativeperiodinline' ||
|
|
30775
|
+
controlTypeToken === 'filterinlinerelativeperiod';
|
|
30776
|
+
const isInlineSentimentExplicit = normalizedControlType === FILTER_INLINE_SENTIMENT_CONTROL_TYPE ||
|
|
30777
|
+
normalizedControlType === 'filter-inline-sentiment' ||
|
|
30778
|
+
controlTypeToken === 'filtersentimentinline' ||
|
|
30779
|
+
controlTypeToken === 'filterinlinesentiment';
|
|
30780
|
+
const isInlineColorLabelExplicit = normalizedControlType === FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE ||
|
|
30781
|
+
normalizedControlType === 'filter-inline-color-label' ||
|
|
30782
|
+
controlTypeToken === 'filtercolorlabelinline' ||
|
|
30783
|
+
controlTypeToken === 'filterinlinecolorlabel';
|
|
30760
30784
|
const shouldUseInlineSearchableSelect = this.useInlineSearchableSelectVariant && isSearchableSelect;
|
|
30761
30785
|
const shouldUseInlineAsyncSelect = this.useInlineSearchableSelectVariant && isAsyncSelect;
|
|
30762
30786
|
const shouldUseInlineAutocomplete = this.useInlineSearchableSelectVariant && isAutocomplete;
|
|
@@ -30833,21 +30857,27 @@ class PraxisFilter {
|
|
|
30833
30857
|
? FILTER_INLINE_PIPELINE_STATUS_CONTROL_TYPE
|
|
30834
30858
|
: isInlineScorePriorityExplicit
|
|
30835
30859
|
? FILTER_INLINE_SCORE_PRIORITY_CONTROL_TYPE
|
|
30836
|
-
:
|
|
30837
|
-
?
|
|
30838
|
-
:
|
|
30839
|
-
?
|
|
30840
|
-
:
|
|
30841
|
-
?
|
|
30842
|
-
:
|
|
30843
|
-
?
|
|
30844
|
-
:
|
|
30845
|
-
?
|
|
30846
|
-
:
|
|
30847
|
-
?
|
|
30848
|
-
:
|
|
30849
|
-
?
|
|
30850
|
-
:
|
|
30860
|
+
: isInlineRelativePeriodExplicit
|
|
30861
|
+
? FILTER_INLINE_RELATIVE_PERIOD_CONTROL_TYPE
|
|
30862
|
+
: isInlineSentimentExplicit
|
|
30863
|
+
? FILTER_INLINE_SENTIMENT_CONTROL_TYPE
|
|
30864
|
+
: isInlineColorLabelExplicit
|
|
30865
|
+
? FILTER_INLINE_COLOR_LABEL_CONTROL_TYPE
|
|
30866
|
+
: shouldUseInlineToggle
|
|
30867
|
+
? FILTER_INLINE_TOGGLE_CONTROL_TYPE
|
|
30868
|
+
: shouldUseInlineRange
|
|
30869
|
+
? FILTER_INLINE_RANGE_CONTROL_TYPE
|
|
30870
|
+
: shouldUseInlineDate
|
|
30871
|
+
? FILTER_INLINE_DATE_CONTROL_TYPE
|
|
30872
|
+
: shouldUseInlineDateRange
|
|
30873
|
+
? FILTER_INLINE_DATE_RANGE_CONTROL_TYPE
|
|
30874
|
+
: shouldUseInlineTime
|
|
30875
|
+
? FILTER_INLINE_TIME_CONTROL_TYPE
|
|
30876
|
+
: shouldUseInlineTimeRange
|
|
30877
|
+
? FILTER_INLINE_TIME_RANGE_CONTROL_TYPE
|
|
30878
|
+
: shouldUseInlineTreeSelect
|
|
30879
|
+
? FILTER_INLINE_TREE_SELECT_CONTROL_TYPE
|
|
30880
|
+
: controlType;
|
|
30851
30881
|
const supportsInlineClear = supportsClearButtonControlType(inlineControlType) ||
|
|
30852
30882
|
supportsClearButtonControlType(controlType);
|
|
30853
30883
|
const existingClear = meta.clearButton;
|
|
@@ -32916,8 +32946,8 @@ class PraxisTable {
|
|
|
32916
32946
|
subtitle;
|
|
32917
32947
|
icon;
|
|
32918
32948
|
autoDelete = false;
|
|
32919
|
-
notifyIfOutdated =
|
|
32920
|
-
snoozeMs =
|
|
32949
|
+
notifyIfOutdated = 'both';
|
|
32950
|
+
snoozeMs = 24 * 60 * 60 * 1000;
|
|
32921
32951
|
autoOpenSettingsOnOutdated = false;
|
|
32922
32952
|
crudContext;
|
|
32923
32953
|
dslFunctionRegistry = null;
|
|
@@ -40445,7 +40475,9 @@ class PraxisTable {
|
|
|
40445
40475
|
catch (e) { /* Ignore 404 */ }
|
|
40446
40476
|
if (w && typeof w === 'object') {
|
|
40447
40477
|
// Heuristic: if component inputs equal library defaults, allow widget prefs to override
|
|
40448
|
-
const inputsAreDefaults = (this.notifyIfOutdated ===
|
|
40478
|
+
const inputsAreDefaults = (this.notifyIfOutdated === 'both') &&
|
|
40479
|
+
(this.snoozeMs === 24 * 60 * 60 * 1000) &&
|
|
40480
|
+
(this.autoOpenSettingsOnOutdated === false);
|
|
40449
40481
|
if (inputsAreDefaults) {
|
|
40450
40482
|
resolved = {
|
|
40451
40483
|
notifyIfOutdated: w.notifyIfOutdated ?? resolved.notifyIfOutdated,
|
|
@@ -40462,9 +40494,9 @@ class PraxisTable {
|
|
|
40462
40494
|
const g = this.global.getSchemaPrefsGlobal?.();
|
|
40463
40495
|
if (g && typeof g === 'object') {
|
|
40464
40496
|
resolved = {
|
|
40465
|
-
notifyIfOutdated: (resolved.notifyIfOutdated ?? g.notifyIfOutdated)
|
|
40466
|
-
snoozeMs: (resolved.snoozeMs ?? g.snoozeMs)
|
|
40467
|
-
autoOpenSettingsOnOutdated: (resolved.autoOpenSettingsOnOutdated ?? g.autoOpenSettingsOnOutdated)
|
|
40497
|
+
notifyIfOutdated: (resolved.notifyIfOutdated ?? g.notifyIfOutdated) ?? 'both',
|
|
40498
|
+
snoozeMs: (resolved.snoozeMs ?? g.snoozeMs) ?? 24 * 60 * 60 * 1000,
|
|
40499
|
+
autoOpenSettingsOnOutdated: (resolved.autoOpenSettingsOnOutdated ?? g.autoOpenSettingsOnOutdated) ?? false,
|
|
40468
40500
|
};
|
|
40469
40501
|
}
|
|
40470
40502
|
}
|
|
@@ -40504,7 +40536,13 @@ class PraxisTable {
|
|
|
40504
40536
|
}
|
|
40505
40537
|
shouldShowOutdatedInline() {
|
|
40506
40538
|
const hash = this.config?.meta?.serverHash;
|
|
40507
|
-
|
|
40539
|
+
const inlineEnabled = this.resolvedPrefs.notifyIfOutdated === 'inline' || this.resolvedPrefs.notifyIfOutdated === 'both';
|
|
40540
|
+
return (inlineEnabled &&
|
|
40541
|
+
this.schemaOutdated &&
|
|
40542
|
+
this.editModeEnabled &&
|
|
40543
|
+
!!hash &&
|
|
40544
|
+
!this.isOutdatedIgnored(hash) &&
|
|
40545
|
+
!this.wasOutdatedNotified(hash));
|
|
40508
40546
|
}
|
|
40509
40547
|
onReconcileRequested() {
|
|
40510
40548
|
this.verifyServerSchemaVersion().catch(() => { });
|
|
@@ -40513,7 +40551,7 @@ class PraxisTable {
|
|
|
40513
40551
|
const hash = this.config?.meta?.serverHash;
|
|
40514
40552
|
if (hash) {
|
|
40515
40553
|
// Default snooze 24h
|
|
40516
|
-
const until = new Date(Date.now() + (this.snoozeMs
|
|
40554
|
+
const until = new Date(Date.now() + (this.snoozeMs ?? 24 * 60 * 60 * 1000));
|
|
40517
40555
|
this.setOutdatedSnooze(hash, until);
|
|
40518
40556
|
}
|
|
40519
40557
|
this.schemaOutdated = false;
|
|
@@ -41136,25 +41174,6 @@ const PRAXIS_TABLE_COMPONENT_METADATA = {
|
|
|
41136
41174
|
description: 'Dataset local para modo client-side quando não há resourcePath',
|
|
41137
41175
|
default: null,
|
|
41138
41176
|
},
|
|
41139
|
-
{
|
|
41140
|
-
name: 'filterCriteria',
|
|
41141
|
-
type: 'any',
|
|
41142
|
-
label: 'Filtro',
|
|
41143
|
-
description: 'Filtros aplicados às consultas (JSON)',
|
|
41144
|
-
default: {},
|
|
41145
|
-
},
|
|
41146
|
-
{
|
|
41147
|
-
name: 'showToolbar',
|
|
41148
|
-
type: 'boolean',
|
|
41149
|
-
default: false,
|
|
41150
|
-
description: 'Exibe barra de ferramentas',
|
|
41151
|
-
},
|
|
41152
|
-
{
|
|
41153
|
-
name: 'toolbarV2',
|
|
41154
|
-
type: 'boolean',
|
|
41155
|
-
default: true,
|
|
41156
|
-
description: 'Ativa layout da toolbar v2',
|
|
41157
|
-
},
|
|
41158
41177
|
{
|
|
41159
41178
|
name: 'autoDelete',
|
|
41160
41179
|
type: 'boolean',
|
|
@@ -41164,7 +41183,7 @@ const PRAXIS_TABLE_COMPONENT_METADATA = {
|
|
|
41164
41183
|
{
|
|
41165
41184
|
name: 'editModeEnabled',
|
|
41166
41185
|
type: 'boolean',
|
|
41167
|
-
default:
|
|
41186
|
+
default: true,
|
|
41168
41187
|
description: 'Permite edição de layout',
|
|
41169
41188
|
},
|
|
41170
41189
|
{
|
|
@@ -41185,6 +41204,51 @@ const PRAXIS_TABLE_COMPONENT_METADATA = {
|
|
|
41185
41204
|
type: 'string',
|
|
41186
41205
|
description: 'Identificador estável para instâncias múltiplas da tabela',
|
|
41187
41206
|
},
|
|
41207
|
+
{
|
|
41208
|
+
name: 'title',
|
|
41209
|
+
type: 'string',
|
|
41210
|
+
description: 'Título opcional usado por toolbar, quick connect e surfaces de configuração.',
|
|
41211
|
+
},
|
|
41212
|
+
{
|
|
41213
|
+
name: 'subtitle',
|
|
41214
|
+
type: 'string',
|
|
41215
|
+
description: 'Subtítulo opcional exibido em surfaces auxiliares do runtime.',
|
|
41216
|
+
},
|
|
41217
|
+
{
|
|
41218
|
+
name: 'icon',
|
|
41219
|
+
type: 'string',
|
|
41220
|
+
description: 'Ícone opcional usado em quick connect, settings e affordances do host.',
|
|
41221
|
+
},
|
|
41222
|
+
{
|
|
41223
|
+
name: 'notifyIfOutdated',
|
|
41224
|
+
type: "'inline' | 'snackbar' | 'both' | 'none'",
|
|
41225
|
+
default: 'both',
|
|
41226
|
+
description: 'Publica avisos de drift de schema quando o host habilita notificação operacional.',
|
|
41227
|
+
},
|
|
41228
|
+
{
|
|
41229
|
+
name: 'snoozeMs',
|
|
41230
|
+
type: 'number',
|
|
41231
|
+
default: 86400000,
|
|
41232
|
+
description: 'Janela de snooze para avisos de drift quando a política operacional estiver habilitada.',
|
|
41233
|
+
},
|
|
41234
|
+
{
|
|
41235
|
+
name: 'autoOpenSettingsOnOutdated',
|
|
41236
|
+
type: 'boolean',
|
|
41237
|
+
default: false,
|
|
41238
|
+
description: 'Abre automaticamente o settings panel quando o runtime detecta schema desatualizado.',
|
|
41239
|
+
},
|
|
41240
|
+
{
|
|
41241
|
+
name: 'dslFunctionRegistry',
|
|
41242
|
+
type: 'FunctionRegistry<any> | null',
|
|
41243
|
+
default: null,
|
|
41244
|
+
description: 'Registro adicional de funções DSL para regras, ações e expressões seguras.',
|
|
41245
|
+
},
|
|
41246
|
+
{
|
|
41247
|
+
name: 'crudContext',
|
|
41248
|
+
type: 'any',
|
|
41249
|
+
default: null,
|
|
41250
|
+
description: 'Contexto operacional opcional para overrides de CRUD, incluindo resolução de idField.',
|
|
41251
|
+
},
|
|
41188
41252
|
],
|
|
41189
41253
|
outputs: [
|
|
41190
41254
|
{
|
|
@@ -41261,6 +41325,21 @@ const PRAXIS_TABLE_COMPONENT_METADATA = {
|
|
|
41261
41325
|
type: '{ rows: any[]; error: unknown }',
|
|
41262
41326
|
description: 'Erro ao deletar múltiplas linhas',
|
|
41263
41327
|
},
|
|
41328
|
+
{
|
|
41329
|
+
name: 'schemaStatusChange',
|
|
41330
|
+
type: '{ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string }',
|
|
41331
|
+
description: 'Emitido quando o runtime verifica drift de schema ou atualiza o status de reconciliação',
|
|
41332
|
+
},
|
|
41333
|
+
{
|
|
41334
|
+
name: 'metadataChange',
|
|
41335
|
+
type: '{ trigger: string; meta: any; tableId?: string }',
|
|
41336
|
+
description: 'Emitido quando o runtime atualiza config.meta durante bootstrap, verificação ou aplicação',
|
|
41337
|
+
},
|
|
41338
|
+
{
|
|
41339
|
+
name: 'loadingStateChange',
|
|
41340
|
+
type: 'LoadingState',
|
|
41341
|
+
description: 'Emitido quando a tabela muda de fase de carregamento no runtime',
|
|
41342
|
+
},
|
|
41264
41343
|
],
|
|
41265
41344
|
actions: [
|
|
41266
41345
|
{
|