@praxisui/table 9.0.5-rc.10 → 9.0.5-rc.11

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-12T23:49:15.227Z",
3
+ "generatedAt": "2026-08-13T05:15:33.456Z",
4
4
  "packageName": "@praxisui/table",
5
- "packageVersion": "9.0.5-rc.10",
5
+ "packageVersion": "9.0.5-rc.11",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 3,
@@ -36,7 +36,7 @@ import * as i13 from '@angular/cdk/drag-drop';
36
36
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
37
37
  import { take, Subject, debounceTime, takeUntil, firstValueFrom, of, BehaviorSubject, Subscription, timeout } from 'rxjs';
38
38
  import * as i1 from '@praxisui/core';
39
- import { LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisJsonLogicService, PraxisIconDirective, PraxisIconButtonComponent, PraxisI18nService, getPraxisTableCellVisualizationGuidance, getPraxisTableCellVisualizationConstraint, isTableConfigV2, normalizePraxisPresentationVisualization, renderPraxisPresentationVisualizationHtml, providePraxisI18nConfig, PRAXIS_GLOBAL_ACTION_CATALOG, SURFACE_OPEN_I18N_NAMESPACE, isRequiredGlobalActionPayloadMissing, getGlobalActionUiSchema, getRequiredGlobalActionPayloadKeys, hasMeaningfulGlobalActionPayloadValue, SurfaceOpenActionEditorComponent, SURFACE_OPEN_I18N_CONFIG, ASYNC_CONFIG_STORAGE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, resolveControlTypeAlias, mapFieldDefinitionsToMetadata, PraxisJsonLogicError, GLOBAL_ACTION_CATALOG, GenericCrudService, validateGlobalActionRefs, getGlobalActionCatalog, TableConfigService, createDefaultTableConfig, fillUndefined, deepMerge, INLINE_FILTER_ALIAS_TOKENS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, resolveInlineFilterControlType, fetchWithETag, serializeEntityLookupValueForPayload, ComponentMetadataRegistry, AnalyticsStatsRequestBuilderService, buildApiUrl, normalizePraxisDataQueryContext, API_URL, PraxisRuntimeComponentObservationRegistryService, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PraxisCollectionExportService, SchemaNormalizerService, translateResourceAvailabilityReason, ResourceDiscoveryService, ResourceSurfaceOpenAdapterService, ResourceActionOpenAdapterService, CrudOperationResolutionService, ResourceQuickConnectComponent, assertPraxisCollectionExportArtifact, PRAXIS_LOADING_CTX, resolveColumnTypeFromFieldDefinition, isPraxisPresentationVisualizationTableSafe, resolveTextMaskFormatFromFieldDefinition, translateResourceDiscoveryText, supportsImplicitValuePresentation, resolveValuePresentation, resolveResourceIdentityContract, materializeResourceIdentity, translateUnavailableWorkflowMessage, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent, RESOURCE_DISCOVERY_I18N_CONFIG } from '@praxisui/core';
39
+ import { LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisJsonLogicService, PraxisIconDirective, PraxisIconButtonComponent, PraxisI18nService, getPraxisTableCellVisualizationGuidance, getPraxisTableCellVisualizationConstraint, isTableConfigV2, normalizePraxisPresentationVisualization, renderPraxisPresentationVisualizationHtml, providePraxisI18nConfig, PRAXIS_GLOBAL_ACTION_CATALOG, SURFACE_OPEN_I18N_NAMESPACE, isRequiredGlobalActionPayloadMissing, getGlobalActionUiSchema, getRequiredGlobalActionPayloadKeys, hasMeaningfulGlobalActionPayloadValue, SurfaceOpenActionEditorComponent, SURFACE_OPEN_I18N_CONFIG, ASYNC_CONFIG_STORAGE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, resolveControlTypeAlias, mapFieldDefinitionsToMetadata, PraxisJsonLogicError, GLOBAL_ACTION_CATALOG, GenericCrudService, validateGlobalActionRefs, getGlobalActionCatalog, TableConfigService, createDefaultTableConfig, fillUndefined, deepMerge, INLINE_FILTER_ALIAS_TOKENS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, resolveInlineFilterControlType, fetchWithETag, serializeEntityLookupValueForPayload, ComponentMetadataRegistry, AnalyticsStatsRequestBuilderService, buildApiUrl, normalizePraxisDataQueryContext, API_URL, normalizeUnknownError, PraxisRuntimeComponentObservationRegistryService, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PraxisCollectionExportService, SchemaNormalizerService, translateResourceAvailabilityReason, ResourceDiscoveryService, ResourceSurfaceOpenAdapterService, ResourceActionOpenAdapterService, CrudOperationResolutionService, ResourceQuickConnectComponent, assertPraxisCollectionExportArtifact, PRAXIS_LOADING_CTX, resolveColumnTypeFromFieldDefinition, isPraxisPresentationVisualizationTableSafe, resolveTextMaskFormatFromFieldDefinition, translateResourceDiscoveryText, supportsImplicitValuePresentation, resolveValuePresentation, resolveResourceIdentityContract, materializeResourceIdentity, translateUnavailableWorkflowMessage, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent, RESOURCE_DISCOVERY_I18N_CONFIG } from '@praxisui/core';
40
40
  import { PraxisRichContent } from '@praxisui/rich-content';
