@praxisui/table 8.0.0-beta.30 → 8.0.0-beta.32

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 +1 @@
1
- export { A as AnalyticsTableConfigAdapterService, G as AnalyticsTableContractService, E as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, V as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, W as ColumnsConfigEditorComponent, D as DATE_PRESETS, y as DataFormatterComponent, x as DataFormattingService, a4 as FORMULA_TEMPLATES, F as FilterConfigService, a0 as FilterSettingsComponent, a3 as FormulaGeneratorService, $ as JsonConfigEditorComponent, Y as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, w as PERCENTAGE_PRESETS, t as PRAXIS_FILTER_COMPONENT_METADATA, P as PRAXIS_TABLE_AUTHORING_MANIFEST, a5 as PRAXIS_TABLE_COMPONENT_METADATA, s as PraxisFilter, v as PraxisFilterWidgetConfigEditor, o as PraxisTable, q as PraxisTableConfigEditor, X as PraxisTableInlineAuthoringEditorComponent, p as PraxisTableToolbar, r as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, a as TABLE_AI_CAPABILITIES, l as TABLE_COMPONENT_AI_CAPABILITIES, f as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, j as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, e as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, h as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, k as TABLE_COMPONENT_EDIT_PLAN_KIND, i as TABLE_COMPONENT_EDIT_PLAN_VERSION, d as TASK_PRESETS, z as TableDefaultsProvider, a1 as TableRulesEditorComponent, Z as ToolbarActionsEditorComponent, _ as ValueMappingEditorComponent, a2 as VisualFormulaBuilderComponent, R as buildTableApplyPlan, m as coerceTableComponentEditPlan, c as coerceTableComponentEditPlans, n as compileTableComponentEditPlan, b as compileTableComponentEditPlans, K as createTableAuthoringDocument, H as getActionId, a8 as getEnum, a7 as getTableCapabilities, g as getTableComponentEditPlanCapabilities, I as isTableRendererSupportedByRichContentP0, J as mapTableRendererToRichContentP0, M as normalizeTableAuthoringDocument, L as parseLegacyOrTableDocument, u as providePraxisFilterMetadata, a6 as providePraxisTableMetadata, U as serializeTableAuthoringDocument, Q as toCanonicalTableConfig, O as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-DFBE5wpp.mjs';
1
+ export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-BoDxoDos.mjs';
@@ -1,3 +1,4 @@
1
1
  {
2
- "module": "../fesm2022/praxisui-table-filter-drawer-adapter.mjs"
2
+ "module": "../fesm2022/praxisui-table-filter-drawer-adapter.mjs",
3
+ "typings": "../types/praxisui-table-filter-drawer-adapter.d.ts"
3
4
  }
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.30",
3
+ "version": "8.0.0-beta.32",
4
4
  "description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
5
5
  "peerDependencies": {
6
- "@angular/common": "^20.0.0",
7
- "@angular/core": "^20.0.0",
8
- "@praxisui/ai": "^8.0.0-beta.30",
9
- "@praxisui/core": "^8.0.0-beta.30",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.30",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.30",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.30",
13
- "@praxisui/rich-content": "^8.0.0-beta.30",
14
- "@praxisui/settings-panel": "^8.0.0-beta.30",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.30",
16
- "@angular/cdk": "^20.0.0",
17
- "@angular/forms": "^20.0.0",
18
- "@angular/material": "^20.0.0",
19
- "@angular/router": "^20.0.0",
20
- "@praxisui/dialog": "^8.0.0-beta.30",
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0",
8
+ "@praxisui/ai": "^8.0.0-beta.32",
9
+ "@praxisui/core": "^8.0.0-beta.32",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.32",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.32",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.32",
13
+ "@praxisui/rich-content": "^8.0.0-beta.32",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.32",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.32",
16
+ "@angular/cdk": "^21.0.0",
17
+ "@angular/forms": "^21.0.0",
18
+ "@angular/material": "^21.0.0",
19
+ "@angular/router": "^21.0.0",
20
+ "@praxisui/dialog": "^8.0.0-beta.32",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {
@@ -46,18 +46,19 @@
46
46
  ],
47
47
  "sideEffects": false,
48
48
  "module": "fesm2022/praxisui-table.mjs",
49
- "typings": "index.d.ts",
49
+ "typings": "types/praxisui-table.d.ts",
50
50
  "exports": {
51
51
  "./package.json": {
52
52
  "default": "./package.json"
53
53
  },
54
54
  ".": {
55
- "types": "./index.d.ts",
55
+ "types": "./types/praxisui-table.d.ts",
56
56
  "default": "./fesm2022/praxisui-table.mjs"
57
57
  },
58
58
  "./filter-drawer-adapter": {
59
- "types": "./filter-drawer-adapter/index.d.ts",
59
+ "types": "./types/praxisui-table-filter-drawer-adapter.d.ts",
60
60
  "default": "./fesm2022/praxisui-table-filter-drawer-adapter.mjs"
61
61
  }
62
- }
62
+ },
63
+ "type": "module"
63
64
  }
