@praxisui/table 10.0.0-rc.12 → 10.0.0-rc.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +2 -2
- package/fesm2022/{praxisui-table-praxisui-table-DXPvAOf8.mjs → praxisui-table-praxisui-table-o8A2qpuh.mjs} +193 -69
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-7mVc-Xm1.mjs → praxisui-table-table-agentic-authoring-turn-flow-CdntM1P6.mjs} +1 -1
- package/fesm2022/{praxisui-table-table-ai.adapter-nUhrYuKK.mjs → praxisui-table-table-ai.adapter-DeqsjWq6.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
- package/types/praxisui-table.d.ts +9 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-14T11:31:33.532Z",
|
|
4
4
|
"packageName": "@praxisui/table",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.14",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 3,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, computed, ChangeDetectionStrategy, Component, output, signal, InjectionToken, EventEmitter, ElementRef, Output, Input, ViewChild, Optional, Inject, LOCALE_ID, Injectable, HostListener, Directive, ChangeDetectorRef, DestroyRef, ENVIRONMENT_INITIALIZER, effect, booleanAttribute, HostBinding, ContentChild, TemplateRef, ViewContainerRef, numberAttribute } from '@angular/core';
|
|
3
3
|
import * as i1 from '@praxisui/core';
|
|
4
|
-
import { PraxisI18nService, BulkOperationClientService, isBulkExecutionTerminal, LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisJsonLogicService, resolveResourceAvailabilityReasonKey, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, PraxisIconDirective, PraxisIconButtonComponent, SafeExpressionEvaluator, API_URL, buildApiUrl, renderPraxisPresentationVisualizationHtml, createDefaultTableConfig, fillUndefined, deepMerge as deepMerge$1, ASYNC_CONFIG_STORAGE, providePraxisI18nConfig, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, resolveControlTypeAlias, INLINE_FILTER_ALIAS_TOKENS, SCHEMA_METADATA_CLIENT_OPTIONS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, mapFieldDefinitionsToMetadata, resolveInlineFilterControlType, fetchWithETag, serializeEntityLookupValueForPayload, GenericCrudService, SchemaNormalizerService, ResourceQuickConnectComponent, ComponentMetadataRegistry, AnalyticsStatsRequestBuilderService, normalizePraxisDataQueryContext, normalizeUnknownError, PraxisRuntimeComponentObservationRegistryService, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, BulkSyncStateService, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PraxisWidgetEventBus, PraxisCollectionExportService, translateResourceAvailabilityReason, ResourceDiscoveryService, ResourceSurfaceOpenAdapterService, ResourceActionOpenAdapterService, CrudOperationResolutionService, SURFACE_OPEN_PRESETS, assertPraxisCollectionExportArtifact, PRAXIS_LOADING_CTX, resolveColumnTypeFromFieldDefinition as resolveColumnTypeFromFieldDefinition$1, isPraxisPresentationVisualizationTableSafe as isPraxisPresentationVisualizationTableSafe$1, resolveTextMaskFormatFromFieldDefinition as resolveTextMaskFormatFromFieldDefinition$1, translateResourceDiscoveryText, supportsImplicitValuePresentation, resolveValuePresentation, resolvePraxisMicroVisualizationTone, resolveResourceIdentityContract, materializeResourceIdentity, translateUnavailableWorkflowMessage, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent, getPraxisTableCellVisualizationGuidance, getPraxisTableCellVisualizationConstraint, isTableConfigV2, normalizePraxisPresentationVisualization, PRAXIS_GLOBAL_ACTION_CATALOG, SURFACE_OPEN_I18N_NAMESPACE, isRequiredGlobalActionPayloadMissing, getGlobalActionUiSchema, getRequiredGlobalActionPayloadKeys, hasMeaningfulGlobalActionPayloadValue, SurfaceOpenActionEditorComponent, SURFACE_OPEN_I18N_CONFIG, PraxisJsonLogicError, GLOBAL_ACTION_CATALOG, validateGlobalActionRefs, getGlobalActionCatalog, TableConfigService } from '@praxisui/core';
|
|
4
|
+
import { PraxisI18nService, BulkOperationClientService, isBulkExecutionTerminal, LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisJsonLogicService, resolveResourceAvailabilityReasonKey, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, PraxisIconDirective, PraxisIconButtonComponent, SafeExpressionEvaluator, API_URL, EnterpriseRuntimeContextService, buildApiUrl, renderPraxisPresentationVisualizationHtml, createDefaultTableConfig, fillUndefined, deepMerge as deepMerge$1, ASYNC_CONFIG_STORAGE, providePraxisI18nConfig, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, resolveControlTypeAlias, INLINE_FILTER_ALIAS_TOKENS, SCHEMA_METADATA_CLIENT_OPTIONS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, mapFieldDefinitionsToMetadata, resolveInlineFilterControlType, fetchWithETag, serializeEntityLookupValueForPayload, GenericCrudService, SchemaNormalizerService, ResourceQuickConnectComponent, ComponentMetadataRegistry, AnalyticsStatsRequestBuilderService, normalizePraxisDataQueryContext, normalizeUnknownError, PraxisRuntimeComponentObservationRegistryService, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, BulkSyncStateService, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PraxisWidgetEventBus, PraxisCollectionExportService, translateResourceAvailabilityReason, ResourceDiscoveryService, ResourceSurfaceOpenAdapterService, ResourceActionOpenAdapterService, CrudOperationResolutionService, SURFACE_OPEN_PRESETS, assertPraxisCollectionExportArtifact, PRAXIS_LOADING_CTX, resolveColumnTypeFromFieldDefinition as resolveColumnTypeFromFieldDefinition$1, isPraxisPresentationVisualizationTableSafe as isPraxisPresentationVisualizationTableSafe$1, resolveTextMaskFormatFromFieldDefinition as resolveTextMaskFormatFromFieldDefinition$1, translateResourceDiscoveryText, supportsImplicitValuePresentation, resolveValuePresentation, resolvePraxisMicroVisualizationTone, resolveResourceIdentityContract, materializeResourceIdentity, translateUnavailableWorkflowMessage, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent, getPraxisTableCellVisualizationGuidance, getPraxisTableCellVisualizationConstraint, isTableConfigV2, normalizePraxisPresentationVisualization, PRAXIS_GLOBAL_ACTION_CATALOG, SURFACE_OPEN_I18N_NAMESPACE, isRequiredGlobalActionPayloadMissing, getGlobalActionUiSchema, getRequiredGlobalActionPayloadKeys, hasMeaningfulGlobalActionPayloadValue, SurfaceOpenActionEditorComponent, SURFACE_OPEN_I18N_CONFIG, PraxisJsonLogicError, GLOBAL_ACTION_CATALOG, validateGlobalActionRefs, getGlobalActionCatalog, TableConfigService } from '@praxisui/core';
|
|
5
5
|
import * as i1$3 from '@angular/common/http';
|
|
6
6
|
import { HttpErrorResponse, HttpClient, HttpContext } from '@angular/common/http';
|
|
7
7
|
import * as i3 from '@angular/material/button';
|
|
@@ -42,7 +42,7 @@ import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
|
42
42
|
import { PraxisRichContent, validateRichContentDocument, isSafeRichContentClassName, PraxisRichContentConfigEditor } from '@praxisui/rich-content';
|
|
43
43
|
import * as i2 from '@angular/material/toolbar';
|
|
44
44
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
45
|
-
import { map, catchError, take as take$1, startWith, takeUntil as takeUntil$1, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
45
|
+
import { map, catchError, finalize, take as take$1, startWith, takeUntil as takeUntil$1, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
46
46
|
import * as i3$1 from '@angular/material/input';
|
|
47
47
|
import { MatInputModule } from '@angular/material/input';
|
|
48
48
|
import * as i15 from '@angular/material/chips';
|
|
@@ -6445,6 +6445,7 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6445
6445
|
_drawerConfig = null;
|
|
6446
6446
|
set drawerConfig(value) {
|
|
6447
6447
|
this._drawerConfig = value;
|
|
6448
|
+
this.drawerConfigSignal.set(value);
|
|
6448
6449
|
this.syncActiveTab();
|
|
6449
6450
|
if (this._isOpen && this._row) {
|
|
6450
6451
|
this.fetchConfiguredRelations();
|
|
@@ -6457,6 +6458,7 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6457
6458
|
set row(value) {
|
|
6458
6459
|
const prev = this._row;
|
|
6459
6460
|
this._row = value;
|
|
6461
|
+
this.rowSignal.set(value);
|
|
6460
6462
|
this.syncActiveTab();
|
|
6461
6463
|
if (this._isOpen && value && value !== prev) {
|
|
6462
6464
|
this.fetchConfiguredRelations();
|
|
@@ -6465,11 +6467,21 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6465
6467
|
get row() {
|
|
6466
6468
|
return this._row;
|
|
6467
6469
|
}
|
|
6468
|
-
|
|
6470
|
+
_relations = {};
|
|
6471
|
+
set relations(value) {
|
|
6472
|
+
this._relations = value || {};
|
|
6473
|
+
this.relationsSignal.set(this._relations);
|
|
6474
|
+
}
|
|
6475
|
+
get relations() {
|
|
6476
|
+
return this._relations;
|
|
6477
|
+
}
|
|
6469
6478
|
loadingRelations = false;
|
|
6470
6479
|
closeDrawer = new EventEmitter();
|
|
6471
6480
|
tabChange = new EventEmitter();
|
|
6472
6481
|
relationFetch = new EventEmitter();
|
|
6482
|
+
drawerConfigSignal = signal(null, ...(ngDevMode ? [{ debugName: "drawerConfigSignal" }] : /* istanbul ignore next */ []));
|
|
6483
|
+
rowSignal = signal(null, ...(ngDevMode ? [{ debugName: "rowSignal" }] : /* istanbul ignore next */ []));
|
|
6484
|
+
relationsSignal = signal({}, ...(ngDevMode ? [{ debugName: "relationsSignal" }] : /* istanbul ignore next */ []));
|
|
6473
6485
|
activeTabId = signal('', ...(ngDevMode ? [{ debugName: "activeTabId" }] : /* istanbul ignore next */ []));
|
|
6474
6486
|
customRelations = signal({}, ...(ngDevMode ? [{ debugName: "customRelations" }] : /* istanbul ignore next */ []));
|
|
6475
6487
|
isFetchingRelations = signal(false, ...(ngDevMode ? [{ debugName: "isFetchingRelations" }] : /* istanbul ignore next */ []));
|
|
@@ -6479,10 +6491,12 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6479
6491
|
http = inject(HttpClient, { optional: true });
|
|
6480
6492
|
drawerRegistry = inject(AnalyticalDrawerRegistryService, { optional: true });
|
|
6481
6493
|
apiUrl = inject(API_URL, { optional: true });
|
|
6494
|
+
runtimeContext = inject(EnterpriseRuntimeContextService, { optional: true });
|
|
6482
6495
|
sanitizer = inject(DomSanitizer);
|
|
6483
6496
|
formattingService = inject(DataFormattingService, { optional: true });
|
|
6484
6497
|
relationSubs = [];
|
|
6485
6498
|
schemaSub;
|
|
6499
|
+
contextSub;
|
|
6486
6500
|
static urlCache = new Map();
|
|
6487
6501
|
static schemaCache = new Map();
|
|
6488
6502
|
lastFetchedKey = null;
|
|
@@ -6491,6 +6505,16 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6491
6505
|
PraxisAnalyticalDrawerComponent.urlCache.clear();
|
|
6492
6506
|
PraxisAnalyticalDrawerComponent.schemaCache.clear();
|
|
6493
6507
|
}
|
|
6508
|
+
getContextScopePrefix() {
|
|
6509
|
+
const snap = this.runtimeContext?.snapshot;
|
|
6510
|
+
if (!snap)
|
|
6511
|
+
return 'default';
|
|
6512
|
+
const effective = this.runtimeContext?.effectiveContext;
|
|
6513
|
+
const tenant = effective?.activeTenant?.tenantId ?? 'anon';
|
|
6514
|
+
const user = snap.user?.userId ?? 'anon';
|
|
6515
|
+
const env = effective?.environment ?? 'default';
|
|
6516
|
+
return `${tenant}:${user}:${env}`;
|
|
6517
|
+
}
|
|
6494
6518
|
resolveUrl(rawUrl) {
|
|
6495
6519
|
if (!rawUrl)
|
|
6496
6520
|
return '';
|
|
@@ -6506,6 +6530,20 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6506
6530
|
return `${base}${cleanPath}`;
|
|
6507
6531
|
}
|
|
6508
6532
|
ngOnInit() {
|
|
6533
|
+
let initializedContext = false;
|
|
6534
|
+
this.contextSub = this.runtimeContext?.contextChanges$.subscribe(() => {
|
|
6535
|
+
if (!initializedContext) {
|
|
6536
|
+
initializedContext = true;
|
|
6537
|
+
return;
|
|
6538
|
+
}
|
|
6539
|
+
this.lastResolvingKey = null;
|
|
6540
|
+
this.lastFetchedKey = null;
|
|
6541
|
+
this.resolvedRemoteConfig.set(null);
|
|
6542
|
+
this.resolveRemoteDrawerMetadata();
|
|
6543
|
+
if (this.isOpen && this.row) {
|
|
6544
|
+
this.fetchConfiguredRelations();
|
|
6545
|
+
}
|
|
6546
|
+
});
|
|
6509
6547
|
this.resolveRemoteDrawerMetadata();
|
|
6510
6548
|
this.syncActiveTab();
|
|
6511
6549
|
if (this.isOpen && this.row) {
|
|
@@ -6526,9 +6564,10 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6526
6564
|
ngOnDestroy() {
|
|
6527
6565
|
this.cancelRelationRequests();
|
|
6528
6566
|
this.schemaSub?.unsubscribe();
|
|
6567
|
+
this.contextSub?.unsubscribe();
|
|
6529
6568
|
}
|
|
6530
6569
|
getEffectiveDrawerConfig() {
|
|
6531
|
-
const local = this.
|
|
6570
|
+
const local = this.drawerConfigSignal();
|
|
6532
6571
|
const remote = this.resolvedRemoteConfig();
|
|
6533
6572
|
if (!local && !remote)
|
|
6534
6573
|
return null;
|
|
@@ -6615,11 +6654,12 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6615
6654
|
.toLowerCase();
|
|
6616
6655
|
if (!key)
|
|
6617
6656
|
return;
|
|
6618
|
-
|
|
6657
|
+
const scopedSchemaKey = `${this.getContextScopePrefix()}::${key}`;
|
|
6658
|
+
if (this.lastResolvingKey === scopedSchemaKey &&
|
|
6619
6659
|
(this.resolvedRemoteConfig() !== null || this.isResolvingSchema())) {
|
|
6620
6660
|
return;
|
|
6621
6661
|
}
|
|
6622
|
-
this.lastResolvingKey =
|
|
6662
|
+
this.lastResolvingKey = scopedSchemaKey;
|
|
6623
6663
|
// 1. Check DI registry
|
|
6624
6664
|
const registered = this.drawerRegistry?.get(key);
|
|
6625
6665
|
if (registered) {
|
|
@@ -6633,9 +6673,9 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6633
6673
|
}
|
|
6634
6674
|
return;
|
|
6635
6675
|
}
|
|
6636
|
-
// 2. Check
|
|
6637
|
-
if (PraxisAnalyticalDrawerComponent.schemaCache.has(
|
|
6638
|
-
this.resolvedRemoteConfig.set(PraxisAnalyticalDrawerComponent.schemaCache.get(
|
|
6676
|
+
// 2. Check tenant-scoped in-memory cache
|
|
6677
|
+
if (PraxisAnalyticalDrawerComponent.schemaCache.has(scopedSchemaKey)) {
|
|
6678
|
+
this.resolvedRemoteConfig.set(PraxisAnalyticalDrawerComponent.schemaCache.get(scopedSchemaKey));
|
|
6639
6679
|
this.syncActiveTab();
|
|
6640
6680
|
if (this.isOpen && this.row) {
|
|
6641
6681
|
this.fetchConfiguredRelations();
|
|
@@ -6684,7 +6724,7 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6684
6724
|
const configToSet = isAnalyticalDrawerSchema(resolved)
|
|
6685
6725
|
? { enabled: true, schema: resolved }
|
|
6686
6726
|
: resolved;
|
|
6687
|
-
PraxisAnalyticalDrawerComponent.schemaCache.set(
|
|
6727
|
+
PraxisAnalyticalDrawerComponent.schemaCache.set(scopedSchemaKey, configToSet);
|
|
6688
6728
|
this.resolvedRemoteConfig.set(configToSet);
|
|
6689
6729
|
this.syncActiveTab();
|
|
6690
6730
|
if (this.isOpen && this.row) {
|
|
@@ -6737,10 +6777,11 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6737
6777
|
];
|
|
6738
6778
|
}, ...(ngDevMode ? [{ debugName: "resolvedTabs" }] : /* istanbul ignore next */ []));
|
|
6739
6779
|
generateAutoOverviewProperties() {
|
|
6740
|
-
|
|
6780
|
+
const currentRow = this.rowSignal();
|
|
6781
|
+
if (!currentRow || typeof currentRow !== 'object')
|
|
6741
6782
|
return [];
|
|
6742
6783
|
const ignoredKeys = new Set(['_links', 'resourceVersion', '__proto__', 'constructor']);
|
|
6743
|
-
const entries = Object.entries(
|
|
6784
|
+
const entries = Object.entries(currentRow).filter(([k, v]) => !ignoredKeys.has(k) && v !== null && v !== undefined && typeof v !== 'function' && typeof v !== 'object');
|
|
6744
6785
|
if (entries.length === 0)
|
|
6745
6786
|
return [];
|
|
6746
6787
|
return entries.map(([key, val]) => ({
|
|
@@ -6758,6 +6799,7 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6758
6799
|
resolvedTitle = computed(() => {
|
|
6759
6800
|
const config = this.getEffectiveDrawerConfig();
|
|
6760
6801
|
const analyticalSchema = this.getAnalyticalSchema();
|
|
6802
|
+
const currentRow = this.rowSignal();
|
|
6761
6803
|
const context = this.getEvaluationContext();
|
|
6762
6804
|
const titleExpr = config?.titleExpr || analyticalSchema?.titleExpr;
|
|
6763
6805
|
if (titleExpr) {
|
|
@@ -6768,17 +6810,20 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6768
6810
|
}
|
|
6769
6811
|
if (config?.title)
|
|
6770
6812
|
return config.title;
|
|
6771
|
-
if (
|
|
6772
|
-
return String(
|
|
6773
|
-
if (
|
|
6774
|
-
return String(
|
|
6775
|
-
if (
|
|
6776
|
-
return
|
|
6777
|
-
|
|
6813
|
+
if (currentRow?.title)
|
|
6814
|
+
return String(currentRow.title);
|
|
6815
|
+
if (currentRow?.name)
|
|
6816
|
+
return String(currentRow.name);
|
|
6817
|
+
if (currentRow?.label)
|
|
6818
|
+
return String(currentRow.label);
|
|
6819
|
+
if (currentRow?.id)
|
|
6820
|
+
return `Registro #${currentRow.id}`;
|
|
6821
|
+
return 'Detalhes do Registro';
|
|
6778
6822
|
}, ...(ngDevMode ? [{ debugName: "resolvedTitle" }] : /* istanbul ignore next */ []));
|
|
6779
6823
|
resolvedSubtitle = computed(() => {
|
|
6780
6824
|
const config = this.getEffectiveDrawerConfig();
|
|
6781
6825
|
const analyticalSchema = this.getAnalyticalSchema();
|
|
6826
|
+
const currentRow = this.rowSignal();
|
|
6782
6827
|
const context = this.getEvaluationContext();
|
|
6783
6828
|
const subtitleExpr = config?.subtitleExpr || analyticalSchema?.subtitleExpr;
|
|
6784
6829
|
if (subtitleExpr) {
|
|
@@ -6789,10 +6834,8 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6789
6834
|
}
|
|
6790
6835
|
if (config?.subtitle)
|
|
6791
6836
|
return config.subtitle;
|
|
6792
|
-
if (
|
|
6793
|
-
return String(
|
|
6794
|
-
if (this.row?.departamento)
|
|
6795
|
-
return String(this.row.departamento);
|
|
6837
|
+
if (currentRow?.subtitle)
|
|
6838
|
+
return String(currentRow.subtitle);
|
|
6796
6839
|
return '';
|
|
6797
6840
|
}, ...(ngDevMode ? [{ debugName: "resolvedSubtitle" }] : /* istanbul ignore next */ []));
|
|
6798
6841
|
resolvedClassificationPill = computed(() => {
|
|
@@ -6800,7 +6843,7 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6800
6843
|
const analyticalSchema = this.getAnalyticalSchema();
|
|
6801
6844
|
return (config?.classificationPill ||
|
|
6802
6845
|
analyticalSchema?.classificationPill ||
|
|
6803
|
-
'
|
|
6846
|
+
'DETALHES DO REGISTRO');
|
|
6804
6847
|
}, ...(ngDevMode ? [{ debugName: "resolvedClassificationPill" }] : /* istanbul ignore next */ []));
|
|
6805
6848
|
resolvedWidth = computed(() => {
|
|
6806
6849
|
const config = this.getEffectiveDrawerConfig();
|
|
@@ -6809,18 +6852,19 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6809
6852
|
getDrawerIcon() {
|
|
6810
6853
|
const config = this.getEffectiveDrawerConfig();
|
|
6811
6854
|
const analyticalSchema = this.getAnalyticalSchema();
|
|
6812
|
-
return config?.icon || analyticalSchema?.icon || '
|
|
6855
|
+
return config?.icon || analyticalSchema?.icon || 'analytics';
|
|
6813
6856
|
}
|
|
6814
6857
|
getEvaluationContext() {
|
|
6858
|
+
const currentRow = this.rowSignal();
|
|
6815
6859
|
const combinedRelations = {
|
|
6816
|
-
...this.
|
|
6860
|
+
...this.relationsSignal(),
|
|
6817
6861
|
...this.customRelations(),
|
|
6818
6862
|
};
|
|
6819
6863
|
return {
|
|
6820
|
-
row:
|
|
6821
|
-
data:
|
|
6864
|
+
row: currentRow || {},
|
|
6865
|
+
data: currentRow || {},
|
|
6822
6866
|
relations: combinedRelations,
|
|
6823
|
-
...
|
|
6867
|
+
...currentRow,
|
|
6824
6868
|
...combinedRelations,
|
|
6825
6869
|
};
|
|
6826
6870
|
}
|
|
@@ -6874,6 +6918,14 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6874
6918
|
const format = String(item.format || '').trim();
|
|
6875
6919
|
if (format.startsWith('currency')) {
|
|
6876
6920
|
const curr = format.includes(':') ? format.split(':')[1] : 'BRL';
|
|
6921
|
+
if (this.formattingService) {
|
|
6922
|
+
try {
|
|
6923
|
+
return this.formattingService.formatValue(Number(rawVal), 'currency', `${curr}|symbol|2`);
|
|
6924
|
+
}
|
|
6925
|
+
catch {
|
|
6926
|
+
// fallback below
|
|
6927
|
+
}
|
|
6928
|
+
}
|
|
6877
6929
|
try {
|
|
6878
6930
|
return Number(rawVal).toLocaleString('pt-BR', { style: 'currency', currency: curr });
|
|
6879
6931
|
}
|
|
@@ -6935,21 +6987,32 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6935
6987
|
fetchConfiguredRelations() {
|
|
6936
6988
|
const config = this.getEffectiveDrawerConfig();
|
|
6937
6989
|
const analyticalSchema = this.getAnalyticalSchema();
|
|
6938
|
-
const
|
|
6939
|
-
...(Array.isArray(config?.relations) ? config.relations : []),
|
|
6990
|
+
const rawRelations = [
|
|
6940
6991
|
...(Array.isArray(analyticalSchema?.relations) ? analyticalSchema.relations : []),
|
|
6992
|
+
...(Array.isArray(config?.relations) ? config.relations : []),
|
|
6941
6993
|
];
|
|
6994
|
+
const deduplicatedMap = new Map();
|
|
6995
|
+
for (const rel of rawRelations) {
|
|
6996
|
+
if (rel?.key) {
|
|
6997
|
+
deduplicatedMap.set(rel.key, {
|
|
6998
|
+
...(deduplicatedMap.get(rel.key) || {}),
|
|
6999
|
+
...rel,
|
|
7000
|
+
});
|
|
7001
|
+
}
|
|
7002
|
+
}
|
|
7003
|
+
const relationsList = Array.from(deduplicatedMap.values());
|
|
6942
7004
|
if (!relationsList.length || !this.row)
|
|
6943
7005
|
return;
|
|
7006
|
+
const scopePrefix = this.getContextScopePrefix();
|
|
6944
7007
|
const rowKey = String(this.row?.id ?? this.row?._id ?? JSON.stringify(this.row));
|
|
6945
|
-
const currentKey = `${rowKey}::${relationsList.map((r) => r.key + ':' + r.endpoint).join(';')}`;
|
|
7008
|
+
const currentKey = `${scopePrefix}::${rowKey}::${relationsList.map((r) => r.key + ':' + r.endpoint).join(';')}`;
|
|
6946
7009
|
if (this.lastFetchedKey === currentKey) {
|
|
6947
7010
|
return;
|
|
6948
7011
|
}
|
|
6949
7012
|
this.lastFetchedKey = currentKey;
|
|
6950
7013
|
this.cancelRelationRequests();
|
|
6951
|
-
this.isFetchingRelations.set(true);
|
|
6952
7014
|
const pendingMap = {};
|
|
7015
|
+
let activeRequests = 0;
|
|
6953
7016
|
relationsList.forEach((rel) => {
|
|
6954
7017
|
const { url, hasMissingTokens } = interpolateRelationEndpoint(rel.endpoint, this.row);
|
|
6955
7018
|
if (hasMissingTokens || !url) {
|
|
@@ -6957,15 +7020,17 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6957
7020
|
return;
|
|
6958
7021
|
}
|
|
6959
7022
|
this.relationFetch.emit({ key: rel.key, endpoint: url });
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
7023
|
+
const scopedUrlKey = `${scopePrefix}::${url}`;
|
|
7024
|
+
// Tenant-scoped cache check
|
|
7025
|
+
if (rel.cache !== false && PraxisAnalyticalDrawerComponent.urlCache.has(scopedUrlKey)) {
|
|
7026
|
+
pendingMap[rel.key] = PraxisAnalyticalDrawerComponent.urlCache.get(scopedUrlKey);
|
|
6963
7027
|
return;
|
|
6964
7028
|
}
|
|
6965
7029
|
if (!this.http) {
|
|
6966
7030
|
pendingMap[rel.key] = null;
|
|
6967
7031
|
return;
|
|
6968
7032
|
}
|
|
7033
|
+
activeRequests++;
|
|
6969
7034
|
const method = (rel.method || 'GET').toUpperCase();
|
|
6970
7035
|
const effectiveUrl = this.resolveUrl(url);
|
|
6971
7036
|
const req$ = method === 'POST'
|
|
@@ -6981,10 +7046,15 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6981
7046
|
resultData = resultData.length > 0 ? resultData[0] : null;
|
|
6982
7047
|
}
|
|
6983
7048
|
return resultData;
|
|
6984
|
-
}), catchError(() => [null]))
|
|
7049
|
+
}), catchError(() => [null]), finalize(() => {
|
|
7050
|
+
activeRequests = Math.max(0, activeRequests - 1);
|
|
7051
|
+
if (activeRequests === 0) {
|
|
7052
|
+
this.isFetchingRelations.set(false);
|
|
7053
|
+
}
|
|
7054
|
+
}))
|
|
6985
7055
|
.subscribe((resolvedData) => {
|
|
6986
7056
|
if (rel.cache !== false && resolvedData !== null) {
|
|
6987
|
-
PraxisAnalyticalDrawerComponent.urlCache.set(
|
|
7057
|
+
PraxisAnalyticalDrawerComponent.urlCache.set(scopedUrlKey, resolvedData);
|
|
6988
7058
|
}
|
|
6989
7059
|
this.customRelations.update((prev) => ({
|
|
6990
7060
|
...prev,
|
|
@@ -6994,11 +7064,12 @@ class PraxisAnalyticalDrawerComponent {
|
|
|
6994
7064
|
this.relationSubs.push(sub);
|
|
6995
7065
|
});
|
|
6996
7066
|
this.customRelations.set(pendingMap);
|
|
6997
|
-
this.isFetchingRelations.set(
|
|
7067
|
+
this.isFetchingRelations.set(activeRequests > 0);
|
|
6998
7068
|
}
|
|
6999
7069
|
cancelRelationRequests() {
|
|
7000
7070
|
this.relationSubs.forEach((sub) => sub.unsubscribe());
|
|
7001
7071
|
this.relationSubs = [];
|
|
7072
|
+
this.isFetchingRelations.set(false);
|
|
7002
7073
|
}
|
|
7003
7074
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisAnalyticalDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7004
7075
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisAnalyticalDrawerComponent, isStandalone: true, selector: "praxis-analytical-drawer", inputs: { isOpen: "isOpen", resourcePath: "resourcePath", surfaceName: "surfaceName", drawerConfig: "drawerConfig", row: "row", relations: "relations", loadingRelations: "loadingRelations" }, outputs: { closeDrawer: "closeDrawer", tabChange: "tabChange", relationFetch: "relationFetch" }, host: { listeners: { "document:keydown.escape": "handleDocumentEscape($event)" } }, usesOnChanges: true, ngImport: i0, template: `
|
|
@@ -22496,7 +22567,7 @@ class PraxisTable {
|
|
|
22496
22567
|
const discovered = (this.isCollectionActionDiscoveryEnabled()
|
|
22497
22568
|
? this.collectionCapabilities?.actions || []
|
|
22498
22569
|
: [])
|
|
22499
|
-
.filter((action) => action.scope === 'COLLECTION')
|
|
22570
|
+
.filter((action) => action.scope === 'COLLECTION' && !action.execution?.bulk)
|
|
22500
22571
|
.sort((left, right) => (left.order ?? 0) - (right.order ?? 0));
|
|
22501
22572
|
const toolbar = this.config.toolbar
|
|
22502
22573
|
?? (discovered.length > 0 ? this.ensureToolbarConfigForRuntime() : null);
|
|
@@ -22544,11 +22615,17 @@ class PraxisTable {
|
|
|
22544
22615
|
const existing = (toolbar?.actions || []);
|
|
22545
22616
|
const retained = existing.filter(action => !action.__praxisBulkSyncAction);
|
|
22546
22617
|
const operation = this.collectionCapabilities?.operations?.['bulk-update'];
|
|
22618
|
+
const hasHostBulkUpdate = Boolean(this.config?.actions?.bulk?.actions?.some((action) => action?.execution?.bulk?.mode === 'UNIFORM_UPDATE' ||
|
|
22619
|
+
this.normalizeActionId(action) === 'bulk-update'));
|
|
22547
22620
|
let contract = null;
|
|
22548
22621
|
try {
|
|
22549
|
-
if (
|
|
22550
|
-
|
|
22551
|
-
|
|
22622
|
+
if (!hasHostBulkUpdate &&
|
|
22623
|
+
this.isRemoteMode() &&
|
|
22624
|
+
this.isCollectionActionDiscoveryEnabled() &&
|
|
22625
|
+
operation?.id === 'bulk-update' &&
|
|
22626
|
+
operation.availability?.allowed === true &&
|
|
22627
|
+
operation.bulk?.mode === 'UNIFORM_UPDATE' &&
|
|
22628
|
+
operation.bulk.editableFields?.requestSchema.url) {
|
|
22552
22629
|
contract = this.bulkClient.fromCapability(operation);
|
|
22553
22630
|
}
|
|
22554
22631
|
}
|
|
@@ -23011,7 +23088,7 @@ class PraxisTable {
|
|
|
23011
23088
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
23012
23089
|
return;
|
|
23013
23090
|
this.aiAdapterLoadStarted = true;
|
|
23014
|
-
import('./praxisui-table-table-ai.adapter-
|
|
23091
|
+
import('./praxisui-table-table-ai.adapter-DeqsjWq6.mjs')
|
|
23015
23092
|
.then(({ TableAiAdapter }) => {
|
|
23016
23093
|
if (!this.isAiAssistantEnabled()) {
|
|
23017
23094
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -23592,11 +23669,25 @@ class PraxisTable {
|
|
|
23592
23669
|
sourceCandidateIds: ['table.appearance.compact-view'],
|
|
23593
23670
|
});
|
|
23594
23671
|
}
|
|
23595
|
-
const
|
|
23596
|
-
|
|
23597
|
-
|
|
23598
|
-
|
|
23599
|
-
|
|
23672
|
+
const schemaFieldByName = new Map();
|
|
23673
|
+
for (const f of this.schemaColumnFieldsSnapshot || []) {
|
|
23674
|
+
if (f?.name)
|
|
23675
|
+
schemaFieldByName.set(f.name, f);
|
|
23676
|
+
}
|
|
23677
|
+
for (const f of this.schemaFieldsSnapshot || []) {
|
|
23678
|
+
if (f?.name && !schemaFieldByName.has(f.name))
|
|
23679
|
+
schemaFieldByName.set(f.name, f);
|
|
23680
|
+
}
|
|
23681
|
+
const publicViewCandidates = visibleColumns.filter((column) => {
|
|
23682
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23683
|
+
const format = String(column.format || schemaField?.format || '').toLowerCase();
|
|
23684
|
+
return (column.type === 'currency' ||
|
|
23685
|
+
column.type === 'number' ||
|
|
23686
|
+
format === 'email' ||
|
|
23687
|
+
format.startsWith('currency') ||
|
|
23688
|
+
this.isSensitiveAiAssistantField(column.field) ||
|
|
23689
|
+
Boolean(column.sensitive || schemaField?.sensitive || schemaField?.governance?.sensitive));
|
|
23690
|
+
});
|
|
23600
23691
|
if (publicViewCandidates.length) {
|
|
23601
23692
|
recommendations.push({
|
|
23602
23693
|
id: 'table-curate-public-view',
|
|
@@ -23627,9 +23718,14 @@ class PraxisTable {
|
|
|
23627
23718
|
sourceCandidateIds: ['table.governance.public-view', 'column.visibility.set'],
|
|
23628
23719
|
});
|
|
23629
23720
|
}
|
|
23630
|
-
const booleanOrStatusColumn = columns.find((column) =>
|
|
23631
|
-
|
|
23632
|
-
|
|
23721
|
+
const booleanOrStatusColumn = columns.find((column) => {
|
|
23722
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23723
|
+
const rendererType = column.renderer?.type;
|
|
23724
|
+
return (column.type === 'boolean' ||
|
|
23725
|
+
rendererType === 'badge' ||
|
|
23726
|
+
rendererType === 'status' ||
|
|
23727
|
+
Boolean(Array.isArray(schemaField?.options) && schemaField.options.length > 0));
|
|
23728
|
+
});
|
|
23633
23729
|
if (booleanOrStatusColumn) {
|
|
23634
23730
|
recommendations.push({
|
|
23635
23731
|
id: 'table-curate-status-badges',
|
|
@@ -23643,7 +23739,7 @@ class PraxisTable {
|
|
|
23643
23739
|
tone: 'success',
|
|
23644
23740
|
action: {
|
|
23645
23741
|
kind: 'submit-prompt',
|
|
23646
|
-
prompt: t('table.assistant.recommendation.statusBadge.prompt', 'Transforme a coluna de status ou
|
|
23742
|
+
prompt: t('table.assistant.recommendation.statusBadge.prompt', 'Transforme a coluna de status ou estado booleano em badges visuais com texto curto e cores adequadas.'),
|
|
23647
23743
|
contextHints: {
|
|
23648
23744
|
source: 'table-capability-discovery-curation',
|
|
23649
23745
|
opportunityId: 'table.appearance.status-badge',
|
|
@@ -23655,8 +23751,15 @@ class PraxisTable {
|
|
|
23655
23751
|
sourceCandidateIds: ['table.appearance.status-badge', 'column.renderer.set'],
|
|
23656
23752
|
});
|
|
23657
23753
|
}
|
|
23658
|
-
const categoricalColumns = visibleColumns.filter((column) =>
|
|
23659
|
-
|
|
23754
|
+
const categoricalColumns = visibleColumns.filter((column) => {
|
|
23755
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23756
|
+
const controlType = String(schemaField?.controlType || '').toLowerCase();
|
|
23757
|
+
return (column.type === 'string' &&
|
|
23758
|
+
(Boolean(Array.isArray(schemaField?.options) && schemaField.options.length > 0) ||
|
|
23759
|
+
controlType === 'select' ||
|
|
23760
|
+
controlType === 'radio' ||
|
|
23761
|
+
controlType === 'chip-list'));
|
|
23762
|
+
});
|
|
23660
23763
|
if (categoricalColumns.length) {
|
|
23661
23764
|
recommendations.push({
|
|
23662
23765
|
id: 'table-curate-categorical-chips',
|
|
@@ -23757,7 +23860,7 @@ class PraxisTable {
|
|
|
23757
23860
|
initializeAiAssistantController() {
|
|
23758
23861
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
23759
23862
|
return;
|
|
23760
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
23863
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-CdntM1P6.mjs')
|
|
23761
23864
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
23762
23865
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
23763
23866
|
return;
|
|
@@ -27236,10 +27339,23 @@ class PraxisTable {
|
|
|
27236
27339
|
const statusGroup = [];
|
|
27237
27340
|
const detailsGroup = [];
|
|
27238
27341
|
for (const field of filteredFields) {
|
|
27239
|
-
const nameLower = field.name.toLowerCase();
|
|
27240
27342
|
const typeLower = (field.type || '').toLowerCase();
|
|
27241
|
-
const
|
|
27242
|
-
const
|
|
27343
|
+
const formatLower = (field.format || '').toLowerCase();
|
|
27344
|
+
const isNumeric = typeLower === 'number' ||
|
|
27345
|
+
typeLower === 'integer' ||
|
|
27346
|
+
typeLower === 'currency' ||
|
|
27347
|
+
typeLower === 'decimal' ||
|
|
27348
|
+
typeLower === 'percent' ||
|
|
27349
|
+
formatLower.startsWith('currency') ||
|
|
27350
|
+
formatLower === 'percent' ||
|
|
27351
|
+
formatLower === 'percentage';
|
|
27352
|
+
const isStatusOrDate = typeLower === 'boolean' ||
|
|
27353
|
+
typeLower === 'date' ||
|
|
27354
|
+
typeLower === 'datetime' ||
|
|
27355
|
+
typeLower === 'date-time' ||
|
|
27356
|
+
typeLower === 'time' ||
|
|
27357
|
+
formatLower === 'date' ||
|
|
27358
|
+
formatLower === 'date-time';
|
|
27243
27359
|
if (isNumeric) {
|
|
27244
27360
|
metricsGroup.push(field);
|
|
27245
27361
|
}
|
|
@@ -27257,7 +27373,7 @@ class PraxisTable {
|
|
|
27257
27373
|
if (detailsGroup.length > 0)
|
|
27258
27374
|
groupMap.set('Especificações & Detalhes', detailsGroup);
|
|
27259
27375
|
if (groupMap.size === 0) {
|
|
27260
|
-
groupMap.set('
|
|
27376
|
+
groupMap.set('Detalhes Complementares', filteredFields);
|
|
27261
27377
|
}
|
|
27262
27378
|
}
|
|
27263
27379
|
const cards = [];
|
|
@@ -27268,15 +27384,18 @@ class PraxisTable {
|
|
|
27268
27384
|
const fieldName = field.name;
|
|
27269
27385
|
const fieldLabel = field.label || this.humanizeFieldName(fieldName);
|
|
27270
27386
|
const typeLower = (field.type || '').toLowerCase();
|
|
27271
|
-
const
|
|
27272
|
-
if (typeLower === 'boolean'
|
|
27387
|
+
const formatLower = (field.format || '').toLowerCase();
|
|
27388
|
+
if (typeLower === 'boolean') {
|
|
27273
27389
|
items.push({
|
|
27274
27390
|
type: 'badge',
|
|
27275
27391
|
labelExpr: `row.${fieldName} ? '${fieldLabel}: Sim' : '${fieldLabel}: Não'`,
|
|
27276
27392
|
icon: field.icon || 'check_circle',
|
|
27277
27393
|
});
|
|
27278
27394
|
}
|
|
27279
|
-
else if (
|
|
27395
|
+
else if (typeLower === 'percent' ||
|
|
27396
|
+
formatLower === 'percent' ||
|
|
27397
|
+
formatLower === 'percentage' ||
|
|
27398
|
+
formatLower === 'progress') {
|
|
27280
27399
|
items.push({
|
|
27281
27400
|
type: 'progress',
|
|
27282
27401
|
label: fieldLabel,
|
|
@@ -27285,7 +27404,12 @@ class PraxisTable {
|
|
|
27285
27404
|
showPercent: true,
|
|
27286
27405
|
});
|
|
27287
27406
|
}
|
|
27288
|
-
else if (typeLower
|
|
27407
|
+
else if (typeLower === 'date' ||
|
|
27408
|
+
typeLower === 'datetime' ||
|
|
27409
|
+
typeLower === 'date-time' ||
|
|
27410
|
+
typeLower === 'time' ||
|
|
27411
|
+
formatLower === 'date' ||
|
|
27412
|
+
formatLower === 'date-time') {
|
|
27289
27413
|
items.push({
|
|
27290
27414
|
type: 'metric',
|
|
27291
27415
|
label: fieldLabel,
|
|
@@ -27298,14 +27422,14 @@ class PraxisTable {
|
|
|
27298
27422
|
type: 'metric',
|
|
27299
27423
|
label: fieldLabel,
|
|
27300
27424
|
valueExpr: `row.${fieldName}`,
|
|
27301
|
-
icon: field.icon ||
|
|
27425
|
+
icon: field.icon || 'info',
|
|
27302
27426
|
});
|
|
27303
27427
|
}
|
|
27304
27428
|
}
|
|
27305
27429
|
cards.push({
|
|
27306
27430
|
id: `card-${cardIdx++}`,
|
|
27307
27431
|
title: groupTitle,
|
|
27308
|
-
subtitle: `
|
|
27432
|
+
subtitle: `Atributos complementares de ${groupTitle.toLowerCase()}`,
|
|
27309
27433
|
content: [
|
|
27310
27434
|
{
|
|
27311
27435
|
type: 'compose',
|
|
@@ -27321,7 +27445,7 @@ class PraxisTable {
|
|
|
27321
27445
|
items: [
|
|
27322
27446
|
{
|
|
27323
27447
|
type: 'cardGrid',
|
|
27324
|
-
title: '
|
|
27448
|
+
title: 'Detalhes & Especificações',
|
|
27325
27449
|
subtitle: 'Projeção automatizada de atributos do schema canônico',
|
|
27326
27450
|
columns: Math.min(3, Math.max(1, cards.length)),
|
|
27327
27451
|
minCardWidth: 260,
|
|
@@ -30116,7 +30240,7 @@ class PraxisTable {
|
|
|
30116
30240
|
tryHandleCollectionWorkflowToolbarAction(actionId, actionConfig) {
|
|
30117
30241
|
const discovered = actionConfig?.__praxisDiscoveredAction
|
|
30118
30242
|
|| this.collectionCapabilities?.actions?.find((candidate) => candidate.scope === 'COLLECTION' && this.normalizeActionId(candidate) === actionId.toLowerCase());
|
|
30119
|
-
if (!discovered || discovered.scope !== 'COLLECTION')
|
|
30243
|
+
if (!discovered || discovered.scope !== 'COLLECTION' || discovered.execution?.bulk)
|
|
30120
30244
|
return false;
|
|
30121
30245
|
const idsField = String(discovered.execution?.selection.idsField ?? '').trim();
|
|
30122
30246
|
const requiresSelection = Boolean(idsField)
|
|
@@ -68549,7 +68673,7 @@ class PraxisScopeBarComponent {
|
|
|
68549
68673
|
}
|
|
68550
68674
|
activeIdChange = new EventEmitter();
|
|
68551
68675
|
showOmnibox = true;
|
|
68552
|
-
omniboxPlaceholder = 'Buscar
|
|
68676
|
+
omniboxPlaceholder = 'Buscar registros...';
|
|
68553
68677
|
set omniboxValue(val) {
|
|
68554
68678
|
if (val !== undefined && val !== this.currentSearchText()) {
|
|
68555
68679
|
this.currentSearchText.set(val);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable, firstValueFrom } from 'rxjs';
|
|
2
2
|
import { withAuthoringScopePolicy } from '@praxisui/ai';
|
|
3
|
-
import { ar as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-
|
|
3
|
+
import { ar as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-o8A2qpuh.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 { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a6 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlans, Y as TASK_PRESETS, ae as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-
|
|
4
|
+
import { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a6 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlans, Y as TASK_PRESETS, ae as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-o8A2qpuh.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
|
|
7
7
|
mode: 'expression',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TASK_PRESETS, Z as TableDefaultsProvider, _ as TableRulesEditorComponent, $ as ToolbarActionsEditorComponent, a0 as ValueMappingEditorComponent, a1 as VisualFormulaBuilderComponent, a2 as analyticsComparisonMetricField, a3 as applyComputedFieldsToRows, a4 as buildTableApplyPlan, a5 as coerceTableComponentEditPlan, a6 as coerceTableComponentEditPlans, a7 as compileTableComponentEditPlan, a8 as compileTableComponentEditPlans, a9 as createTableAuthoringDocument, aa as formatComputedFieldValue, ab as getActionId, ac as getEnum, ad as getTableCapabilities, ae as getTableComponentEditPlanCapabilities, af as interpolateRelationEndpoint, ag as isAnalyticalDrawerSchema, ah as isTableRendererSupportedByRichContentP0, ai as mapTableRendererToRichContentP0, aj as normalizeComputedFieldDefinition, ak as normalizeTableAuthoringDocument, al as parseLegacyOrTableDocument, am as providePraxisAnalyticalDrawerSchemas, an as providePraxisFilterMetadata, ao as providePraxisTableMetadata, ap as providePraxisTableToolbarAppearance, aq as serializeTableAuthoringDocument, as as toCanonicalTableConfig, at as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-
|
|
1
|
+
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TASK_PRESETS, Z as TableDefaultsProvider, _ as TableRulesEditorComponent, $ as ToolbarActionsEditorComponent, a0 as ValueMappingEditorComponent, a1 as VisualFormulaBuilderComponent, a2 as analyticsComparisonMetricField, a3 as applyComputedFieldsToRows, a4 as buildTableApplyPlan, a5 as coerceTableComponentEditPlan, a6 as coerceTableComponentEditPlans, a7 as compileTableComponentEditPlan, a8 as compileTableComponentEditPlans, a9 as createTableAuthoringDocument, aa as formatComputedFieldValue, ab as getActionId, ac as getEnum, ad as getTableCapabilities, ae as getTableComponentEditPlanCapabilities, af as interpolateRelationEndpoint, ag as isAnalyticalDrawerSchema, ah as isTableRendererSupportedByRichContentP0, ai as mapTableRendererToRichContentP0, aj as normalizeComputedFieldDefinition, ak as normalizeTableAuthoringDocument, al as parseLegacyOrTableDocument, am as providePraxisAnalyticalDrawerSchemas, an as providePraxisFilterMetadata, ao as providePraxisTableMetadata, ap as providePraxisTableToolbarAppearance, aq as serializeTableAuthoringDocument, as as toCanonicalTableConfig, at as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-o8A2qpuh.mjs';
|
|
2
2
|
export { createDynamicRecord, extractRecordId, isDynamicDataRecord, resolveDataField } from '@praxisui/core';
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.14",
|
|
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": "^10.0.0-rc.
|
|
10
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
12
|
-
"@praxisui/dynamic-form": "^10.0.0-rc.
|
|
13
|
-
"@praxisui/metadata-editor": "^10.0.0-rc.
|
|
14
|
-
"@praxisui/rich-content": "^10.0.0-rc.
|
|
15
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
16
|
-
"@praxisui/table-rule-builder": "^10.0.0-rc.
|
|
9
|
+
"@praxisui/ai": "^10.0.0-rc.14",
|
|
10
|
+
"@praxisui/core": "^10.0.0-rc.14",
|
|
11
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.14",
|
|
12
|
+
"@praxisui/dynamic-form": "^10.0.0-rc.14",
|
|
13
|
+
"@praxisui/metadata-editor": "^10.0.0-rc.14",
|
|
14
|
+
"@praxisui/rich-content": "^10.0.0-rc.14",
|
|
15
|
+
"@praxisui/settings-panel": "^10.0.0-rc.14",
|
|
16
|
+
"@praxisui/table-rule-builder": "^10.0.0-rc.14",
|
|
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": "^10.0.0-rc.
|
|
21
|
+
"@praxisui/dialog": "^10.0.0-rc.14",
|
|
22
22
|
"rxjs": "~7.8.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
@@ -5771,7 +5771,9 @@ declare class PraxisAnalyticalDrawerComponent implements OnInit, OnChanges, OnDe
|
|
|
5771
5771
|
private _row;
|
|
5772
5772
|
set row(value: any | null);
|
|
5773
5773
|
get row(): any | null;
|
|
5774
|
-
|
|
5774
|
+
private _relations;
|
|
5775
|
+
set relations(value: Record<string, unknown>);
|
|
5776
|
+
get relations(): Record<string, unknown>;
|
|
5775
5777
|
loadingRelations: boolean;
|
|
5776
5778
|
closeDrawer: EventEmitter<void>;
|
|
5777
5779
|
tabChange: EventEmitter<string>;
|
|
@@ -5779,6 +5781,9 @@ declare class PraxisAnalyticalDrawerComponent implements OnInit, OnChanges, OnDe
|
|
|
5779
5781
|
key: string;
|
|
5780
5782
|
endpoint: string;
|
|
5781
5783
|
}>;
|
|
5784
|
+
protected readonly drawerConfigSignal: i0.WritableSignal<TableDrawerConfig | null>;
|
|
5785
|
+
protected readonly rowSignal: i0.WritableSignal<any>;
|
|
5786
|
+
protected readonly relationsSignal: i0.WritableSignal<Record<string, unknown>>;
|
|
5782
5787
|
protected readonly activeTabId: i0.WritableSignal<string>;
|
|
5783
5788
|
protected readonly customRelations: i0.WritableSignal<Record<string, unknown>>;
|
|
5784
5789
|
protected readonly isFetchingRelations: i0.WritableSignal<boolean>;
|
|
@@ -5788,15 +5793,18 @@ declare class PraxisAnalyticalDrawerComponent implements OnInit, OnChanges, OnDe
|
|
|
5788
5793
|
private readonly http;
|
|
5789
5794
|
private readonly drawerRegistry;
|
|
5790
5795
|
private readonly apiUrl;
|
|
5796
|
+
private readonly runtimeContext;
|
|
5791
5797
|
private readonly sanitizer;
|
|
5792
5798
|
private readonly formattingService;
|
|
5793
5799
|
private relationSubs;
|
|
5794
5800
|
private schemaSub?;
|
|
5801
|
+
private contextSub?;
|
|
5795
5802
|
private static readonly urlCache;
|
|
5796
5803
|
private static readonly schemaCache;
|
|
5797
5804
|
private lastFetchedKey;
|
|
5798
5805
|
private lastResolvingKey;
|
|
5799
5806
|
static clearCache(): void;
|
|
5807
|
+
private getContextScopePrefix;
|
|
5800
5808
|
private resolveUrl;
|
|
5801
5809
|
ngOnInit(): void;
|
|
5802
5810
|
ngOnChanges(changes: SimpleChanges): void;
|