41
41
  import * as i2 from '@angular/material/toolbar';
42
42
  import { MatToolbarModule } from '@angular/material/toolbar';
@@ -41815,6 +41815,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
41815
41815
 
41816
41816
  const EMPTY_ADVANCED_FILTER_METADATA_OVERRIDES = {};
41817
41817
  const BLOCKED_PATH_SEGMENTS = new Set(['__proto__', 'prototype', 'constructor']);
41818
+ function normalizeSurfaceOpenCause(error) {
41819
+ const normalized = normalizeUnknownError(error);
41820
+ return { name: normalized.name, message: normalized.message };
41821
+ }
41818
41822
  const DEFAULT_EXPANSION_ALLOWED_NODES = [
41819
41823
  'layout',
41820
41824
  'stack',
@@ -43293,6 +43297,7 @@ class PraxisTable {
43293
43297
  fallbackLogger;
43294
43298
  fallbackLoggerEnvironment = null;
43295
43299
  lastColumnDropHandledAt = 0;
43300
+ surfaceOpenAttemptSequence = 0;
43296
43301
  activeColumnDragField = null;
43297
43302
  _effectiveCellRenderCache = new Map();
43298
43303
  cellAnimationPreviousValuesByRowId = new Map();
@@ -44306,7 +44311,7 @@ class PraxisTable {
44306
44311
  if (this.aiAdapter || this.aiAdapterLoadStarted)
44307
44312
  return;
44308
44313
  this.aiAdapterLoadStarted = true;
44309
- import('./praxisui-table-table-ai.adapter-DQ6nARya.mjs')
44314
+ import('./praxisui-table-table-ai.adapter-CxsALuRo.mjs')
44310
44315
  .then(({ TableAiAdapter }) => {
44311
44316
  if (!this.isAiAssistantEnabled()) {
44312
44317
  this.aiAssistantOpenAfterAdapterLoad = false;
@@ -45052,7 +45057,7 @@ class PraxisTable {
45052
45057
  initializeAiAssistantController() {
45053
45058
  if (!this.aiAdapter || this.aiAssistantController)
45054
45059
  return;
45055
- import('./praxisui-table-table-agentic-authoring-turn-flow-DzUWFwYf.mjs')
45060
+ import('./praxisui-table-table-agentic-authoring-turn-flow-CYaamZq1.mjs')
45056
45061
  .then(({ TableAgenticAuthoringTurnFlow }) => {
45057
45062
  if (this.aiAssistantController || !this.aiAdapter)
45058
45063
  return;
@@ -50543,6 +50548,12 @@ class PraxisTable {
50543
50548
  __praxisCollectionCreateAction: true,
50544
50549
  }),
50545
50550
  };
50551
+ const correlationId = [
50552
+ this.tableId || this.componentInstanceId || 'praxis-table',
50553
+ 'surface.open',
50554
+ surface?.id || 'create',
50555
+ ++this.surfaceOpenAttemptSequence,
50556
+ ].join(':');
50546
50557
  if (!surface || configuredAction.disabled) {
50547
50558
  this.emitEventWithActionFeedback(this.toolbarAction, payload, {
50548
50559
  actionId: action,
@@ -50584,6 +50595,7 @@ class PraxisTable {
50584
50595
  actionId: 'create',
50585
50596
  actionConfig: configuredAction,
50586
50597
  surfaceId: surface.id,
50598
+ correlationId,
50587
50599
  },
50588
50600
  });
50589
50601
  if (result.success) {
@@ -50596,28 +50608,46 @@ class PraxisTable {
50596
50608
  this.emitResourceEvent('surface-open', 'toolbarAction', {
50597
50609
  ...payload,
50598
50610
  surface,
50599
- error: result.error,
50611
+ error: normalizeSurfaceOpenCause(result.error),
50612
+ correlationId,
50613
+ selectedPath: 'surface.open',
50614
+ fallback: 'none',
50600
50615
  }, surface, null, 'error');
50601
- this.warnLog('[PraxisTable] Falha ao abrir create de coleção via surface.open', { surfaceId: surface.id, error: result.error }, { actionId: 'create' });
50616
+ this.warnLog('[PraxisTable] Falha ao abrir create de coleção via surface.open', {
50617
+ surfaceId: surface.id,
50618
+ mode: 'drawer',
50619
+ resourcePath: this.resolveCollectionResourcePath(),
50620
+ selectedPath: 'surface.open',
50621
+ fallback: 'none',
50622
+ cause: normalizeSurfaceOpenCause(result.error),
50623
+ }, {
50624
+ actionId: 'create',
50625
+ correlationId,
50626
+ throttleKey: `praxis-table:surface.open:create:${surface.id}`,
50627
+ });
50602
50628
  }
50603
50629
  catch (error) {
50604
50630
  this.emitResourceEvent('surface-open', 'toolbarAction', {
50605
50631
  ...payload,
50606
50632
  surface,
50607
- error,
50633
+ error: normalizeSurfaceOpenCause(error),
50634
+ correlationId,
50635
+ selectedPath: 'surface.open',
50636
+ fallback: 'none',
50608
50637
  }, surface, null, 'error');
50609
- this.warnLog('[PraxisTable] Falha ao preparar create de coleção via surface.open', { surfaceId: surface.id, error }, { actionId: 'create' });
50638
+ this.warnLog('[PraxisTable] Falha ao preparar create de coleção via surface.open', {
50639
+ surfaceId: surface.id,
50640
+ mode: 'drawer',
50641
+ resourcePath: this.resolveCollectionResourcePath(),
50642
+ selectedPath: 'surface.open',
50643
+ fallback: 'none',
50644
+ cause: normalizeSurfaceOpenCause(error),
50645
+ }, {
50646
+ actionId: 'create',
50647
+ correlationId,
50648
+ throttleKey: `praxis-table:surface.open:create:${surface.id}`,
50649
+ });
50610
50650
  }
50611
- this.emitEventWithActionFeedback(this.toolbarAction, {
50612
- ...payload,
50613
- surface,
50614
- }, {
50615
- actionId: action,
50616
- label: configuredAction.label || action,
50617
- resourceEventKind: 'toolbar-action',
50618
- sourceOutput: 'toolbarAction',
50619
- surface,
50620
- });
50621
50651
  return true;
50622
50652
  }
50623
50653
  resolveBulkExportFormat(action, actionConfig) {
@@ -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-nfsMWS1W.mjs';
3
+ import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-Bx2Kwy44.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-nfsMWS1W.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-Bx2Kwy44.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-nfsMWS1W.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-Bx2Kwy44.mjs';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "9.0.5-rc.10",
3
+ "version": "9.0.5-rc.11",
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",
10
- "@praxisui/core": "^9.0.5-rc.10",
11
- "@praxisui/dynamic-fields": "^9.0.5-rc.10",
12
- "@praxisui/dynamic-form": "^9.0.5-rc.10",
13
- "@praxisui/metadata-editor": "^9.0.5-rc.10",
14
- "@praxisui/rich-content": "^9.0.5-rc.10",
15
- "@praxisui/settings-panel": "^9.0.5-rc.10",
16
- "@praxisui/table-rule-builder": "^9.0.5-rc.10",
9
+ "@praxisui/ai": "^9.0.5-rc.11",
10
+ "@praxisui/core": "^9.0.5-rc.11",
11
+ "@praxisui/dynamic-fields": "^9.0.5-rc.11",
12
+ "@praxisui/dynamic-form": "^9.0.5-rc.11",
13
+ "@praxisui/metadata-editor": "^9.0.5-rc.11",
14
+ "@praxisui/rich-content": "^9.0.5-rc.11",
15
+ "@praxisui/settings-panel": "^9.0.5-rc.11",
16
+ "@praxisui/table-rule-builder": "^9.0.5-rc.11",
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.10",
21
+ "@praxisui/dialog": "^9.0.5-rc.11",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -447,7 +447,7 @@ degraded filter.
447
447
  | `rowDoubleClick` | `{ action, row }` | Duplo clique quando habilitado. | Partial | Preservado da documentação anterior. |
448
448
  | `rowExpansionChange` | `RowExpansionChangeEvent` | Evento canônico para expand/collapse de detail row no runtime P0A (caminho não virtualizado), com payload discriminado por política de exposição (`allowRawExposure` + `eventExposureDefault`). | Partial | Preservado da documentação anterior. |
449
449
  | `rowAction` | `{ action, row, payload?, actionConfig?, localMode?, preventedHttp? }` | Acao de linha (coluna `_actions`, renderer interativo ou CRUD capability sintetizada). `payload` e emitido quando houver `payloadExpr` em renderer interativo. Quando `actionConfig.globalAction` aponta para `navigation.openRoute`, o runtime resolve templates como `${row.id}` antes de executar a navegação interna. Para actions como `surface.open`, `payload.*` continua sendo o envelope canônico do evento entregue ao destino. Para `view/edit/delete/duplicate-draft` vindos de capabilities, `actionConfig` carrega a operacao canonica e o host composto deve encaminhar ao contexto CRUD apropriado. | Partial | Preservado da documentação anterior. |
450
- | `toolbarAction` | `{ action, actionConfig? }` | Acao clicada em `toolbar.actions[]` que nao foi roteada para fluxo bulk; `actionConfig` carrega o objeto da acao quando disponivel. A acao `create` de colecao pode ser materializada automaticamente a partir de `_links.create`, rel `capabilities`, surfaces e `CrudOperationResolutionService`; quando `surface.open` esta disponivel, o runtime abre a surface de criacao antes de emitir fallback. | Partial | Preservado da documentação anterior com materializacao CRUD de colecao. |
450
+ | `toolbarAction` | `{ action, actionConfig? }` | Acao clicada em `toolbar.actions[]` que nao foi roteada para fluxo bulk; `actionConfig` carrega o objeto da acao quando disponivel. A acao `create` de colecao pode ser materializada automaticamente a partir de `_links.create`, rel `capabilities`, surfaces e `CrudOperationResolutionService`. Dentro de CRUD, a tabela delega ao owner antes de abrir. Standalone, uma surface selecionada usa uma unica tentativa de `surface.open`; falha de execução é fail-closed e não emite `toolbarAction` como segundo caminho. O fallback local permanece quando nenhuma surface executável foi selecionada. | Partial | Preservado da documentação anterior com materializacao CRUD de colecao e ownership explícito. |
451
451
  | `exportAction` | `{ format, request?, result?, error?, tableId? }` | Acao de exportacao acionada pelo menu `export.formats[]`; `request` segue `PraxisCollectionExportRequest`. | Active | Usa o contrato canonico de Collection Export em `@praxisui/core`. |
452
452
  | `exportAction` | `{ format, request?, result?, error?, tableId? }` | Acao de exportacao acionada pelo menu `export.formats[]`; `request` segue `PraxisCollectionExportRequest`. | Active | Usa o contrato canonico de Collection Export em `@praxisui/core`. |
453
453
  | `bulkAction` | `{ action, rows, actionConfig? }` | Acao em lote; `actionConfig` carrega a configuracao da acao quando disponivel. | Partial | Preservado da documentação anterior. |
@@ -1560,6 +1560,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1560
1560
  private fallbackLogger?;
1561
1561
  private fallbackLoggerEnvironment;
1562
1562
  private lastColumnDropHandledAt;
1563
+ private surfaceOpenAttemptSequence;
1563
1564
  private activeColumnDragField;
1564
1565
  private readonly _effectiveCellRenderCache;
1565
1566
  private readonly cellAnimationPreviousValuesByRowId;