@@ -385,6 +385,7 @@ row selection through table affordances.
385
385
  | `afterBulkDelete` | `rows[]` | Depois de bulk delete com sucesso. | Partial | Preservado da documentação anterior. |
386
386
  | `bulkDeleteError` | `{ rows, error }` | Erro em operação de delete em lote. | Partial | Preservado da documentação anterior. |
387
387
  | `schemaStatusChange` | `{ outdated, serverHash?, lastVerifiedAt?, trigger?, tableId? }` | Verificação de versão de schema concluída. | Partial | Usado para notificação de drift entre runtime e servidor. |
388
+ | `configChange` | `TableConfig` | Configuração materializada pelo runtime/editor/assistente. | Active | Permite que o host sincronize mudanças feitas por authoring em tempo de execução. |
388
389
  | `metadataChange` | `{ trigger, meta, tableId? }` | Metadados operacionais atualizados pelo runtime/editor. | Partial | Emite contexto de trigger e a carga corrente de `config.meta`. |
389
390
  | `loadingStateChange` | `LoadingState` | Mudança de estado (`config/schema/data/render`). | Active | Emitido por `emitLoadingState()`. |
390
391
 
@@ -810,7 +811,7 @@ Frontend (UI):
810
811
  | `praxis-table-toolbar` | Barra superior/inferior com acoes, bulk e export | `toolbar`, `actions`, `export`, `behavior.filtering.*` |
811
812
  | `praxis-filter` | Filtro avancado acoplado a toolbar | `behavior.filtering.advancedFilters.*`, `behavior.filtering.debounceTime`, `resourcePath` |
812
813
  | `praxis-empty-state-card` | Estado inicial quando nao ha conexao remota | exibido quando nao ha `resourcePath` valido |
813
- | `PraxisAiAssistantShellComponent` | Copiloto semantico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro (nao exposto no JSON) |
814
+ | `PraxisAiAssistantShellComponent` | Copiloto semantico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro; ao minimizar, a sessao fica no registry com `presence: "origin-anchor"` e o affordance volta ao gatilho da tabela (nao exposto no JSON) |
814
815
  | Angular Material + CDK | Base de tabela, menus, selecao e virtual scroll | `behavior.pagination.*`, `behavior.selection.*`, `behavior.virtualization.*`, `appearance.spacing.*` |
815
816
 
816
817
  Backend e contratos:
@@ -1,7 +1,10 @@
1
+ import * as _praxisui_core from '@praxisui/core';
2
+ import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
1
3
  import * as i0 from '@angular/core';
2
4
  import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit, Injector } from '@angular/core';
3
5
  import { ActivatedRoute } from '@angular/router';
4
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
7
+ import * as _angular_material_paginator from '@angular/material/paginator';
5
8
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
6
9
  import { MatSort, Sort } from '@angular/material/sort';
