@praxisui/table 9.0.66 → 9.0.68-rc.0

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,6 +1,6 @@
1
1
  import { Observable, firstValueFrom } from 'rxjs';
2
2
  import { withAuthoringScopePolicy } from '@praxisui/ai';
3
- import { af as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-B3Gyqwao.mjs';
3
+ import { af as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-Cxa4T7sm.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 { L as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, n as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, $ as coerceTableComponentEditPlans, a1 as compileTableComponentEditPlans, Q as TASK_PRESETS, a6 as getTableComponentEditPlanCapabilities, H as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, E as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, I as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, O as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, K as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-B3Gyqwao.mjs';
4
+ import { L as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, n as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, $ as coerceTableComponentEditPlans, a1 as compileTableComponentEditPlans, Q as TASK_PRESETS, a6 as getTableComponentEditPlanCapabilities, H as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, E as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, I as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, O as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, K as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-Cxa4T7sm.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_AUTHORING_MANIFEST, l as PRAXIS_FILTER_COMPONENT_METADATA, m as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, n as PRAXIS_TABLE_AUTHORING_MANIFEST, o as PRAXIS_TABLE_COMPONENT_METADATA, p as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, q as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, r as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, s as PraxisFilter, t as PraxisFilterWidgetConfigEditor, u as PraxisTable, v as PraxisTableConfigEditor, w as PraxisTableInlineAuthoringEditorComponent, x as PraxisTableToolbar, y as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, z as TABLE_COMPONENT_AI_CAPABILITIES, E as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, I as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_KIND, O as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TASK_PRESETS, R as TableDefaultsProvider, U as TableRulesEditorComponent, V as ToolbarActionsEditorComponent, W as ValueMappingEditorComponent, X as VisualFormulaBuilderComponent, Y as analyticsComparisonMetricField, Z as buildTableApplyPlan, _ as coerceTableComponentEditPlan, $ as coerceTableComponentEditPlans, a0 as compileTableComponentEditPlan, a1 as compileTableComponentEditPlans, a2 as createTableAuthoringDocument, a3 as getActionId, a4 as getEnum, a5 as getTableCapabilities, a6 as getTableComponentEditPlanCapabilities, a7 as isTableRendererSupportedByRichContentP0, a8 as mapTableRendererToRichContentP0, a9 as normalizeTableAuthoringDocument, aa as parseLegacyOrTableDocument, ab as providePraxisFilterMetadata, ac as providePraxisTableMetadata, ad as providePraxisTableToolbarAppearance, ae as serializeTableAuthoringDocument, ag as toCanonicalTableConfig, ah as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-B3Gyqwao.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_AUTHORING_MANIFEST, l as PRAXIS_FILTER_COMPONENT_METADATA, m as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, n as PRAXIS_TABLE_AUTHORING_MANIFEST, o as PRAXIS_TABLE_COMPONENT_METADATA, p as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, q as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, r as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, s as PraxisFilter, t as PraxisFilterWidgetConfigEditor, u as PraxisTable, v as PraxisTableConfigEditor, w as PraxisTableInlineAuthoringEditorComponent, x as PraxisTableToolbar, y as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, z as TABLE_COMPONENT_AI_CAPABILITIES, E as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, I as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_KIND, O as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TASK_PRESETS, R as TableDefaultsProvider, U as TableRulesEditorComponent, V as ToolbarActionsEditorComponent, W as ValueMappingEditorComponent, X as VisualFormulaBuilderComponent, Y as analyticsComparisonMetricField, Z as buildTableApplyPlan, _ as coerceTableComponentEditPlan, $ as coerceTableComponentEditPlans, a0 as compileTableComponentEditPlan, a1 as compileTableComponentEditPlans, a2 as createTableAuthoringDocument, a3 as getActionId, a4 as getEnum, a5 as getTableCapabilities, a6 as getTableComponentEditPlanCapabilities, a7 as isTableRendererSupportedByRichContentP0, a8 as mapTableRendererToRichContentP0, a9 as normalizeTableAuthoringDocument, aa as parseLegacyOrTableDocument, ab as providePraxisFilterMetadata, ac as providePraxisTableMetadata, ad as providePraxisTableToolbarAppearance, ae as serializeTableAuthoringDocument, ag as toCanonicalTableConfig, ah as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-Cxa4T7sm.mjs';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "9.0.66",
3
+ "version": "9.0.68-rc.0",
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.66",
10
- "@praxisui/core": "^9.0.66",
11
- "@praxisui/dynamic-fields": "^9.0.66",
12
- "@praxisui/dynamic-form": "^9.0.66",
13
- "@praxisui/metadata-editor": "^9.0.66",
14
- "@praxisui/rich-content": "^9.0.66",
15
- "@praxisui/settings-panel": "^9.0.66",
16
- "@praxisui/table-rule-builder": "^9.0.66",
9
+ "@praxisui/ai": "^9.0.68-rc.0",
10
+ "@praxisui/core": "^9.0.68-rc.0",
11
+ "@praxisui/dynamic-fields": "^9.0.68-rc.0",
12
+ "@praxisui/dynamic-form": "^9.0.68-rc.0",
13
+ "@praxisui/metadata-editor": "^9.0.68-rc.0",
14
+ "@praxisui/rich-content": "^9.0.68-rc.0",
15
+ "@praxisui/settings-panel": "^9.0.68-rc.0",
16
+ "@praxisui/table-rule-builder": "^9.0.68-rc.0",
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.66",
21
+ "@praxisui/dialog": "^9.0.68-rc.0",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -366,9 +366,15 @@ capabilities CRUD canonicas, `PraxisTable` pode sintetizar entradas
366
366
  contextuais `view`, `edit` e `delete`. Quando o backend publica
367
367
  explicitamente `operations["duplicate-draft"]`, a tabela tambem materializa
368
368
  `duplicate-draft` como operacao estendida de item. Essas entradas continuam
369
- sendo capabilities, nao workflow actions: o clique emite `rowAction` com
370
- `actionConfig` apontando para a capability, para que um contexto CRUD ou
371
- host composto materialize a operacao.
369
+ sendo capabilities, nao workflow actions. Em uma tabela standalone, `view`/`byId`
370
+ abre um Dynamic Form somente leitura por `surface.open`, usando a resolucao
371
+ canonica do GET de item e do schema de resposta. O host deve fornecer o runtime
372
+ de surfaces e autorizar essas leituras na sua politica de rede. Surfaces nomeadas
373
+ preservam seus proprios ids, paths e schemas. Dentro de um contexto CRUD, `view`
374
+ continua emitindo `rowAction` com `actionConfig` apontando para a capability;
375
+ as demais capabilities delegadas e actions globais explicitas preservam seu fluxo.
376
+ Injector e origem do foco acompanham apenas o contexto efemero de execucao,
377
+ nunca o JSON authorado ou o payload HTTP.
372
378
 
373
379
  Renderer defaults:
374
380
  - `columns[].renderer.type = "avatar"` aplica `columns[].align = "center"` quando a coluna não declara alinhamento explícito. Esse default governa header e célula para manter foto/avatar centralizados em colunas dedicadas, preservando `align`, `width` e demais overrides declarados pelo host.
@@ -463,7 +469,7 @@ degraded filter.
463
469
  | `rowClick` | `{ row, index }` | Clique em linha. | Partial | Preservado da documentação anterior. |
464
470
  | `rowDoubleClick` | `{ action, row }` | Duplo clique quando habilitado. | Partial | Preservado da documentação anterior. |
465
471
  | `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. |
466
- | `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. |
472
+ | `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 capabilities delegadas ao host (`view` em CRUD, `edit/delete/duplicate-draft`), `actionConfig` carrega a operacao canonica. O `view`/`byId` standalone abre a leitura por `surface.open` e nao emite um segundo pedido local. | Partial | Preservado da documentação anterior. |
467
473
  | `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 só permanece quando nenhuma surface executável foi selecionada. | Partial | Preservado da documentação anterior com materializacao CRUD de colecao e ownership explícito. |
468
474
  | `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`. |
469
475
  | `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`. |
@@ -1099,7 +1105,7 @@ A superficie usa `horizontalScroll` com classes:
1099
1105
  Em `scroll-auto`, o viewport e uma regiao focalizavel por teclado para que o scroll horizontal continue acessivel sem mouse, inclusive no Safari. O nome acessivel usa `accessibility.ariaLabels.scrollViewport`, depois `toolbar.title` e, por fim, o fallback localizado do runtime. `scroll-wrap` e `scroll-none` nao introduzem uma parada de tabulacao adicional.
1100
1106
 
1101
1107
  #### Mobile card mode
1102
- `appearance.responsive.mobile.cardMode: true` materializa cada linha **não virtualizada** como um card rotulado quando o viewport entra em `appearance.responsive.breakpoints.mobile`. A tabela continua sendo a fonte semântica e todos os campos permanecem no DOM; cada valor recebe o respectivo cabeçalho como rótulo visual.
1108
+ `appearance.responsive.mobile.cardMode: true` materializa cada linha **não virtualizada** como um card rotulado quando a menor largura entre o viewport e o host da tabela entra em `appearance.responsive.breakpoints.mobile`. Isso inclui widgets redimensionados e painéis estreitos em desktop. Um host ainda sem medida usa o viewport como referência. A tabela continua sendo a fonte semântica e todos os campos permanecem no DOM; cada valor recebe o respectivo cabeçalho como rótulo visual. Até 480 px de área interna, rótulo e valor ficam empilhados. Essa adaptação não altera a política de `horizontalScroll` nem ativa cartões sem `cardMode: true`.
1103
1109
 
1104
1110
  `appearance.responsive.mobile.priorityColumns` é uma lista ordenada de `field`s que aparecem primeiro no card. Campos não prioritários continuam disponíveis abaixo deles; o runtime não oculta dados silenciosamente. Tabelas virtualizadas mantêm o modo de rolagem horizontal, pois um card pode ter altura variável.
1105
1111
 
@@ -1507,3 +1513,32 @@ type DiagramEmbedNode = {
1507
1513
  };
1508
1514
  };
1509
1515
  ```
1516
+
1517
+ ## Filter presentation
1518
+
1519
+ `FilterPresentationConfig` is owned by Core. Tables author it at `behavior.filtering.advancedFilters.settings.presentation`; standalone filters use `FilterConfig.presentation`, projected directly to the runtime `presentation` input. It changes presentation only, never the filter DTO or query semantics.
1520
+
1521
+ With filter persistence enabled, an acknowledged persisted `FilterConfig.presentation` overrides the authored input for the same component identity on reload. Apply remains a preview-only operation. Hosts that require input-only materialization set `disablePersistence`, which prevents preference loading and saving.
1522
+
1523
+ The guided preferences editor roundtrips the complete effective `FilterConfig`; changing presentation or another managed section preserves unmanaged siblings such as `selectedFieldIds` and field metadata overrides.
1524
+
1525
+ ```json
1526
+ {
1527
+ "header": { "visible": true, "text": "Filtros", "position": "above", "size": "medium" },
1528
+ "advancedAction": { "display": "icon-text", "text": "Mais filtros", "icon": "filter_list", "size": "compact", "position": "end" }
1529
+ }
1530
+ ```
1531
+
1532
+ | Region | Optional properties |
1533
+ | --- | --- |
1534
+ | `header` | `visible: boolean`, `text: string`, `icon: string`, `position: above \| inline`, `size: small \| medium \| large` |
1535
+ | `advancedAction` | `display: icon \| text \| icon-text`, `text: string`, `icon: string`, `size: compact \| standard`, `position: start \| end` |
1536
+ | `tokens` | String values for `gap`, `headerGap`, `headerColor`, `headerFontSize`, `headerFontWeight`, `iconSize`, `actionGap`, `actionFontSize`, `actionFontWeight` |
1537
+
1538
+ Absent presentation preserves the existing icon action and hidden heading. `header.visible` explicitly enables the heading. An empty icon removes that icon. If the advanced action uses icon-only display with an empty icon, it falls back to its localized/authored text so the action remains discoverable. Text-only display never renders an icon. Nonempty authored text takes precedence over localized copy and the default catalog label. Empty or whitespace-only header/action text inherits the localized label, so it cannot create an unnamed action. Action position applies inside the auxiliary controls group, not the page. Existing `showAdvancedButton` controls whether the advanced action is available; presentation introduces no second visibility switch.
1539
+
1540
+ The embedded table supplies the heading, advanced-action label, dialog title and opening/unavailable feedback from the `praxisTableRuntime` catalog through the existing filter `i18n` input. Host locale changes and external translator overrides apply without modifying the filter query. Explicit presentation text still wins; clearing it restores catalog resolution. Standalone filters keep their explicit `i18n` input. Other legacy filter-manager copy is outside this localized projection.
1541
+
1542
+ Tokens project to CSS custom properties `--pfx-filter-gap`, `--pfx-filter-header-gap`, `--pfx-filter-header-color`, `--pfx-filter-header-font-size`, `--pfx-filter-header-font-weight`, `--pfx-filter-icon-size`, `--pfx-filter-action-gap`, `--pfx-filter-action-font-size`, and `--pfx-filter-action-font-weight`. Prefer the semantic size/position controls for ordinary authoring; tokens are for deliberate theme customization.
1543
+
1544
+ AI authoring extends existing operations: `filter.advanced.configure` receives `settings.presentation` for tables; `filter.settings.configure` receives `presentation` for standalone filters. Neither operation authors a query through this object.
@@ -1,5 +1,5 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { TableToolbarAppearanceConfig, TableConfig, TableToolbarAppearanceDensity, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
2
+ import { TableToolbarAppearanceConfig, TableConfig, TableToolbarAppearanceDensity, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, FilterPresentationConfig, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, ResourceQuickConnectComponent, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, AfterViewInit, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterViewChecked, AfterContentInit, Injector, Type } from '@angular/core';
5
5
  import { ActivatedRoute } from '@angular/router';
@@ -392,6 +392,7 @@ declare class TableDefaultsProvider {
392
392
  }
393
393
 
394
394
  type FilterConfig = {
395
+ presentation?: FilterPresentationConfig;
395
396
  alwaysVisibleFields?: string[];
396
397
  /**
397
398
  * Deep metadata overrides for any field rendered by the filter runtime.
@@ -513,6 +514,7 @@ type I18n = {
513
514
  searchPlaceholder: string;
514
515
  advanced: string;
515
516
  advancedTitle?: string;
517
+ filtersLabel?: string;
516
518
  advancedOpening?: string;
517
519
  advancedUnavailable?: string;
518
520
  clear: string;
@@ -616,6 +618,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
616
618
  * Keys are field names from the filter DTO schema.
617
619
  */
618
620
  alwaysVisibleFieldMetadataOverrides: Record<string, Record<string, any>> | undefined;
621
+ private readonly schemaTransportOptions;
619
622
  /** Runtime field-level metadata overrides applied by the metadata editor. */
620
623
  private fieldMetadataOverrides;
621
624
  /** Additional selected field ids to render before pinned always-visible */
@@ -630,6 +633,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
630
633
  showFilterSettings: boolean;
631
634
  /** Controla a exibição do botão de filtro avançado */
632
635
  showAdvancedButton: boolean;
636
+ /** Projection of FilterConfig.presentation for standalone and embedded hosts. */
637
+ presentation?: FilterConfig['presentation'];
638
+ get filterHeaderText(): string;
639
+ get filterHeaderIcon(): string;
640
+ get advancedActionText(): string;
641
+ get advancedActionIcon(): string;
642
+ get advancedActionDisplay(): string;
633
643
  /** Controla a exibição do botão de adicionar campos */
634
644
  showAddButton: boolean;
635
645
  /** Controla a exibição do botão de limpar filtros */
@@ -1048,7 +1058,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
1048
1058
  private isEditableElement;
1049
1059
  private focusQuick;
1050
1060
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
1051
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "filterId": { "alias": "filterId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "value": { "alias": "value"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "alwaysVisibleFieldMetadataOverrides": { "alias": "alwaysVisibleFieldMetadataOverrides"; "required": false; }; "selectedFieldIds": { "alias": "selectedFieldIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "disablePersistence": { "alias": "disablePersistence"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "showAdvancedButton": { "alias": "showAdvancedButton"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showClearButton": { "alias": "showClearButton"; "required": false; }; "showSearchButton": { "alias": "showSearchButton"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "useInlineSelectVariant": { "alias": "useInlineSelectVariant"; "required": false; }; "useInlineSearchableSelectVariant": { "alias": "useInlineSearchableSelectVariant"; "required": false; }; "useInlineMultiSelectVariant": { "alias": "useInlineMultiSelectVariant"; "required": false; }; "useInlineInputVariant": { "alias": "useInlineInputVariant"; "required": false; }; "useInlineToggleVariant": { "alias": "useInlineToggleVariant"; "required": false; }; "useInlineRangeVariant": { "alias": "useInlineRangeVariant"; "required": false; }; "useInlineDateVariant": { "alias": "useInlineDateVariant"; "required": false; }; "useInlineDateRangeVariant": { "alias": "useInlineDateRangeVariant"; "required": false; }; "useInlineTimeVariant": { "alias": "useInlineTimeVariant"; "required": false; }; "useInlineTimeRangeVariant": { "alias": "useInlineTimeRangeVariant"; "required": false; }; "useInlineTreeSelectVariant": { "alias": "useInlineTreeSelectVariant"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; "advancedClearButtonsEnabled": { "alias": "advancedClearButtonsEnabled"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "contextChange": "contextChange"; "tagsChange": "tagsChange"; "selectedFieldIdsChange": "selectedFieldIdsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
1061
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "filterId": { "alias": "filterId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "value": { "alias": "value"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "alwaysVisibleFieldMetadataOverrides": { "alias": "alwaysVisibleFieldMetadataOverrides"; "required": false; }; "selectedFieldIds": { "alias": "selectedFieldIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "disablePersistence": { "alias": "disablePersistence"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "showAdvancedButton": { "alias": "showAdvancedButton"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showClearButton": { "alias": "showClearButton"; "required": false; }; "showSearchButton": { "alias": "showSearchButton"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "useInlineSelectVariant": { "alias": "useInlineSelectVariant"; "required": false; }; "useInlineSearchableSelectVariant": { "alias": "useInlineSearchableSelectVariant"; "required": false; }; "useInlineMultiSelectVariant": { "alias": "useInlineMultiSelectVariant"; "required": false; }; "useInlineInputVariant": { "alias": "useInlineInputVariant"; "required": false; }; "useInlineToggleVariant": { "alias": "useInlineToggleVariant"; "required": false; }; "useInlineRangeVariant": { "alias": "useInlineRangeVariant"; "required": false; }; "useInlineDateVariant": { "alias": "useInlineDateVariant"; "required": false; }; "useInlineDateRangeVariant": { "alias": "useInlineDateRangeVariant"; "required": false; }; "useInlineTimeVariant": { "alias": "useInlineTimeVariant"; "required": false; }; "useInlineTimeRangeVariant": { "alias": "useInlineTimeRangeVariant"; "required": false; }; "useInlineTreeSelectVariant": { "alias": "useInlineTreeSelectVariant"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; "advancedClearButtonsEnabled": { "alias": "advancedClearButtonsEnabled"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "contextChange": "contextChange"; "tagsChange": "tagsChange"; "selectedFieldIdsChange": "selectedFieldIdsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
1052
1062
  }
1053
1063
 
1054
1064
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
@@ -1217,6 +1227,7 @@ type RowActionRuntimeOptions = {
1217
1227
  };
1218
1228
  type RowActionTriggerEvent = {
1219
1229
  target?: EventTarget | null;
1230
+ currentTarget?: EventTarget | null;
1220
1231
  stopPropagation?: () => void;
1221
1232
  };
1222
1233
  type RuntimeRowAction = {
@@ -1516,10 +1527,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1516
1527
  private scheduleHorizontalOverflowRefresh;
1517
1528
  /**
1518
1529
  * Materializes the existing responsive contract as a labelled record card on
1519
- * narrow screens. Virtual rows intentionally keep the scroll-table path:
1530
+ * narrow screens or widget containers. Virtual rows keep the scroll-table path:
1520
1531
  * their fixed item height cannot safely represent a variable-height card.
1521
1532
  */
1522
1533
  isMobileCardModeActive(): boolean;
1534
+ private isWithinResponsiveCardBreakpoint;
1523
1535
  getMobileCardColumnOrder(column: ColumnDefinition): number;
1524
1536
  getMobileCardActionsOrder(): number;
1525
1537
  private scheduleResponsiveHorizontalScrollRefresh;
@@ -1650,6 +1662,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1650
1662
  private conditionalSurfaceObserver;
1651
1663
  private conditionalSurfaceFrameId;
1652
1664
  private readonly warnedUnsupportedFeatures;
1665
+ private readonly activeCollectionCreateSurfaceOpens;
1653
1666
  private warnedStrictCspStyleMode;
1654
1667
  private fallbackLogger?;
1655
1668
  private fallbackLoggerEnvironment;
@@ -2050,6 +2063,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2050
2063
  private getOpeningRowActions;
2051
2064
  private executeDeleteAction;
2052
2065
  private dispatchRowAction;
2066
+ private openDiscoveredRowView;
2053
2067
  private groundRowActionConfigForDispatch;
2054
2068
  private getUnavailableGroundedRowActionMessage;
2055
2069
  private isResourceActionCatalogItem;
@@ -2062,6 +2076,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2062
2076
  private showActionFeedbackMessage;
2063
2077
  private emitEventWithActionFeedback;
2064
2078
  private executeConfiguredGlobalAction;
2079
+ private withTableRuntimeContext;
2080
+ private executeSurfaceOpen;
2065
2081
  private resolveConfiguredGlobalActionRef;
2066
2082
  private resolveActionGlobalActionRef;
2067
2083
  private resolveGlobalActionPayload;
@@ -2145,6 +2161,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2145
2161
  isCustomizationAvailable(): boolean;
2146
2162
  private isAuthoringAssistantAvailable;
2147
2163
  openTableSettings(): void;
2164
+ private openTableSettingsEditor;
2148
2165
  private applyTableConfig;
2149
2166
  private buildTableEditorRuntimeContext;
2150
2167
  private emitWidgetInputPatch;
@@ -2498,6 +2515,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2498
2515
  * Verifica se uma funcionalidade está disponível
2499
2516
  */
2500
2517
  isFeatureAvailable(feature: string): boolean;
2518
+ private filterI18nCache?;
2501
2519
  /**
2502
2520
  * Obtém configurações de i18n para o filtro baseado na configuração da tabela
2503
2521
  */
@@ -2701,6 +2719,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2701
2719
  isRowClickSelectable(): boolean;
2702
2720
  getRowTabIndex(row: any, index: number): number | null;
2703
2721
  onRowFocused(row: any, index: number): void;
2722
+ onSingleSelectionSpace(event: Event, row: unknown): void;
2704
2723
  onRowKeydown(event: KeyboardEvent, row: any, index: number): void;
2705
2724
  private reconcileKeyboardFocusAfterDataChange;
2706
2725
  private hasKeyboardRowFocus;
@@ -2709,6 +2728,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2709
2728
  masterToggle(): void;
2710
2729
  isAllSelected(): boolean;
2711
2730
  toggleRow(row: any): void;
2731
+ onSingleSelectionChanged(row: any): void;
2712
2732
  getRowSelectionAriaLabel(row: any, index?: number): string;
2713
2733
  getMasterSelectionAriaLabel(): string;
2714
2734
  private selectRowFromUserInteraction;
@@ -2891,7 +2911,7 @@ interface JsonEditorEvent {
2891
2911
  type: 'apply' | 'format' | 'validation';
2892
2912
  payload: JsonValidationResult;
2893
2913
  }
2894
- declare class JsonConfigEditorComponent implements OnInit, OnDestroy {
2914
+ declare class JsonConfigEditorComponent implements OnChanges, OnDestroy {
2895
2915
  private cdr;
2896
2916
  document: TableAuthoringDocument | null;
2897
2917
  documentChange: EventEmitter<TableAuthoringDocument>;
@@ -2904,7 +2924,8 @@ declare class JsonConfigEditorComponent implements OnInit, OnDestroy {
2904
2924
  private destroy$;
2905
2925
  private jsonTextChanges$;
2906
2926
  constructor(cdr: ChangeDetectorRef);
2907
- ngOnInit(): void;
2927
+ ngOnChanges(changes: SimpleChanges): void;
2928
+ private matchesDocument;
2908
2929
  ngOnDestroy(): void;
2909
2930
  onJsonTextChange(text: string): void;
2910
2931
  applyJsonChanges(): void;
@@ -3483,6 +3504,10 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
3483
3504
  private iconPicker;
3484
3505
  config: TableConfig;
3485
3506
  configChange: EventEmitter<_praxisui_core.TableConfigModern>;
3507
+ validationChange: EventEmitter<boolean>;
3508
+ private surfaceValidity;
3509
+ get hasInvalidSurfaceDraft(): boolean;
3510
+ onSurfaceValidationChange(kind: 'toolbar' | 'row' | 'bulk', valid: boolean): void;
3486
3511
  toolbarActionsChange: EventEmitter<ToolbarActionsChange>;
3487
3512
  toolbarForm: FormGroup;
3488
3513
  isV2: boolean;
@@ -3515,6 +3540,7 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
3515
3540
  hint?: string;
3516
3541
  };
3517
3542
  }): string;
3543
+ private formProjectionBaseline?;
3518
3544
  ngOnInit(): void;
3519
3545
  ngOnChanges(changes: SimpleChanges): void;
3520
3546
  ngOnDestroy(): void;
@@ -3529,6 +3555,8 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
3529
3555
  private removeAddToolbarAction;
3530
3556
  private syncAddFormFromActions;
3531
3557
  private updateConfig;
3558
+ /** Full editor projection used only to compare changes; defaults are not authored implicitly. */
3559
+ private buildConfig;
3532
3560
  getActionSelectValue(action?: EditableTableAction): string;
3533
3561
  getActionParam(action?: EditableTableAction): string;
3534
3562
  isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
@@ -3601,7 +3629,7 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
3601
3629
  pickRowMenuIcon(): Promise<void>;
3602
3630
  pickRowHeaderIcon(): Promise<void>;
3603
3631
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarActionsEditorComponent, never>;
3604
- static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarActionsEditorComponent, "toolbar-actions-editor", never, { "config": { "alias": "config"; "required": false; }; }, { "configChange": "configChange"; "toolbarActionsChange": "toolbarActionsChange"; }, never, never, true, never>;
3632
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarActionsEditorComponent, "toolbar-actions-editor", never, { "config": { "alias": "config"; "required": false; }; }, { "configChange": "configChange"; "validationChange": "validationChange"; "toolbarActionsChange": "toolbarActionsChange"; }, never, never, true, never>;
3605
3633
  }
3606
3634
 
3607
3635
  interface MessagesLocalizationChange {
@@ -3648,6 +3676,8 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
3648
3676
  private fb;
3649
3677
  private readonly hostRef;
3650
3678
  private readonly cdr;
3679
+ private readonly presentationI18n;
3680
+ get presentationTabLabel(): string;
3651
3681
  metadata: FieldMetadata[];
3652
3682
  metadataSource: 'filter-dto' | 'columns';
3653
3683
  metadataLoading: boolean;
@@ -3656,6 +3686,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
3656
3686
  configKey?: string;
3657
3687
  settingsChange: EventEmitter<FilterConfig>;
3658
3688
  form: FormGroup<{
3689
+ presentation: FormControl<FilterConfig['presentation']>;
3659
3690
  alwaysVisibleFields: FormControl<string[]>;
3660
3691
  showAdvanced: FormControl<boolean>;
3661
3692
  mode: FormControl<'filter'>;
@@ -3692,6 +3723,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
3692
3723
  canSave$: Observable<boolean>;
3693
3724
  isDirty$: Observable<boolean>;
3694
3725
  isValid$: Observable<boolean>;
3726
+ private readonly savingState;
3695
3727
  isBusy$: Observable<boolean>;
3696
3728
  private initialSettings;
3697
3729
  private extraSettings;
@@ -3826,6 +3858,9 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
3826
3858
  renameTagPrompt(index: number): void;
3827
3859
  dropTags(event: CdkDragDrop<FilterTag[]>): void;
3828
3860
  ngOnChanges(changes: SimpleChanges): void;
3861
+ updatePresentation(value: FilterConfig['presentation']): void;
3862
+ onSave(): FilterConfig | undefined | Promise<FilterConfig | undefined>;
3863
+ private persistDraft;
3829
3864
  getSettingsValue(): FilterConfig;
3830
3865
  private updateEffectiveJson;
3831
3866
  private buildFullConfigFromForm;
@@ -4160,6 +4195,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
4160
4195
  icon: string;
4161
4196
  }[];
4162
4197
  activeSectionIndex: number;
4198
+ surfaceDraftInvalid: boolean;
4199
+ onSurfaceDraftValidationChange(valid: boolean): void;
4163
4200
  private originalConfig;
4164
4201
  editedConfig: TableConfig;
4165
4202
  resourcePath: string;
@@ -4194,6 +4231,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
4194
4231
  schemaSnapshotMissing: boolean;
4195
4232
  isV2Config: boolean;
4196
4233
  canSave: boolean;
4234
+ private mobileBreakpointDraft;
4197
4235
  hasErrors: boolean;
4198
4236
  hasSuccess: boolean;
4199
4237
  statusMessage: string;
@@ -4266,6 +4304,11 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
4266
4304
  private loadFilterDtoMetas;
4267
4305
  onIdFieldChange(val: string): void;
4268
4306
  onIdFieldOptionSelected(value: string): void;
4307
+ get mobileCardMode(): boolean;
4308
+ get mobileBreakpoint(): number | null;
4309
+ get mobileBreakpointInvalid(): boolean;
4310
+ onMobileCardModeChange(cardMode: boolean): void;
4311
+ onMobileBreakpointChange(value: number | null): void;
4269
4312
  onHorizontalScrollChange(val: 'auto' | 'wrap' | 'none'): void;
4270
4313
  onReconcileIdField(): void;
4271
4314
  onAcceptServerHash(): void;
@@ -4329,30 +4372,31 @@ interface PraxisTableWidgetEditorValue {
4329
4372
  declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
4330
4373
  inputs: PraxisTableWidgetEditorInputs | null;
4331
4374
  widgetKey?: string;
4375
+ context: Record<string, unknown>;
4376
+ private editorBaseline?;
4377
+ private sourceDraft?;
4378
+ private readonly i18n;
4379
+ get configurationSource(): 'local-first' | 'input-first' | 'volatile';
4380
+ tx(key: string, fallback: string): string;
4381
+ changeConfigurationSource(value: string): void;
4382
+ private updateDirtyState;
4332
4383
  tableEditor?: PraxisTableConfigEditor;
4333
4384
  readonly isDirty$: BehaviorSubject<boolean>;
4334
4385
  readonly isValid$: BehaviorSubject<boolean>;
4335
4386
  readonly isBusy$: BehaviorSubject<boolean>;
4336
- private readonly cdr;
4337
- private readonly crudService;
4338
4387
  private readonly subscription;
4339
4388
  ngAfterViewInit(): void;
4340
4389
  ngOnDestroy(): void;
4341
4390
  getSettingsValue(): PraxisTableWidgetEditorValue;
4342
4391
  onSave(): PraxisTableWidgetEditorValue;
4343
4392
  reset(): void;
4344
- private initializeChildEditor;
4345
- private hydrateColumnsFromSchemaIfNeeded;
4346
- private fieldToColumn;
4347
- private resolveColumnType;
4348
- private humanizeFieldName;
4349
- private tryInject;
4350
4393
  private buildValue;
4351
4394
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
4352
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableWidgetConfigEditor, "praxis-table-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; "widgetKey": { "alias": "widgetKey"; "required": false; }; }, {}, never, never, true, never>;
4395
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableWidgetConfigEditor, "praxis-table-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; "widgetKey": { "alias": "widgetKey"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, {}, never, never, true, never>;
4353
4396
  }
4354
4397
 
4355
4398
  interface PraxisFilterWidgetEditorInputs {
4399
+ presentation?: FilterConfig['presentation'];
4356
4400
  resourcePath?: string | null;
4357
4401
  fieldMetadata?: FieldMetadata[] | null;
4358
4402
  filterId?: string;
@@ -4393,8 +4437,22 @@ interface PraxisFilterWidgetEditorInputs {
4393
4437
  interface PraxisFilterWidgetEditorValue {
4394
4438
  inputs: PraxisFilterWidgetEditorInputs;
4395
4439
  }
4396
- declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
4440
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
4397
4441
  widgetKey?: string;
4442
+ resourceEditor?: ResourceQuickConnectComponent;
4443
+ private readonly crud;
4444
+ private readonly cdr;
4445
+ private readonly i18n;
4446
+ resourceError: boolean;
4447
+ private loadedResourcePath?;
4448
+ private resourceDirty;
4449
+ private settingsDirty;
4450
+ private loadingResource;
4451
+ private fieldRequest;
4452
+ tx(key: string): string;
4453
+ ngAfterViewInit(): void;
4454
+ loadResourceFields(markDirty?: boolean): Promise<void>;
4455
+ private optionalInject;
4398
4456
  set inputs(value: PraxisFilterWidgetEditorInputs | null);
4399
4457
  get inputs(): PraxisFilterWidgetEditorInputs | null;
4400
4458
  set filterSettings(component: FilterSettingsComponent | undefined);