@praxisui/table 9.0.5-rc.21 → 9.0.5-rc.23
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 +2 -0
- package/ai/component-registry.json +191 -121
- package/fesm2022/{praxisui-table-praxisui-table-KxTp8ZJd.mjs → praxisui-table-praxisui-table-DU4IUCA0.mjs} +113 -4
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-DEyI2Nx5.mjs → praxisui-table-table-agentic-authoring-turn-flow-DG8JgSXX.mjs} +1 -1
- package/fesm2022/{praxisui-table-table-ai.adapter-xSCc4Jg6.mjs → praxisui-table-table-ai.adapter-Fn0WVcY1.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
- package/src/lib/praxis-table.json-api.md +2 -0
- package/types/praxisui-table.d.ts +1 -0
|
@@ -9826,6 +9826,10 @@ const PRAXIS_TABLE_EDITOR_I18N_CONFIG = {
|
|
|
9826
9826
|
'toolbar.action.disabledWhen': 'Desabilitada quando (JSON Logic)',
|
|
9827
9827
|
'toolbar.action.disabledWhen.hint': 'Condição JSON Logic que desabilita a ação por linha. Valor vazio remove a condição.',
|
|
9828
9828
|
'toolbar.action.condition.invalidJson': 'Informe um objeto JSON Logic válido.',
|
|
9829
|
+
'toolbar.collection.title': 'Ações da coleção',
|
|
9830
|
+
'toolbar.collection.description': 'Governe as ações descobertas para toda a coleção',
|
|
9831
|
+
'toolbar.collection.discovery.enabled': 'Descoberta de ações da coleção',
|
|
9832
|
+
'toolbar.collection.discovery.hint': 'Quando habilitada, a tabela pode materializar ações da coleção a partir de links HATEOAS e capabilities.',
|
|
9829
9833
|
'toolbar.row.title': 'Ações por linha',
|
|
9830
9834
|
'toolbar.row.description': 'Ações específicas para cada registro',
|
|
9831
9835
|
'toolbar.row.enabled': 'Habilitar ações por linha',
|
|
@@ -10944,6 +10948,10 @@ const PRAXIS_TABLE_EDITOR_I18N_CONFIG = {
|
|
|
10944
10948
|
'toolbar.action.disabledWhen': 'Disabled when (JSON Logic)',
|
|
10945
10949
|
'toolbar.action.disabledWhen.hint': 'JSON Logic condition that disables the row action. Empty value removes the condition.',
|
|
10946
10950
|
'toolbar.action.condition.invalidJson': 'Enter a valid JSON Logic object.',
|
|
10951
|
+
'toolbar.collection.title': 'Collection actions',
|
|
10952
|
+
'toolbar.collection.description': 'Govern actions discovered for the whole collection',
|
|
10953
|
+
'toolbar.collection.discovery.enabled': 'Collection action discovery',
|
|
10954
|
+
'toolbar.collection.discovery.hint': 'When enabled, the table can materialize collection actions from HATEOAS links and capabilities.',
|
|
10947
10955
|
'toolbar.row.title': 'Row actions',
|
|
10948
10956
|
'toolbar.row.description': 'Specific actions for each record',
|
|
10949
10957
|
'toolbar.row.enabled': 'Enable row actions',
|
|
@@ -22073,6 +22081,7 @@ class ToolbarActionsEditorComponent {
|
|
|
22073
22081
|
if (changes['config'] && this.toolbarForm) {
|
|
22074
22082
|
const toolbar = this.config.toolbar || {};
|
|
22075
22083
|
const v2Config = this.config;
|
|
22084
|
+
const collectionCfg = v2Config.actions?.collection;
|
|
22076
22085
|
const rowCfg = v2Config.actions?.row;
|
|
22077
22086
|
const bulkCfg = v2Config.actions?.bulk;
|
|
22078
22087
|
const beh = rowCfg?.behavior;
|
|
@@ -22089,6 +22098,7 @@ class ToolbarActionsEditorComponent {
|
|
|
22089
22098
|
toolbarActionsPosition: toolbar.actionsPosition || toolbar.position || 'top',
|
|
22090
22099
|
toolbarActionsBackgroundColor: toolbar.actionsBackgroundColor || '',
|
|
22091
22100
|
toolbarHeight: toolbar.layout?.height || toolbar.height || 64,
|
|
22101
|
+
collectionActionsDiscoveryEnabled: collectionCfg?.discovery?.enabled !== false,
|
|
22092
22102
|
rowActionsEnabled: rowCfg?.enabled || false,
|
|
22093
22103
|
rowActionsDisplay: displayUI,
|
|
22094
22104
|
rowActionsTrigger: rowCfg?.trigger || 'always',
|
|
@@ -22133,6 +22143,8 @@ class ToolbarActionsEditorComponent {
|
|
|
22133
22143
|
addButtonColor: ['primary'],
|
|
22134
22144
|
addButtonPosition: ['end'],
|
|
22135
22145
|
addButtonAppearance: ['filled'],
|
|
22146
|
+
// Collection actions
|
|
22147
|
+
collectionActionsDiscoveryEnabled: [true],
|
|
22136
22148
|
// Row actions
|
|
22137
22149
|
rowActionsEnabled: [!!v1Config?.showActionsColumn],
|
|
22138
22150
|
rowActionsDisplay: ['menu'],
|
|
@@ -22176,6 +22188,7 @@ class ToolbarActionsEditorComponent {
|
|
|
22176
22188
|
});
|
|
22177
22189
|
}
|
|
22178
22190
|
if (v2Config.actions) {
|
|
22191
|
+
const collectionCfg = v2Config.actions.collection;
|
|
22179
22192
|
const rowCfg = v2Config.actions.row;
|
|
22180
22193
|
const beh = rowCfg?.behavior;
|
|
22181
22194
|
const displayRaw = rowCfg?.display || 'menu';
|
|
@@ -22183,6 +22196,7 @@ class ToolbarActionsEditorComponent {
|
|
|
22183
22196
|
? 'hybrid'
|
|
22184
22197
|
: displayRaw;
|
|
22185
22198
|
this.toolbarForm.patchValue({
|
|
22199
|
+
collectionActionsDiscoveryEnabled: collectionCfg?.discovery?.enabled !== false,
|
|
22186
22200
|
rowActionsEnabled: rowCfg?.enabled || false,
|
|
22187
22201
|
rowActionsDisplay: displayUI,
|
|
22188
22202
|
rowActionsTrigger: rowCfg?.trigger || 'always',
|
|
@@ -22396,6 +22410,13 @@ class ToolbarActionsEditorComponent {
|
|
|
22396
22410
|
v2Config.toolbar.actions = this.sanitizeToolbarActions(this.toolbarActions);
|
|
22397
22411
|
// Actions
|
|
22398
22412
|
v2Config.actions = v2Config.actions || {};
|
|
22413
|
+
v2Config.actions.collection = {
|
|
22414
|
+
...v2Config.actions.collection,
|
|
22415
|
+
discovery: {
|
|
22416
|
+
...v2Config.actions.collection?.discovery,
|
|
22417
|
+
enabled: values.collectionActionsDiscoveryEnabled !== false,
|
|
22418
|
+
},
|
|
22419
|
+
};
|
|
22399
22420
|
const mappedDisplay = values.rowActionsDisplay === 'hybrid' ? 'icons' : values.rowActionsDisplay;
|
|
22400
22421
|
v2Config.actions.row = {
|
|
22401
22422
|
enabled: values.rowActionsEnabled,
|
|
@@ -24212,6 +24233,29 @@ class ToolbarActionsEditorComponent {
|
|
|
24212
24233
|
</div>
|
|
24213
24234
|
</div>
|
|
24214
24235
|
</mat-expansion-panel>
|
|
24236
|
+
|
|
24237
|
+
<!-- Collection action discovery -->
|
|
24238
|
+
<mat-expansion-panel>
|
|
24239
|
+
<mat-expansion-panel-header>
|
|
24240
|
+
<mat-panel-title>
|
|
24241
|
+
<mat-icon class="section-icon" [praxisIcon]="'dataset'"></mat-icon>
|
|
24242
|
+
{{ tx('toolbar.collection.title', 'Collection actions') }}
|
|
24243
|
+
</mat-panel-title>
|
|
24244
|
+
<mat-panel-description>
|
|
24245
|
+
{{ tx('toolbar.collection.description', 'Govern actions discovered for the whole collection') }}
|
|
24246
|
+
</mat-panel-description>
|
|
24247
|
+
</mat-expansion-panel-header>
|
|
24248
|
+
|
|
24249
|
+
<div class="config-section">
|
|
24250
|
+
<mat-slide-toggle
|
|
24251
|
+
formControlName="collectionActionsDiscoveryEnabled"
|
|
24252
|
+
class="toggle-field"
|
|
24253
|
+
[matTooltip]="tx('toolbar.collection.discovery.hint', 'When enabled, the table can materialize collection actions from HATEOAS links and capabilities.')"
|
|
24254
|
+
>
|
|
24255
|
+
{{ tx('toolbar.collection.discovery.enabled', 'Collection action discovery') }}
|
|
24256
|
+
</mat-slide-toggle>
|
|
24257
|
+
</div>
|
|
24258
|
+
</mat-expansion-panel>
|
|
24215
24259
|
|
|
24216
24260
|
<!-- Row actions -->
|
|
24217
24261
|
<mat-expansion-panel>
|
|
@@ -25897,6 +25941,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
25897
25941
|
</div>
|
|
25898
25942
|
</div>
|
|
25899
25943
|
</mat-expansion-panel>
|
|
25944
|
+
|
|
25945
|
+
<!-- Collection action discovery -->
|
|
25946
|
+
<mat-expansion-panel>
|
|
25947
|
+
<mat-expansion-panel-header>
|
|
25948
|
+
<mat-panel-title>
|
|
25949
|
+
<mat-icon class="section-icon" [praxisIcon]="'dataset'"></mat-icon>
|
|
25950
|
+
{{ tx('toolbar.collection.title', 'Collection actions') }}
|
|
25951
|
+
</mat-panel-title>
|
|
25952
|
+
<mat-panel-description>
|
|
25953
|
+
{{ tx('toolbar.collection.description', 'Govern actions discovered for the whole collection') }}
|
|
25954
|
+
</mat-panel-description>
|
|
25955
|
+
</mat-expansion-panel-header>
|
|
25956
|
+
|
|
25957
|
+
<div class="config-section">
|
|
25958
|
+
<mat-slide-toggle
|
|
25959
|
+
formControlName="collectionActionsDiscoveryEnabled"
|
|
25960
|
+
class="toggle-field"
|
|
25961
|
+
[matTooltip]="tx('toolbar.collection.discovery.hint', 'When enabled, the table can materialize collection actions from HATEOAS links and capabilities.')"
|
|
25962
|
+
>
|
|
25963
|
+
{{ tx('toolbar.collection.discovery.enabled', 'Collection action discovery') }}
|
|
25964
|
+
</mat-slide-toggle>
|
|
25965
|
+
</div>
|
|
25966
|
+
</mat-expansion-panel>
|
|
25900
25967
|
|
|
25901
25968
|
<!-- Row actions -->
|
|
25902
25969
|
<mat-expansion-panel>
|
|
@@ -44703,6 +44770,15 @@ class PraxisTable {
|
|
|
44703
44770
|
const actions = currentToolbar?.actions || [];
|
|
44704
44771
|
const createIndex = actions.findIndex((action) => this.isCreateToolbarAction(action));
|
|
44705
44772
|
const existing = createIndex >= 0 ? actions[createIndex] : null;
|
|
44773
|
+
if (!this.isCollectionActionDiscoveryEnabled()) {
|
|
44774
|
+
if (existing?.__praxisCollectionCreateAction) {
|
|
44775
|
+
actions.splice(createIndex, 1);
|
|
44776
|
+
currentToolbar.actions = actions;
|
|
44777
|
+
this.setShowToolbar(this.shouldExposeToolbar());
|
|
44778
|
+
this.cdr.markForCheck();
|
|
44779
|
+
}
|
|
44780
|
+
return;
|
|
44781
|
+
}
|
|
44706
44782
|
const materialized = this.buildCollectionCreateToolbarAction(existing);
|
|
44707
44783
|
if (!materialized) {
|
|
44708
44784
|
if (existing?.__praxisCollectionCreateAction) {
|
|
@@ -44751,10 +44827,15 @@ class PraxisTable {
|
|
|
44751
44827
|
materializeCollectionWorkflowToolbarActions() {
|
|
44752
44828
|
if (!this.config)
|
|
44753
44829
|
return;
|
|
44754
|
-
const discovered = (this.
|
|
44830
|
+
const discovered = (this.isCollectionActionDiscoveryEnabled()
|
|
44831
|
+
? this.collectionCapabilities?.actions || []
|
|
44832
|
+
: [])
|
|
44755
44833
|
.filter((action) => action.scope === 'COLLECTION')
|
|
44756
44834
|
.sort((left, right) => (left.order ?? 0) - (right.order ?? 0));
|
|
44757
|
-
const toolbar = this.
|
|
44835
|
+
const toolbar = this.config.toolbar
|
|
44836
|
+
?? (discovered.length > 0 ? this.ensureToolbarConfigForRuntime() : null);
|
|
44837
|
+
if (!toolbar)
|
|
44838
|
+
return;
|
|
44758
44839
|
const current = [...(toolbar.actions || [])];
|
|
44759
44840
|
const discoveredIds = new Set(discovered.map((action) => this.normalizeActionId(action)));
|
|
44760
44841
|
const retained = current.filter((action) => !action.__praxisDiscoveredAction
|
|
@@ -44792,6 +44873,9 @@ class PraxisTable {
|
|
|
44792
44873
|
this.setShowToolbar(this.shouldExposeToolbar());
|
|
44793
44874
|
this.cdr.markForCheck();
|
|
44794
44875
|
}
|
|
44876
|
+
isCollectionActionDiscoveryEnabled() {
|
|
44877
|
+
return this.config?.actions?.collection?.discovery?.enabled !== false;
|
|
44878
|
+
}
|
|
44795
44879
|
ensureToolbarConfigForRuntime() {
|
|
44796
44880
|
if (!this.config.toolbar) {
|
|
44797
44881
|
this.config.toolbar = { visible: true, position: 'top' };
|
|
@@ -45067,7 +45151,7 @@ class PraxisTable {
|
|
|
45067
45151
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
45068
45152
|
return;
|
|
45069
45153
|
this.aiAdapterLoadStarted = true;
|
|
45070
|
-
import('./praxisui-table-table-ai.adapter-
|
|
45154
|
+
import('./praxisui-table-table-ai.adapter-Fn0WVcY1.mjs')
|
|
45071
45155
|
.then(({ TableAiAdapter }) => {
|
|
45072
45156
|
if (!this.isAiAssistantEnabled()) {
|
|
45073
45157
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -45813,7 +45897,7 @@ class PraxisTable {
|
|
|
45813
45897
|
initializeAiAssistantController() {
|
|
45814
45898
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
45815
45899
|
return;
|
|
45816
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
45900
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-DG8JgSXX.mjs')
|
|
45817
45901
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
45818
45902
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
45819
45903
|
return;
|
|
@@ -64252,6 +64336,29 @@ const PRAXIS_TABLE_AUTHORING_MANIFEST = {
|
|
|
64252
64336
|
submissionImpact: 'visual-only',
|
|
64253
64337
|
preconditions: ['config-initialized']
|
|
64254
64338
|
},
|
|
64339
|
+
{
|
|
64340
|
+
operationId: 'actions.collection.configure',
|
|
64341
|
+
title: 'Configurar descoberta de acoes da colecao',
|
|
64342
|
+
scope: 'global',
|
|
64343
|
+
targetKind: 'toolbar',
|
|
64344
|
+
target: { kind: 'toolbar', resolver: 'toolbar-config', ambiguityPolicy: 'fail', required: false },
|
|
64345
|
+
inputSchema: {
|
|
64346
|
+
type: 'object',
|
|
64347
|
+
required: ['discovery'],
|
|
64348
|
+
properties: {
|
|
64349
|
+
discovery: {
|
|
64350
|
+
type: 'object',
|
|
64351
|
+
required: ['enabled'],
|
|
64352
|
+
properties: { enabled: { type: 'boolean' } }
|
|
64353
|
+
}
|
|
64354
|
+
}
|
|
64355
|
+
},
|
|
64356
|
+
effects: [{ kind: 'merge-object', path: 'actions.collection' }],
|
|
64357
|
+
affectedPaths: ['actions.collection', 'actions.collection.discovery.enabled'],
|
|
64358
|
+
validators: ['editor-round-trip-preserve'],
|
|
64359
|
+
submissionImpact: 'config-only',
|
|
64360
|
+
preconditions: ['config-initialized']
|
|
64361
|
+
},
|
|
64255
64362
|
{
|
|
64256
64363
|
operationId: 'actions.row.configure',
|
|
64257
64364
|
title: 'Configurar acoes de linha',
|
|
@@ -67873,6 +67980,7 @@ const TABLE_AI_CAPABILITIES = {
|
|
|
67873
67980
|
{ path: 'toolbar.actions[]', category: 'toolbar', valueKind: 'array', description: 'Ações exibidas na barra de ferramentas da tabela.', dependsOn: 'toolbar.visible', intentExamples: ['adicionar botão na toolbar', 'criar ação de exportação na barra de ações'] },
|
|
67874
67981
|
{ path: 'toolbar.actions[].visibleWhen', category: 'toolbar', valueKind: 'expression', description: 'Condicao canonica em JSON Logic para exibir a acao da toolbar.', dependsOn: 'toolbar.visible', safetyNotes: 'Invalid Json Logic falha fechado; a acao nao deve ser exibida em nenhum ambiente.' },
|
|
67875
67982
|
// Actions
|
|
67983
|
+
{ path: 'actions.collection.discovery.enabled', category: 'actions', valueKind: 'boolean', description: 'Controla a materialização de ações de coleção descobertas por HATEOAS/capabilities.', critical: true, intentExamples: ['desligar ações descobertas no seletor', 'manter somente ações explícitas da coleção'], safetyNotes: 'Desabilitar não remove ações explícitas, ações por linha, leitura remota, schema ou paginação.' },
|
|
67876
67984
|
{ path: 'actions.row.enabled', category: 'actions', valueKind: 'boolean', description: 'Habilita coluna de ações por linha.', critical: true, intentExamples: ['ativar ações por linha', 'desligar coluna de ações'], safetyNotes: 'Ao desabilitar, verifique se não há ações críticas dependentes.' },
|
|
67877
67985
|
{ path: 'actions.row.display', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.rowActionDisplay, description: 'Modo de exibição das ações (menu/buttons/icons).', dependsOn: 'actions.row.enabled' },
|
|
67878
67986
|
{ path: 'actions.row.trigger', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.rowActionTrigger, description: 'Como as ações aparecem (hover/always/click).', dependsOn: 'actions.row.enabled' },
|
|
@@ -67990,6 +68098,7 @@ const TASK_PRESETS = {
|
|
|
67990
68098
|
'behavior.selection.*',
|
|
67991
68099
|
'behavior.interaction.*',
|
|
67992
68100
|
'behavior.expansion.*',
|
|
68101
|
+
'actions.collection.*',
|
|
67993
68102
|
'actions.row.*',
|
|
67994
68103
|
'actions.bulk.*',
|
|
67995
68104
|
'actions.context.*'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable, firstValueFrom } from 'rxjs';
|
|
2
2
|
import { withAuthoringScopePolicy } from '@praxisui/ai';
|
|
3
|
-
import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-
|
|
3
|
+
import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-DU4IUCA0.mjs';
|
|
4
4
|
|
|
5
5
|
class TableAgenticAuthoringTurnFlow {
|
|
6
6
|
adapter;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { firstValueFrom } from 'rxjs';
|
|
2
2
|
import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
|
|
3
3
|
import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
|
|
4
|
-
import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-
|
|
4
|
+
import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-DU4IUCA0.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
|
|
7
7
|
mode: 'expression',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-
|
|
1
|
+
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-DU4IUCA0.mjs';
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "9.0.5-rc.
|
|
3
|
+
"version": "9.0.5-rc.23",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/platform-browser": "^21.0.0",
|
|
9
|
-
"@praxisui/ai": "^9.0.5-rc.
|
|
10
|
-
"@praxisui/core": "^9.0.5-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.5-rc.
|
|
12
|
-
"@praxisui/dynamic-form": "^9.0.5-rc.
|
|
13
|
-
"@praxisui/metadata-editor": "^9.0.5-rc.
|
|
14
|
-
"@praxisui/rich-content": "^9.0.5-rc.
|
|
15
|
-
"@praxisui/settings-panel": "^9.0.5-rc.
|
|
16
|
-
"@praxisui/table-rule-builder": "^9.0.5-rc.
|
|
9
|
+
"@praxisui/ai": "^9.0.5-rc.23",
|
|
10
|
+
"@praxisui/core": "^9.0.5-rc.23",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.5-rc.23",
|
|
12
|
+
"@praxisui/dynamic-form": "^9.0.5-rc.23",
|
|
13
|
+
"@praxisui/metadata-editor": "^9.0.5-rc.23",
|
|
14
|
+
"@praxisui/rich-content": "^9.0.5-rc.23",
|
|
15
|
+
"@praxisui/settings-panel": "^9.0.5-rc.23",
|
|
16
|
+
"@praxisui/table-rule-builder": "^9.0.5-rc.23",
|
|
17
17
|
"@angular/cdk": "^21.0.0",
|
|
18
18
|
"@angular/forms": "^21.0.0",
|
|
19
19
|
"@angular/material": "^21.0.0",
|
|
20
20
|
"@angular/router": "^21.0.0",
|
|
21
|
-
"@praxisui/dialog": "^9.0.5-rc.
|
|
21
|
+
"@praxisui/dialog": "^9.0.5-rc.23",
|
|
22
22
|
"rxjs": "~7.8.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
@@ -311,6 +311,7 @@ type TableAuthoringDocument = {
|
|
|
311
311
|
- `surfaces`, `actions` e `canonicalOperations` são lidos do `ResourceCapabilitySnapshot` retornado pelo backend.
|
|
312
312
|
- O primeiro corte monta um detail schema leve de resumo contextual; ele não embute execução inline de `surface.open` nem de workflow.
|
|
313
313
|
- O runtime faz prefetch por linha somente quando existe ao menos uma ação contextual configurada para projeção inline (`display="icons"|"buttons"`). Ações restritas ao menu preservam discovery sob demanda ao abrir o overflow; expansion `hypermedia` sem row actions continua resolvendo o contexto ao expandir a linha.
|
|
314
|
+
- `actions.collection.discovery.enabled=false` desliga somente a materialização automática de ações da coleção, incluindo create e workflows descobertos por HATEOAS/capabilities. Dados, schema, paginação, capabilities de leitura, ações explícitas da toolbar e ações por linha permanecem disponíveis. O default permanece habilitado quando o campo é omitido.
|
|
314
315
|
- `actions.row.discovery.enabled=false` desliga somente o enriquecimento automático de ações por linha. Use este modo para telas corporativas curadas, nas quais o host quer expor apenas `actions.row.actions[]` e evitar overflow/actions descobertas por HATEOAS/capabilities. O default permanece habilitado quando o campo é omitido.
|
|
315
316
|
|
|
316
317
|
## Overview
|
|
@@ -345,6 +346,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
|
|
|
345
346
|
| `appearance.responsive` | object | No | component-defaults | numeric-breakpoint | Breakpoint móvel inválido é normalizado para `768`. |
|
|
346
347
|
| `toolbar.actions[]` | array | No | `[]` | action-contract | Ações de toolbar com roteamento para `toolbarAction`/`bulkAction`. |
|
|
347
348
|
| `toolbar.appearance` | object | No | Material 3 fallback | token-contract | Governa preset, variante, densidade, forma, divisores e tokens públicos da toolbar sem alterar a semântica das ações. |
|
|
349
|
+
| `actions.collection.discovery.enabled` | boolean | No | `true` | collection-action-discovery | Controla se ações de coleção podem ser materializadas por HATEOAS/capabilities. Configure `false` em lookups/seletores para manter consulta remota e somente ações explicitamente declaradas. |
|
|
348
350
|
| `actions.row.actions[].recordSurface` | object | No | none | `ResourceSurfaceCatalogItem` | Preserva a identidade canônica da superfície relacionada aberta por uma ação de linha, mantendo `actions.row.actions[].id` como identidade do botão. |
|
|
349
351
|
| `actions.row.discovery.enabled` | boolean | No | `true` | row-action-discovery | Controla se row actions podem ser enriquecidas por HATEOAS/capabilities. Configure `false` para manter somente ações declaradas em `actions.row.actions[]`. |
|
|
350
352
|
| `columns[].renderer` | object | No | field-type-driven | renderer-contract | Renderers condicionais, payload expr e ações interativas. |
|
|
@@ -1626,6 +1626,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
1626
1626
|
private resolveCollectionCapabilitiesHref;
|
|
1627
1627
|
private materializeCollectionCreateToolbarAction;
|
|
1628
1628
|
private materializeCollectionWorkflowToolbarActions;
|
|
1629
|
+
private isCollectionActionDiscoveryEnabled;
|
|
1629
1630
|
private ensureToolbarConfigForRuntime;
|
|
1630
1631
|
private buildCollectionCreateToolbarAction;
|
|
1631
1632
|
private resolveCollectionCreateRuntime;
|