7
10
  import { MatSnackBar } from '@angular/material/snack-bar';
@@ -9,8 +12,6 @@ import { SelectionModel } from '@angular/cdk/collections';
9
12
  import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
10
13
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
14
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
12
- import * as _praxisui_core from '@praxisui/core';
13
- import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
15
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
15
16
  import { MatDialog } from '@angular/material/dialog';
16
17
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
@@ -20,7 +21,6 @@ import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssista
20
21
  import { HttpClient } from '@angular/common/http';
21
22
  import { MatTabChangeEvent } from '@angular/material/tabs';
22
23
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
23
- import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
24
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
25
 
26
26
  interface ActionLike {
@@ -835,6 +835,10 @@ type SchemaFieldHint = {
835
835
  optionValueKey?: string;
836
836
  enumValues?: string[];
837
837
  };
838
+ type FilterSchemaFieldHint = SchemaFieldHint & {
839
+ relatedColumnFields?: string[];
840
+ relatedColumnLabels?: string[];
841
+ };
838
842
  type PraxisDataQueryContextBridge = {
839
843
  filters?: Record<string, unknown> | null;
840
844
  sort?: string[] | null;
@@ -986,6 +990,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
986
990
  afterBulkDelete: EventEmitter<any>;
987
991
  bulkDeleteError: EventEmitter<any>;
988
992
  schemaStatusChange: EventEmitter<any>;
993
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
989
994
  metadataChange: EventEmitter<any>;
990
995
  loadingStateChange: EventEmitter<LoadingState>;
991
996
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
@@ -1059,6 +1064,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1059
1064
  private readonly collectionExport;
1060
1065
  private readonly paginatorIntl;
1061
1066
  private schemaFieldsSnapshot;
1067
+ private filterSchemaFieldsSnapshot;
1062
1068
  private runtimeSchemaMeta;
1063
1069
  schemaError: boolean;
1064
1070
  dataError: boolean;
@@ -1153,6 +1159,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1153
1159
  get hostColumnBordersClass(): boolean;
1154
1160
  trackByRow(index: number, item: any): any;
1155
1161
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1162
+ getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1163
+ ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1156
1164
  aiAdapter: any;
1157
1165
  private aiAdapterLoadStarted;
1158
1166
  private aiAssistantOpenAfterAdapterLoad;
@@ -1204,6 +1212,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1204
1212
  private recomputeLocalView;
1205
1213
  private resolveLocalSortField;
1206
1214
  private setSchemaFieldsSnapshot;
1215
+ private setFilterSchemaFieldsSnapshot;
1216
+ private resolveFilterSchemaRelatedColumns;
1217
+ private normalizeFieldAlias;
1207
1218
  private normalizeSchemaOptions;
1208
1219
  private normalizeEnumValues;
1209
1220
  private normalizeSchemaKey;
@@ -1227,6 +1238,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1227
1238
  private ensureAiAdapterLoaded;
1228
1239
  openAiAssistant(): void;
1229
1240
  aiAssistantTriggerTestId(position: string): string;
1241
+ hasMinimizedAiAssistantSession(): boolean;
1242
+ aiAssistantTriggerIcon(): string;
1243
+ aiAssistantTriggerBadge(): string;
1244
+ aiAssistantTriggerLabel(): string;
1245
+ aiAssistantTriggerTooltip(): string;
1230
1246
  openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1231
1247
  closeAiAssistant(): void;
1232
1248
  onAiAssistantPromptChange(prompt: string): void;
@@ -1575,6 +1591,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1575
1591
  */
1576
1592
  private verifyServerSchemaVersion;
1577
1593
  private loadSchema;
1594
+ private loadFilterSchemaSnapshot;
1578
1595
  private convertFieldToColumn;
1579
1596
  /**
1580
1597
  * Apply automatic renderer hints based on schema field metadata.
@@ -1877,6 +1894,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1877
1894
  private deriveAvatarInitials;
1878
1895
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1879
1896
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1897
+ private getAvatarRichContentStyle;
1880
1898
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1881
1899
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1882
1900
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -2002,7 +2020,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2002
2020
  private scheduleRowDiscoveryMarkForCheck;
2003
2021
  ngOnDestroy(): void;
2004
2022
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
2005
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2023
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2006
2024
  static ngAcceptInputType_enableCustomization: unknown;
2007
2025
  }
2008
2026
 
@@ -3751,7 +3769,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3751
3769
  [key: number]: string;
3752
3770
  }>;
3753
3771
  mappingPairs: ValueMappingPair[];
3754
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3772
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3755
3773
  displayedColumns: string[];
3756
3774
  showImportDialog: boolean;
3757
3775
  importJsonText: string;
@@ -3982,9 +4000,9 @@ type ComponentEditPlanCapability = {
3982
4000
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3983
4001
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3984
4002
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
3985
- type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_align' | 'set_column_sticky' | 'set_column_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_renderer' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers' | 'set_row_conditional_renderer' | 'configure_table_filtering' | 'configure_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
3986
- type TableComponentEditOperationId = 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.align.set' | 'column.sticky.set' | 'column.renderer.set' | 'column.valueMapping.set' | 'column.conditionalStyle.add' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
3987
- declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "configure_export", "set_table_density", "set_toolbar_visibility"];
4003
+ type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_align' | 'set_column_sticky' | 'set_column_conditional_style' | 'set_row_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_renderer' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers' | 'set_row_conditional_renderer' | 'configure_table_filtering' | 'configure_advanced_filters' | 'add_advanced_filter_fields' | 'remove_advanced_filter_fields' | 'configure_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'add_toolbar_action' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
4004
+ type TableComponentEditOperationId = 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.align.set' | 'column.sticky.set' | 'column.renderer.set' | 'column.valueMapping.set' | 'column.conditionalStyle.add' | 'row.styleRule.add' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'filter.advanced.configure' | 'filter.advanced.fields.add' | 'filter.advanced.fields.remove' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'toolbar.action.add' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
4005
+ declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3988
4006
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3989
4007
  interface TableComponentEditPlan {
3990
4008
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
@@ -4026,7 +4044,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4026
4044
  readonly $defs: {
4027
4045
  readonly changeKind: {
4028
4046
  readonly type: "string";
4029
- readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "configure_export", "set_table_density", "set_toolbar_visibility"];
4047
+ readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
4030
4048
  };
4031
4049
  readonly capabilityPath: {
4032
4050
  readonly type: "string";
@@ -4082,7 +4100,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4082
4100
  readonly const: "praxis-table";
4083
4101
  };
4084
4102
  readonly operationId: {
4085
- readonly enum: readonly ["column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.align.set", "column.sticky.set", "column.renderer.set", "column.valueMapping.set", "column.conditionalStyle.add", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4103
+ readonly enum: readonly ["column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.align.set", "column.sticky.set", "column.renderer.set", "column.valueMapping.set", "column.conditionalStyle.add", "row.styleRule.add", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "filter.advanced.configure", "filter.advanced.fields.add", "filter.advanced.fields.remove", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "toolbar.action.add", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4086
4104
  };
4087
4105
  readonly target: true;
4088
4106
  readonly input: true;
@@ -1,220 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Inject, Component } from '@angular/core';
3
- import * as i2 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
5
- import * as i1 from '@angular/material/dialog';
6
- import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
7
- import * as i3 from '@angular/material/button';
8
- import { MatButtonModule } from '@angular/material/button';
9
- import * as i15 from '@angular/material/progress-bar';
10
- import { MatProgressBarModule } from '@angular/material/progress-bar';
11
- import * as i5 from '@angular/material/icon';
12
- import { MatIconModule } from '@angular/material/icon';
13
- import * as i10 from '@angular/material/tooltip';
14
- import { MatTooltipModule } from '@angular/material/tooltip';
15
- import { PraxisFilterForm } from '@praxisui/dynamic-form';
16
-
17
- class FilterFormDialogHostComponent {
18
- data;
19
- ref;
20
- valid = true;
21
- ready = false;
22
- lastValue = {};
23
- formGroup = null;
24
- canSave = false;
25
- saving = false;
26
- constructor(data, ref) {
27
- this.data = data;
28
- this.ref = ref;
29
- }
30
- onReady(ev) {
31
- try {
32
- this.formGroup = ev?.formGroup || null;
33
- const dto = this.data?.initialDto || {};
34
- if (ev?.formGroup && dto && Object.keys(dto).length) {
35
- ev.formGroup.patchValue(dto, { emitEvent: false });
36
- }
37
- this.lastValue = this.formGroup?.getRawValue?.() ?? this.lastValue;
38
- }
39
- catch { }
40
- this.ready = true;
41
- this.updateCanSave();
42
- }
43
- onChange(ev) {
44
- this.lastValue = ev?.formData ?? {};
45
- this.updateCanSave();
46
- }
47
- onValidity(v) {
48
- this.valid = v;
49
- this.updateCanSave();
50
- }
51
- apply() {
52
- const formData = this.formGroup?.getRawValue?.() ??
53
- this.lastValue ??
54
- this.data?.initialDto ??
55
- {};
56
- this.ref.close({ formData });
57
- }
58
- close() { this.ref.close(); }
59
- clean(obj) {
60
- const out = {};
61
- Object.keys(obj || {}).forEach((k) => {
62
- const v = obj[k];
63
- if (v !== '' && v !== null && v !== undefined)
64
- out[k] = v;
65
- });
66
- return out;
67
- }
68
- buildDtoForSave() {
69
- const base = this.data?.initialDto || {};
70
- const current = this.formGroup?.getRawValue?.() ?? this.lastValue ?? {};
71
- const merged = { ...base, ...current };
72
- return this.clean(merged);
73
- }
74
- updateCanSave() {
75
- this.canSave =
76
- this.ready &&
77
- this.valid &&
78
- Object.keys(this.buildDtoForSave() || {}).length > 0;
79
- }
80
- saveShortcutTooltip() {
81
- if (this.saving) {
82
- return this.data.i18n?.shortcutSaving || 'Salvando atalho...';
83
- }
84
- if (!this.valid) {
85
- return this.data.i18n?.shortcutInvalid || 'Corrija os filtros antes de salvar o atalho.';
86
- }
87
- if (!Object.keys(this.buildDtoForSave() || {}).length) {
88
- return this.data.i18n?.shortcutRequiresFilter || 'Preencha ao menos um filtro para salvar um atalho.';
89
- }
90
- return '';
91
- }
92
- saveShortcut() {
93
- if (!this.canSave || this.saving)
94
- return;
95
- const dto = this.buildDtoForSave();
96
- if (!Object.keys(dto).length)
97
- return;
98
- this.saving = true;
99
- try {
100
- this.data?.onSaveShortcut?.(dto);
101
- }
102
- finally {
103
- this.saving = false;
104
- this.updateCanSave();
105
- }
106
- }
107
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FilterFormDialogHostComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
108
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: FilterFormDialogHostComponent, isStandalone: true, selector: "praxis-filter-form-dialog-host", ngImport: i0, template: `
109
- <div mat-dialog-title class="pfx-dialog-title" id="filterDialogTitle">
110
- <div class="pfx-dialog-title-text">
111
- <mat-icon>tune</mat-icon>
112
- <span>{{ data.title || 'Filtro avançado' }}</span>
113
- </div>
114
- <button mat-icon-button type="button" class="pfx-dialog-close" (click)="close()"
115
- [attr.aria-label]="data.i18n?.cancel || 'Fechar'">
116
- <mat-icon>close</mat-icon>
117
- </button>
118
- </div>
119
- <mat-dialog-content class="pfx-filter-dialog-content" aria-labelledby="filterDialogTitle">
120
- <mat-progress-bar *ngIf="data?.schemaLoading" mode="indeterminate"></mat-progress-bar>
121
- <div
122
- *ngIf="data?.config && !ready"
123
- class="pfx-dialog-loading"
124
- role="status"
125
- aria-live="polite"
126
- >
127
- <mat-progress-bar mode="indeterminate"></mat-progress-bar>
128
- <span>{{ data.i18n?.opening || 'Carregando filtros...' }}</span>
129
- </div>
130
- <praxis-filter-form
131
- *ngIf="data?.config"
132
- [class.pfx-form-pending]="!ready"
133
- [formId]="data.formId"
134
- [resourcePath]="data.resourcePath"
135
- [mode]="'edit'"
136
- [config]="data.config"
137
- (formReady)="onReady($event)"
138
- (valueChange)="onChange($event)"
139
- (validityChange)="onValidity($event)"
140
- ></praxis-filter-form>
141
- <p *ngIf="!data?.config && !data?.schemaLoading" class="pfx-empty-state">{{ data.i18n?.noData || 'Nenhum dado' }}</p>
142
- </mat-dialog-content>
143
- <mat-dialog-actions align="end" class="pfx-dialog-actions">
144
- <button mat-stroked-button type="button"
145
- class="pfx-save-shortcut-button"
146
- *ngIf="data?.allowSaveTags"
147
- [disabled]="!canSave || saving"
148
- [matTooltip]="saveShortcutTooltip()"
149
- [matTooltipDisabled]="canSave && !saving"
150
- (click)="saveShortcut()">
151
- <mat-icon aria-hidden="true">{{ saving ? 'hourglass_empty' : 'bookmark_add' }}</mat-icon>
152
- {{ data.i18n?.saveAsShortcut || 'Salvar como atalho' }}
153
- </button>
154
- <button mat-stroked-button type="button" (click)="close()">{{ data.i18n?.cancel || 'Cancelar' }}</button>
155
- <button mat-flat-button color="primary" (click)="apply()" [disabled]="!valid">
156
- {{ data.i18n?.apply || 'Aplicar' }}
157
- </button>
158
- </mat-dialog-actions>
159
- `, isInline: true, styles: [".pfx-dialog-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-right:8px}.pfx-dialog-title-text{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--mdc-dialog-subhead-color, var(--md-sys-color-on-surface))}.pfx-dialog-close{margin-left:auto}.pfx-filter-dialog-content{display:flex;flex-direction:column;gap:12px;padding-top:8px}.pfx-empty-state{margin:8px 0 0;color:var(--mdc-dialog-supporting-text-color, var(--md-sys-color-on-surface-variant))}.pfx-dialog-loading{display:flex;flex-direction:column;gap:10px;min-height:128px;justify-content:center;color:var(--mdc-dialog-supporting-text-color, var(--md-sys-color-on-surface-variant));font-size:.875rem}.pfx-form-pending{height:0;overflow:hidden;visibility:hidden;pointer-events:none}.pfx-dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);border-top:1px solid var(--md-sys-color-outline-variant);background:transparent;display:flex;align-items:center;gap:8px}.pfx-save-shortcut-button{margin-right:auto}.pfx-save-shortcut-button mat-icon{margin-right:6px;width:18px;height:18px;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisFilterForm, selector: "praxis-filter-form", inputs: ["config", "formId", "resourcePath", "mode"], outputs: ["formReady", "valueChange", "submit", "requestSearch", "validityChange"] }] });
160
- }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FilterFormDialogHostComponent, decorators: [{
162
- type: Component,
163
- args: [{ selector: 'praxis-filter-form-dialog-host', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatProgressBarModule, MatIconModule, MatTooltipModule, PraxisFilterForm], template: `
164
- <div mat-dialog-title class="pfx-dialog-title" id="filterDialogTitle">
165
- <div class="pfx-dialog-title-text">
166
- <mat-icon>tune</mat-icon>
167
- <span>{{ data.title || 'Filtro avançado' }}</span>
168
- </div>
169
- <button mat-icon-button type="button" class="pfx-dialog-close" (click)="close()"
170
- [attr.aria-label]="data.i18n?.cancel || 'Fechar'">
171
- <mat-icon>close</mat-icon>
172
- </button>
173
- </div>
174
- <mat-dialog-content class="pfx-filter-dialog-content" aria-labelledby="filterDialogTitle">
175
- <mat-progress-bar *ngIf="data?.schemaLoading" mode="indeterminate"></mat-progress-bar>
176
- <div
177
- *ngIf="data?.config && !ready"
178
- class="pfx-dialog-loading"
179
- role="status"
180
- aria-live="polite"
181
- >
182
- <mat-progress-bar mode="indeterminate"></mat-progress-bar>
183
- <span>{{ data.i18n?.opening || 'Carregando filtros...' }}</span>
184
- </div>
185
- <praxis-filter-form
186
- *ngIf="data?.config"
187
- [class.pfx-form-pending]="!ready"
188
- [formId]="data.formId"
189
- [resourcePath]="data.resourcePath"
190
- [mode]="'edit'"
191
- [config]="data.config"
192
- (formReady)="onReady($event)"
193
- (valueChange)="onChange($event)"
194
- (validityChange)="onValidity($event)"
195
- ></praxis-filter-form>
196
- <p *ngIf="!data?.config && !data?.schemaLoading" class="pfx-empty-state">{{ data.i18n?.noData || 'Nenhum dado' }}</p>
197
- </mat-dialog-content>
198
- <mat-dialog-actions align="end" class="pfx-dialog-actions">
199
- <button mat-stroked-button type="button"
200
- class="pfx-save-shortcut-button"
201
- *ngIf="data?.allowSaveTags"
202
- [disabled]="!canSave || saving"
203
- [matTooltip]="saveShortcutTooltip()"
204
- [matTooltipDisabled]="canSave && !saving"
205
- (click)="saveShortcut()">
206
- <mat-icon aria-hidden="true">{{ saving ? 'hourglass_empty' : 'bookmark_add' }}</mat-icon>
207
- {{ data.i18n?.saveAsShortcut || 'Salvar como atalho' }}
208
- </button>
209
- <button mat-stroked-button type="button" (click)="close()">{{ data.i18n?.cancel || 'Cancelar' }}</button>
210
- <button mat-flat-button color="primary" (click)="apply()" [disabled]="!valid">
211
- {{ data.i18n?.apply || 'Aplicar' }}
212
- </button>
213
- </mat-dialog-actions>
214
- `, styles: [".pfx-dialog-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-right:8px}.pfx-dialog-title-text{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--mdc-dialog-subhead-color, var(--md-sys-color-on-surface))}.pfx-dialog-close{margin-left:auto}.pfx-filter-dialog-content{display:flex;flex-direction:column;gap:12px;padding-top:8px}.pfx-empty-state{margin:8px 0 0;color:var(--mdc-dialog-supporting-text-color, var(--md-sys-color-on-surface-variant))}.pfx-dialog-loading{display:flex;flex-direction:column;gap:10px;min-height:128px;justify-content:center;color:var(--mdc-dialog-supporting-text-color, var(--md-sys-color-on-surface-variant));font-size:.875rem}.pfx-form-pending{height:0;overflow:hidden;visibility:hidden;pointer-events:none}.pfx-dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);border-top:1px solid var(--md-sys-color-outline-variant);background:transparent;display:flex;align-items:center;gap:8px}.pfx-save-shortcut-button{margin-right:auto}.pfx-save-shortcut-button mat-icon{margin-right:6px;width:18px;height:18px;font-size:18px}\n"] }]
215
- }], ctorParameters: () => [{ type: undefined, decorators: [{
216
- type: Inject,
217
- args: [MAT_DIALOG_DATA]
218
- }] }, { type: i1.MatDialogRef }] });
219
-
220
- export { FilterFormDialogHostComponent };