@praxisui/table 9.0.5-rc.21 → 9.0.5-rc.22

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.
@@ -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.collectionCapabilities?.actions || [])
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.ensureToolbarConfigForRuntime();
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-xSCc4Jg6.mjs')
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-DEyI2Nx5.mjs')
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-KxTp8ZJd.mjs';
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-KxTp8ZJd.mjs';
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-KxTp8ZJd.mjs';
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.21",
3
+ "version": "9.0.5-rc.22",
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.21",
10
- "@praxisui/core": "^9.0.5-rc.21",
11
- "@praxisui/dynamic-fields": "^9.0.5-rc.21",
12
- "@praxisui/dynamic-form": "^9.0.5-rc.21",
13
- "@praxisui/metadata-editor": "^9.0.5-rc.21",
14
- "@praxisui/rich-content": "^9.0.5-rc.21",
15
- "@praxisui/settings-panel": "^9.0.5-rc.21",
16
- "@praxisui/table-rule-builder": "^9.0.5-rc.21",
9
+ "@praxisui/ai": "^9.0.5-rc.22",
10
+ "@praxisui/core": "^9.0.5-rc.22",
11
+ "@praxisui/dynamic-fields": "^9.0.5-rc.22",
12
+ "@praxisui/dynamic-form": "^9.0.5-rc.22",
13
+ "@praxisui/metadata-editor": "^9.0.5-rc.22",
14
+ "@praxisui/rich-content": "^9.0.5-rc.22",
15
+ "@praxisui/settings-panel": "^9.0.5-rc.22",
16
+ "@praxisui/table-rule-builder": "^9.0.5-rc.22",
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",
21
+ "@praxisui/dialog": "^9.0.5-rc.22",
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;