@praxisui/table 10.0.0-rc.12 → 10.0.0-rc.13
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-DgsQmMK8.mjs} +182 -64
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-7mVc-Xm1.mjs → praxisui-table-table-agentic-authoring-turn-flow-D9EpKvy-.mjs} +1 -1
- package/fesm2022/{praxisui-table-table-ai.adapter-nUhrYuKK.mjs → praxisui-table-table-ai.adapter-DX7wpDJx.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-14T09:51:43.880Z",
|
|
4
4
|
"packageName": "@praxisui/table",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.13",
|
|
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: `
|
|
@@ -23011,7 +23082,7 @@ class PraxisTable {
|
|
|
23011
23082
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
23012
23083
|
return;
|
|
23013
23084
|
this.aiAdapterLoadStarted = true;
|
|
23014
|
-
import('./praxisui-table-table-ai.adapter-
|
|
23085
|
+
import('./praxisui-table-table-ai.adapter-DX7wpDJx.mjs')
|
|
23015
23086
|
.then(({ TableAiAdapter }) => {
|
|
23016
23087
|
if (!this.isAiAssistantEnabled()) {
|
|
23017
23088
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -23592,11 +23663,25 @@ class PraxisTable {
|
|
|
23592
23663
|
sourceCandidateIds: ['table.appearance.compact-view'],
|
|
23593
23664
|
});
|
|
23594
23665
|
}
|
|
23595
|
-
const
|
|
23596
|
-
|
|
23597
|
-
|
|
23598
|
-
|
|
23599
|
-
|
|
23666
|
+
const schemaFieldByName = new Map();
|
|
23667
|
+
for (const f of this.schemaColumnFieldsSnapshot || []) {
|
|
23668
|
+
if (f?.name)
|
|
23669
|
+
schemaFieldByName.set(f.name, f);
|
|
23670
|
+
}
|
|
23671
|
+
for (const f of this.schemaFieldsSnapshot || []) {
|
|
23672
|
+
if (f?.name && !schemaFieldByName.has(f.name))
|
|
23673
|
+
schemaFieldByName.set(f.name, f);
|
|
23674
|
+
}
|
|
23675
|
+
const publicViewCandidates = visibleColumns.filter((column) => {
|
|
23676
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23677
|
+
const format = String(column.format || schemaField?.format || '').toLowerCase();
|
|
23678
|
+
return (column.type === 'currency' ||
|
|
23679
|
+
column.type === 'number' ||
|
|
23680
|
+
format === 'email' ||
|
|
23681
|
+
format.startsWith('currency') ||
|
|
23682
|
+
this.isSensitiveAiAssistantField(column.field) ||
|
|
23683
|
+
Boolean(column.sensitive || schemaField?.sensitive || schemaField?.governance?.sensitive));
|
|
23684
|
+
});
|
|
23600
23685
|
if (publicViewCandidates.length) {
|
|
23601
23686
|
recommendations.push({
|
|
23602
23687
|
id: 'table-curate-public-view',
|
|
@@ -23627,9 +23712,14 @@ class PraxisTable {
|
|
|
23627
23712
|
sourceCandidateIds: ['table.governance.public-view', 'column.visibility.set'],
|
|
23628
23713
|
});
|
|
23629
23714
|
}
|
|
23630
|
-
const booleanOrStatusColumn = columns.find((column) =>
|
|
23631
|
-
|
|
23632
|
-
|
|
23715
|
+
const booleanOrStatusColumn = columns.find((column) => {
|
|
23716
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23717
|
+
const rendererType = column.renderer?.type;
|
|
23718
|
+
return (column.type === 'boolean' ||
|
|
23719
|
+
rendererType === 'badge' ||
|
|
23720
|
+
rendererType === 'status' ||
|
|
23721
|
+
Boolean(Array.isArray(schemaField?.options) && schemaField.options.length > 0));
|
|
23722
|
+
});
|
|
23633
23723
|
if (booleanOrStatusColumn) {
|
|
23634
23724
|
recommendations.push({
|
|
23635
23725
|
id: 'table-curate-status-badges',
|
|
@@ -23643,7 +23733,7 @@ class PraxisTable {
|
|
|
23643
23733
|
tone: 'success',
|
|
23644
23734
|
action: {
|
|
23645
23735
|
kind: 'submit-prompt',
|
|
23646
|
-
prompt: t('table.assistant.recommendation.statusBadge.prompt', 'Transforme a coluna de status ou
|
|
23736
|
+
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
23737
|
contextHints: {
|
|
23648
23738
|
source: 'table-capability-discovery-curation',
|
|
23649
23739
|
opportunityId: 'table.appearance.status-badge',
|
|
@@ -23655,8 +23745,15 @@ class PraxisTable {
|
|
|
23655
23745
|
sourceCandidateIds: ['table.appearance.status-badge', 'column.renderer.set'],
|
|
23656
23746
|
});
|
|
23657
23747
|
}
|
|
23658
|
-
const categoricalColumns = visibleColumns.filter((column) =>
|
|
23659
|
-
|
|
23748
|
+
const categoricalColumns = visibleColumns.filter((column) => {
|
|
23749
|
+
const schemaField = schemaFieldByName.get(column.field);
|
|
23750
|
+
const controlType = String(schemaField?.controlType || '').toLowerCase();
|
|
23751
|
+
return (column.type === 'string' &&
|
|
23752
|
+
(Boolean(Array.isArray(schemaField?.options) && schemaField.options.length > 0) ||
|
|
23753
|
+
controlType === 'select' ||
|
|
23754
|
+
controlType === 'radio' ||
|
|
23755
|
+
controlType === 'chip-list'));
|
|
23756
|
+
});
|
|
23660
23757
|
if (categoricalColumns.length) {
|
|
23661
23758
|
recommendations.push({
|
|
23662
23759
|
id: 'table-curate-categorical-chips',
|
|
@@ -23757,7 +23854,7 @@ class PraxisTable {
|
|
|
23757
23854
|
initializeAiAssistantController() {
|
|
23758
23855
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
23759
23856
|
return;
|
|
23760
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
23857
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-D9EpKvy-.mjs')
|
|
23761
23858
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
23762
23859
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
23763
23860
|
return;
|
|
@@ -27236,10 +27333,23 @@ class PraxisTable {
|
|
|
27236
27333
|
const statusGroup = [];
|
|
27237
27334
|
const detailsGroup = [];
|
|
27238
27335
|
for (const field of filteredFields) {
|
|
27239
|
-
const nameLower = field.name.toLowerCase();
|
|
27240
27336
|
const typeLower = (field.type || '').toLowerCase();
|
|
27241
|
-
const
|
|
27242
|
-
const
|
|
27337
|
+
const formatLower = (field.format || '').toLowerCase();
|
|
27338
|
+
const isNumeric = typeLower === 'number' ||
|
|
27339
|
+
typeLower === 'integer' ||
|
|
27340
|
+
typeLower === 'currency' ||
|
|
27341
|
+
typeLower === 'decimal' ||
|
|
27342
|
+
typeLower === 'percent' ||
|
|
27343
|
+
formatLower.startsWith('currency') ||
|
|
27344
|
+
formatLower === 'percent' ||
|
|
27345
|
+
formatLower === 'percentage';
|
|
27346
|
+
const isStatusOrDate = typeLower === 'boolean' ||
|
|
27347
|
+
typeLower === 'date' ||
|
|
27348
|
+
typeLower === 'datetime' ||
|
|
27349
|
+
typeLower === 'date-time' ||
|
|
27350
|
+
typeLower === 'time' ||
|
|
27351
|
+
formatLower === 'date' ||
|
|
27352
|
+
formatLower === 'date-time';
|
|
27243
27353
|
if (isNumeric) {
|
|
27244
27354
|
metricsGroup.push(field);
|
|
27245
27355
|
}
|
|
@@ -27257,7 +27367,7 @@ class PraxisTable {
|
|
|
27257
27367
|
if (detailsGroup.length > 0)
|
|
27258
27368
|
groupMap.set('Especificações & Detalhes', detailsGroup);
|
|
27259
27369
|
if (groupMap.size === 0) {
|
|
27260
|
-
groupMap.set('
|
|
27370
|
+
groupMap.set('Detalhes Complementares', filteredFields);
|
|
27261
27371
|
}
|
|
27262
27372
|
}
|
|
27263
27373
|
const cards = [];
|
|
@@ -27268,15 +27378,18 @@ class PraxisTable {
|
|
|
27268
27378
|
const fieldName = field.name;
|
|
27269
27379
|
const fieldLabel = field.label || this.humanizeFieldName(fieldName);
|
|
27270
27380
|
const typeLower = (field.type || '').toLowerCase();
|
|
27271
|
-
const
|
|
27272
|
-
if (typeLower === 'boolean'
|
|
27381
|
+
const formatLower = (field.format || '').toLowerCase();
|
|
27382
|
+
if (typeLower === 'boolean') {
|
|
27273
27383
|
items.push({
|
|
27274
27384
|
type: 'badge',
|
|
27275
27385
|
labelExpr: `row.${fieldName} ? '${fieldLabel}: Sim' : '${fieldLabel}: Não'`,
|
|
27276
27386
|
icon: field.icon || 'check_circle',
|
|
27277
27387
|
});
|
|
27278
27388
|
}
|
|
27279
|
-
else if (
|
|
27389
|
+
else if (typeLower === 'percent' ||
|
|
27390
|
+
formatLower === 'percent' ||
|
|
27391
|
+
formatLower === 'percentage' ||
|
|
27392
|
+
formatLower === 'progress') {
|
|
27280
27393
|
items.push({
|
|
27281
27394
|
type: 'progress',
|
|
27282
27395
|
label: fieldLabel,
|
|
@@ -27285,7 +27398,12 @@ class PraxisTable {
|
|
|
27285
27398
|
showPercent: true,
|
|
27286
27399
|
});
|
|
27287
27400
|
}
|
|
27288
|
-
else if (typeLower
|
|
27401
|
+
else if (typeLower === 'date' ||
|
|
27402
|
+
typeLower === 'datetime' ||
|
|
27403
|
+
typeLower === 'date-time' ||
|
|
27404
|
+
typeLower === 'time' ||
|
|
27405
|
+
formatLower === 'date' ||
|
|
27406
|
+
formatLower === 'date-time') {
|
|
27289
27407
|
items.push({
|
|
27290
27408
|
type: 'metric',
|
|
27291
27409
|
label: fieldLabel,
|
|
@@ -27298,14 +27416,14 @@ class PraxisTable {
|
|
|
27298
27416
|
type: 'metric',
|
|
27299
27417
|
label: fieldLabel,
|
|
27300
27418
|
valueExpr: `row.${fieldName}`,
|
|
27301
|
-
icon: field.icon ||
|
|
27419
|
+
icon: field.icon || 'info',
|
|
27302
27420
|
});
|
|
27303
27421
|
}
|
|
27304
27422
|
}
|
|
27305
27423
|
cards.push({
|
|
27306
27424
|
id: `card-${cardIdx++}`,
|
|
27307
27425
|
title: groupTitle,
|
|
27308
|
-
subtitle: `
|
|
27426
|
+
subtitle: `Atributos complementares de ${groupTitle.toLowerCase()}`,
|
|
27309
27427
|
content: [
|
|
27310
27428
|
{
|
|
27311
27429
|
type: 'compose',
|
|
@@ -27321,7 +27439,7 @@ class PraxisTable {
|
|
|
27321
27439
|
items: [
|
|
27322
27440
|
{
|
|
27323
27441
|
type: 'cardGrid',
|
|
27324
|
-
title: '
|
|
27442
|
+
title: 'Detalhes & Especificações',
|
|
27325
27443
|
subtitle: 'Projeção automatizada de atributos do schema canônico',
|
|
27326
27444
|
columns: Math.min(3, Math.max(1, cards.length)),
|
|
27327
27445
|
minCardWidth: 260,
|
|
@@ -68549,7 +68667,7 @@ class PraxisScopeBarComponent {
|
|
|
68549
68667
|
}
|
|
68550
68668
|
activeIdChange = new EventEmitter();
|
|
68551
68669
|
showOmnibox = true;
|
|
68552
|
-
omniboxPlaceholder = 'Buscar
|
|
68670
|
+
omniboxPlaceholder = 'Buscar registros...';
|
|
68553
68671
|
set omniboxValue(val) {
|
|
68554
68672
|
if (val !== undefined && val !== this.currentSearchText()) {
|
|
68555
68673
|
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-DgsQmMK8.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-DgsQmMK8.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-DgsQmMK8.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.13",
|
|
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.13",
|
|
10
|
+
"@praxisui/core": "^10.0.0-rc.13",
|
|
11
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.13",
|
|
12
|
+
"@praxisui/dynamic-form": "^10.0.0-rc.13",
|
|
13
|
+
"@praxisui/metadata-editor": "^10.0.0-rc.13",
|
|
14
|
+
"@praxisui/rich-content": "^10.0.0-rc.13",
|
|
15
|
+
"@praxisui/settings-panel": "^10.0.0-rc.13",
|
|
16
|
+
"@praxisui/table-rule-builder": "^10.0.0-rc.13",
|
|
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.13",
|
|
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;
|