@praxisui/core 9.0.5-rc.9 → 9.0.5
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/README.md +6 -4
- package/ai/component-registry.json +3 -3
- package/fesm2022/praxisui-core.mjs +588 -87
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +501 -3
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, InjectionToken, Injectable, inject, Inject, Optional, makeEnvironmentProviders, APP_INITIALIZER, signal, computed, DestroyRef, ENVIRONMENT_INITIALIZER, ErrorHandler, Input, Directive, input, booleanAttribute, ChangeDetectionStrategy, EventEmitter, Output, SecurityContext, ViewContainerRef, SimpleChange, ContentChild, HostBinding, HostListener, ViewChildren, ViewChild, Injector, output, effect } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
4
|
import { HttpHeaders, HttpClient, HttpParams, HttpResponse, HttpContextToken, HTTP_INTERCEPTORS, withInterceptors } from '@angular/common/http';
|
|
5
|
-
import { of, defer, throwError, from, EMPTY, BehaviorSubject, firstValueFrom, Subject, finalize as finalize$1, shareReplay as shareReplay$1, map as map$1, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs';
|
|
5
|
+
import { of, defer, throwError, from, EMPTY, BehaviorSubject, firstValueFrom, Subject, finalize as finalize$1, shareReplay as shareReplay$1, map as map$1, switchMap as switchMap$1, catchError as catchError$1, forkJoin } from 'rxjs';
|
|
6
6
|
import { switchMap, take, map, catchError, concatMap, tap, shareReplay, takeUntil, toArray, finalize } from 'rxjs/operators';
|
|
7
7
|
import * as i1$3 from '@angular/common';
|
|
8
8
|
import { Location, DOCUMENT, CommonModule } from '@angular/common';
|
|
@@ -807,7 +807,7 @@ function resolveControlTypeAlias(value, fallback = FieldControlType.INPUT) {
|
|
|
807
807
|
}
|
|
808
808
|
|
|
809
809
|
function normalizeResourceIdentityContract(value) {
|
|
810
|
-
if (!isRecord$
|
|
810
|
+
if (!isRecord$5(value))
|
|
811
811
|
return null;
|
|
812
812
|
const keyField = normalizeText$3(value['keyField']);
|
|
813
813
|
const titleField = normalizeText$3(value['titleField']);
|
|
@@ -835,7 +835,7 @@ function normalizeResourceIdentityContract(value) {
|
|
|
835
835
|
function resolveResourceIdentityContract(options) {
|
|
836
836
|
const diagnostics = [];
|
|
837
837
|
const explicit = normalizeResourceIdentityContract(options.explicitIdentity);
|
|
838
|
-
const hasExplicitDeclaration = isRecord$
|
|
838
|
+
const hasExplicitDeclaration = isRecord$5(options.explicitIdentity);
|
|
839
839
|
if (explicit && explicit.valid !== false) {
|
|
840
840
|
return {
|
|
841
841
|
contract: { ...explicit, source: 'explicit' },
|
|
@@ -963,7 +963,7 @@ function normalizeResourceIdentityDiagnostics(value) {
|
|
|
963
963
|
if (!Array.isArray(value))
|
|
964
964
|
return [];
|
|
965
965
|
return value.filter((item) => {
|
|
966
|
-
return isRecord$
|
|
966
|
+
return isRecord$5(item)
|
|
967
967
|
&& isResourceIdentityDiagnosticCode(item['code'])
|
|
968
968
|
&& (item['severity'] === 'info' || item['severity'] === 'warning')
|
|
969
969
|
&& typeof item['message'] === 'string';
|
|
@@ -992,7 +992,7 @@ function normalizeStringList(value) {
|
|
|
992
992
|
return [];
|
|
993
993
|
return [...new Set(value.map(normalizeText$3).filter((item) => !!item))];
|
|
994
994
|
}
|
|
995
|
-
function isRecord$
|
|
995
|
+
function isRecord$5(value) {
|
|
996
996
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
997
997
|
}
|
|
998
998
|
|
|
@@ -2556,15 +2556,22 @@ class SchemaNormalizerService {
|
|
|
2556
2556
|
const key = String(raw.key ?? '').trim();
|
|
2557
2557
|
const kind = String(raw.kind ?? '').trim();
|
|
2558
2558
|
const minSearchChars = Number(raw.minSearchChars);
|
|
2559
|
+
const inputFormat = String(raw.inputFormat ?? 'text').trim();
|
|
2559
2560
|
if (!key ||
|
|
2560
2561
|
seenKeys.has(key) ||
|
|
2561
2562
|
!LOOKUP_SEARCH_STRATEGY_KINDS.has(kind) ||
|
|
2563
|
+
!['text', 'digits'].includes(inputFormat) ||
|
|
2562
2564
|
!Number.isInteger(minSearchChars) ||
|
|
2563
2565
|
minSearchChars < 1) {
|
|
2564
2566
|
return undefined;
|
|
2565
2567
|
}
|
|
2566
2568
|
seenKeys.add(key);
|
|
2567
|
-
return {
|
|
2569
|
+
return {
|
|
2570
|
+
key,
|
|
2571
|
+
kind,
|
|
2572
|
+
minSearchChars,
|
|
2573
|
+
...(inputFormat === 'digits' ? { inputFormat } : {}),
|
|
2574
|
+
};
|
|
2568
2575
|
})
|
|
2569
2576
|
.filter((item) => !!item);
|
|
2570
2577
|
if (searchStrategies.length) {
|
|
@@ -6199,7 +6206,7 @@ function createDefaultTableConfig() {
|
|
|
6199
6206
|
},
|
|
6200
6207
|
resizing: {
|
|
6201
6208
|
enabled: false,
|
|
6202
|
-
autoFit:
|
|
6209
|
+
autoFit: true,
|
|
6203
6210
|
persistWidths: true,
|
|
6204
6211
|
minColumnWidth: 50,
|
|
6205
6212
|
maxColumnWidth: 500,
|
|
@@ -12224,8 +12231,14 @@ class ErrorMessageService {
|
|
|
12224
12231
|
}
|
|
12225
12232
|
normalizeSubmitError(error) {
|
|
12226
12233
|
const status = this.numberValue(error?.status);
|
|
12227
|
-
const
|
|
12228
|
-
const
|
|
12234
|
+
const errorObject = this.objectValue(error);
|
|
12235
|
+
const responsePayload = this.objectValue(errorObject?.['error']);
|
|
12236
|
+
const payload = responsePayload
|
|
12237
|
+
?? (Array.isArray(errorObject?.['errors']) ? errorObject : undefined);
|
|
12238
|
+
const isPublicClientError = status !== undefined && status >= 400 && status < 500;
|
|
12239
|
+
const details = isPublicClientError
|
|
12240
|
+
? this.normalizeDetails(payload?.['errors'])
|
|
12241
|
+
: [];
|
|
12229
12242
|
if (details.length) {
|
|
12230
12243
|
return {
|
|
12231
12244
|
message: this.textValue(payload?.['message']) ?? details[0].message,
|
|
@@ -12233,10 +12246,10 @@ class ErrorMessageService {
|
|
|
12233
12246
|
};
|
|
12234
12247
|
}
|
|
12235
12248
|
const publicMessage = this.textValue(payload?.['message']);
|
|
12236
|
-
if (publicMessage &&
|
|
12249
|
+
if (publicMessage && isPublicClientError) {
|
|
12237
12250
|
return { message: publicMessage, details: [] };
|
|
12238
12251
|
}
|
|
12239
|
-
return { message: this.fallbackMessage(
|
|
12252
|
+
return { message: this.fallbackMessage(status), details: [] };
|
|
12240
12253
|
}
|
|
12241
12254
|
/**
|
|
12242
12255
|
* Returns a generic message for an error returned during a form submit.
|
|
@@ -12245,7 +12258,7 @@ class ErrorMessageService {
|
|
|
12245
12258
|
getSubmitErrorMessage(error) {
|
|
12246
12259
|
return this.normalizeSubmitError(error).message;
|
|
12247
12260
|
}
|
|
12248
|
-
fallbackMessage(
|
|
12261
|
+
fallbackMessage(status) {
|
|
12249
12262
|
if (status === 0) {
|
|
12250
12263
|
return this.tx('global.submitError.network', 'Não foi possível conectar ao servidor. Verifique sua conexão ou se o servidor está disponível.');
|
|
12251
12264
|
}
|
|
@@ -12255,9 +12268,7 @@ class ErrorMessageService {
|
|
|
12255
12268
|
if (status === 400 || status === 422) {
|
|
12256
12269
|
return this.tx('global.submitError.invalidData', 'Dados inválidos ou inconsistentes. Verifique os campos e tente novamente.');
|
|
12257
12270
|
}
|
|
12258
|
-
return
|
|
12259
|
-
? this.textValue(error?.message) ?? this.genericSubmitError()
|
|
12260
|
-
: this.genericSubmitError();
|
|
12271
|
+
return this.genericSubmitError();
|
|
12261
12272
|
}
|
|
12262
12273
|
normalizeDetails(value) {
|
|
12263
12274
|
if (!Array.isArray(value))
|
|
@@ -13844,6 +13855,13 @@ class ResourceDiscoveryService {
|
|
|
13844
13855
|
getActions(source, options) {
|
|
13845
13856
|
return this.followLink(source, 'actions', options);
|
|
13846
13857
|
}
|
|
13858
|
+
getActionsByResourceKey(resourceKey, options) {
|
|
13859
|
+
const normalizedResourceKey = resourceKey.trim();
|
|
13860
|
+
if (!normalizedResourceKey) {
|
|
13861
|
+
throw new Error('ResourceDiscoveryService requires a resource key for action discovery.');
|
|
13862
|
+
}
|
|
13863
|
+
return this.http.get(this.resolveHref('/schemas/actions', options), { params: new HttpParams().set('resource', normalizedResourceKey) });
|
|
13864
|
+
}
|
|
13847
13865
|
getCapabilities(source, options) {
|
|
13848
13866
|
return this.followLink(source, 'capabilities', options);
|
|
13849
13867
|
}
|
|
@@ -14162,7 +14180,7 @@ const SURFACE_OPEN_PRESETS = [
|
|
|
14162
14180
|
* Invalid roles are omitted and a completely empty context resolves to `null`.
|
|
14163
14181
|
*/
|
|
14164
14182
|
function normalizeSurfaceOperationContext(value) {
|
|
14165
|
-
if (!isRecord$
|
|
14183
|
+
if (!isRecord$4(value))
|
|
14166
14184
|
return null;
|
|
14167
14185
|
const taskScope = normalizeResourceRef(value['taskScope']);
|
|
14168
14186
|
const subject = normalizeResourceRef(value['subject']);
|
|
@@ -14176,7 +14194,7 @@ function normalizeSurfaceOperationContext(value) {
|
|
|
14176
14194
|
};
|
|
14177
14195
|
}
|
|
14178
14196
|
function normalizeResourceRef(value) {
|
|
14179
|
-
if (!isRecord$
|
|
14197
|
+
if (!isRecord$4(value))
|
|
14180
14198
|
return undefined;
|
|
14181
14199
|
const resourceKey = normalizeText(value['resourceKey']);
|
|
14182
14200
|
const resourceId = normalizeResourceId(value['resourceId']);
|
|
@@ -14190,7 +14208,7 @@ function normalizeResourceRef(value) {
|
|
|
14190
14208
|
};
|
|
14191
14209
|
}
|
|
14192
14210
|
function normalizeRelationship(value) {
|
|
14193
|
-
if (!isRecord$
|
|
14211
|
+
if (!isRecord$4(value))
|
|
14194
14212
|
return undefined;
|
|
14195
14213
|
const surfaceId = normalizeText(value['surfaceId']);
|
|
14196
14214
|
const childResourceKey = normalizeText(value['childResourceKey']);
|
|
@@ -14204,7 +14222,7 @@ function normalizeRelationship(value) {
|
|
|
14204
14222
|
};
|
|
14205
14223
|
}
|
|
14206
14224
|
function normalizeIdentity(value) {
|
|
14207
|
-
if (!isRecord$
|
|
14225
|
+
if (!isRecord$4(value) || !Array.isArray(value['metadata']))
|
|
14208
14226
|
return undefined;
|
|
14209
14227
|
const key = normalizeIdentityPart(value['key']);
|
|
14210
14228
|
const title = normalizeIdentityPart(value['title']);
|
|
@@ -14227,7 +14245,7 @@ function normalizeIdentity(value) {
|
|
|
14227
14245
|
};
|
|
14228
14246
|
}
|
|
14229
14247
|
function normalizeIdentityPart(value) {
|
|
14230
|
-
if (!isRecord$
|
|
14248
|
+
if (!isRecord$4(value))
|
|
14231
14249
|
return undefined;
|
|
14232
14250
|
const field = normalizeText(value['field']);
|
|
14233
14251
|
const partValue = normalizeDisplayValue(value['value']);
|
|
@@ -14250,11 +14268,11 @@ function normalizeDisplayValue(value) {
|
|
|
14250
14268
|
return typeof value === 'boolean' ? value : undefined;
|
|
14251
14269
|
}
|
|
14252
14270
|
function cloneJsonRecord(value) {
|
|
14253
|
-
if (!isRecord$
|
|
14271
|
+
if (!isRecord$4(value))
|
|
14254
14272
|
return undefined;
|
|
14255
14273
|
try {
|
|
14256
14274
|
const cloned = JSON.parse(JSON.stringify(value));
|
|
14257
|
-
return isRecord$
|
|
14275
|
+
return isRecord$4(cloned) ? cloned : undefined;
|
|
14258
14276
|
}
|
|
14259
14277
|
catch {
|
|
14260
14278
|
return undefined;
|
|
@@ -14274,7 +14292,7 @@ function normalizeText(value) {
|
|
|
14274
14292
|
const normalized = value.trim();
|
|
14275
14293
|
return normalized || undefined;
|
|
14276
14294
|
}
|
|
14277
|
-
function isRecord$
|
|
14295
|
+
function isRecord$4(value) {
|
|
14278
14296
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
14279
14297
|
}
|
|
14280
14298
|
|
|
@@ -14299,9 +14317,13 @@ const RELATED_RESOURCE_OUTLET_I18N_CONFIG = {
|
|
|
14299
14317
|
'state.error.description': 'Ocorreu um erro ao preparar a superfície relacionada.',
|
|
14300
14318
|
'emptyState.related.title': 'Sem registros em {label}',
|
|
14301
14319
|
'emptyState.related.description': 'Esta coleção relacionada não possui registros para o contexto selecionado.',
|
|
14302
|
-
'emptyState.related.descriptionWithAction': 'Use a ação principal para adicionar um registro relacionado quando houver informações para registrar.',
|
|
14303
|
-
'emptyState.related.action.create': 'Adicionar registro',
|
|
14304
14320
|
'action.open': 'Abrir relacionado',
|
|
14321
|
+
'action.create.label': 'Adicionar {{noun}}',
|
|
14322
|
+
'action.create.tooltip': 'Adicione {{noun}} ao contexto selecionado.',
|
|
14323
|
+
'action.edit.label': 'Editar {{noun}}',
|
|
14324
|
+
'action.edit.tooltip': 'Atualize os dados de {{noun}} no contexto selecionado.',
|
|
14325
|
+
'action.delete.label': 'Remover {{noun}}',
|
|
14326
|
+
'action.delete.tooltip': 'Remova {{noun}} do contexto selecionado.',
|
|
14305
14327
|
'status.ready': 'Recurso relacionado pronto',
|
|
14306
14328
|
},
|
|
14307
14329
|
'en-US': {
|
|
@@ -14321,9 +14343,13 @@ const RELATED_RESOURCE_OUTLET_I18N_CONFIG = {
|
|
|
14321
14343
|
'state.error.description': 'An error occurred while preparing the related surface.',
|
|
14322
14344
|
'emptyState.related.title': 'No records in {label}',
|
|
14323
14345
|
'emptyState.related.description': 'This related collection has no records for the selected context.',
|
|
14324
|
-
'emptyState.related.descriptionWithAction': 'Use the primary action to add a related record when there is information to capture.',
|
|
14325
|
-
'emptyState.related.action.create': 'Add record',
|
|
14326
14346
|
'action.open': 'Open related',
|
|
14347
|
+
'action.create.label': 'Add {{noun}}',
|
|
14348
|
+
'action.create.tooltip': 'Add {{noun}} to the selected context.',
|
|
14349
|
+
'action.edit.label': 'Edit {{noun}}',
|
|
14350
|
+
'action.edit.tooltip': 'Update {{noun}} data in the selected context.',
|
|
14351
|
+
'action.delete.label': 'Remove {{noun}}',
|
|
14352
|
+
'action.delete.tooltip': 'Remove {{noun}} from the selected context.',
|
|
14327
14353
|
'status.ready': 'Related resource ready',
|
|
14328
14354
|
},
|
|
14329
14355
|
},
|
|
@@ -14498,32 +14524,15 @@ class RelatedResourceSurfaceResolverService {
|
|
|
14498
14524
|
const label = this.trim(request.title)
|
|
14499
14525
|
|| this.trim(surface.title)
|
|
14500
14526
|
|| this.humanizeResourceKey(relatedResource.childResourceKey);
|
|
14501
|
-
const canCreate = relatedResource.childOperations.includes('CREATE');
|
|
14502
|
-
const descriptionKey = canCreate
|
|
14503
|
-
? 'emptyState.related.descriptionWithAction'
|
|
14504
|
-
: 'emptyState.related.description';
|
|
14505
|
-
const actions = canCreate
|
|
14506
|
-
? [
|
|
14507
|
-
{
|
|
14508
|
-
label: this.t('emptyState.related.action.create', 'Adicionar registro'),
|
|
14509
|
-
action: 'create',
|
|
14510
|
-
icon: 'add',
|
|
14511
|
-
primary: true,
|
|
14512
|
-
},
|
|
14513
|
-
]
|
|
14514
|
-
: [];
|
|
14515
14527
|
return {
|
|
14516
14528
|
title: this.t('emptyState.related.title', 'Sem registros em {label}', { label }),
|
|
14517
|
-
message: this.t(
|
|
14518
|
-
? 'Use a ação principal para adicionar um registro relacionado quando houver informações para registrar.'
|
|
14519
|
-
: 'Esta coleção relacionada não possui registros para o contexto selecionado.', { label }),
|
|
14529
|
+
message: this.t('emptyState.related.description', 'Esta coleção relacionada não possui registros para o contexto selecionado.', { label }),
|
|
14520
14530
|
icon: this.trim(request.icon) || 'hub',
|
|
14521
14531
|
tone: 'neutral',
|
|
14522
14532
|
variant: 'inline',
|
|
14523
14533
|
density: 'compact',
|
|
14524
14534
|
alignment: 'center',
|
|
14525
14535
|
iconContainer: 'soft',
|
|
14526
|
-
actions,
|
|
14527
14536
|
};
|
|
14528
14537
|
}
|
|
14529
14538
|
objectValue(value) {
|
|
@@ -15231,11 +15240,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
15231
15240
|
}] });
|
|
15232
15241
|
|
|
15233
15242
|
const DEFINITIONS_HREF = '/api/praxis/config/domain-rules/definitions';
|
|
15243
|
+
const DEFINITION_CATALOG_HREF = `${DEFINITIONS_HREF}/catalog`;
|
|
15234
15244
|
const INTAKE_HREF = '/api/praxis/config/domain-rules/intake';
|
|
15235
15245
|
const SIMULATIONS_HREF = '/api/praxis/config/domain-rules/simulations';
|
|
15236
15246
|
const PUBLICATIONS_HREF = '/api/praxis/config/domain-rules/publications';
|
|
15237
15247
|
const MATERIALIZATIONS_HREF = '/api/praxis/config/domain-rules/materializations';
|
|
15238
15248
|
const SNAPSHOTS_HREF = '/api/praxis/config/domain-rules/snapshots';
|
|
15249
|
+
const ROLLOUT_POLICIES_HREF = `${SNAPSHOTS_HREF}/rollout-policies`;
|
|
15250
|
+
const ROLLOUTS_HREF = `${SNAPSHOTS_HREF}/rollouts`;
|
|
15251
|
+
const WORKSPACES_HREF = '/api/praxis/config/domain-rules/workspaces';
|
|
15239
15252
|
class DomainRuleService {
|
|
15240
15253
|
http = inject(HttpClient);
|
|
15241
15254
|
discovery = inject(ResourceDiscoveryService);
|
|
@@ -15251,12 +15264,92 @@ class DomainRuleService {
|
|
|
15251
15264
|
headers: this.resolveHeaders(options),
|
|
15252
15265
|
});
|
|
15253
15266
|
}
|
|
15267
|
+
browseDefinitionCatalog(filters = {}, options = {}) {
|
|
15268
|
+
return this.http.get(this.discovery.resolveHref(DEFINITION_CATALOG_HREF, options), {
|
|
15269
|
+
params: this.buildParams(filters),
|
|
15270
|
+
headers: this.resolveHeaders(options),
|
|
15271
|
+
});
|
|
15272
|
+
}
|
|
15273
|
+
getDefinitionCapabilities(options = {}) {
|
|
15274
|
+
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/capabilities`, options), { headers: this.resolveHeaders(options) });
|
|
15275
|
+
}
|
|
15254
15276
|
transitionDefinitionStatus(definitionId, request, options = {}) {
|
|
15255
15277
|
return this.http.patch(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}/status`, options), request, { headers: this.resolveHeaders(options) });
|
|
15256
15278
|
}
|
|
15257
15279
|
getDefinitionTimeline(definitionId, options = {}) {
|
|
15258
15280
|
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}/timeline`, options), { headers: this.resolveHeaders(options) });
|
|
15259
15281
|
}
|
|
15282
|
+
createChangeWorkspace(request, options = {}) {
|
|
15283
|
+
return this.http.post(this.discovery.resolveHref(WORKSPACES_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15284
|
+
}
|
|
15285
|
+
listChangeWorkspaces(options = {}) {
|
|
15286
|
+
return this.http.get(this.discovery.resolveHref(WORKSPACES_HREF, options), { headers: this.resolveHeaders(options) });
|
|
15287
|
+
}
|
|
15288
|
+
getChangeWorkspace(workspaceId, options = {}) {
|
|
15289
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}`, options), { headers: this.resolveHeaders(options) });
|
|
15290
|
+
}
|
|
15291
|
+
getChangeWorkspaceCapabilities(workspaceId, options = {}) {
|
|
15292
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/capabilities`, options), { headers: this.resolveHeaders(options) });
|
|
15293
|
+
}
|
|
15294
|
+
getDefinition(definitionId, options = {}) {
|
|
15295
|
+
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}`, options), { headers: this.resolveHeaders(options) });
|
|
15296
|
+
}
|
|
15297
|
+
updateChangeWorkspaceDraft(workspaceId, request, etag, options = {}) {
|
|
15298
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15299
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15300
|
+
return this.http.put(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/draft`, options), request, { headers });
|
|
15301
|
+
}
|
|
15302
|
+
createTestScenario(workspaceId, request, options = {}) {
|
|
15303
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios`, options), request, { headers: this.resolveHeaders(options) });
|
|
15304
|
+
}
|
|
15305
|
+
listTestScenarios(workspaceId, options = {}) {
|
|
15306
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios`, options), { headers: this.resolveHeaders(options) });
|
|
15307
|
+
}
|
|
15308
|
+
listTestRuns(workspaceId, options = {}) {
|
|
15309
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/test-runs`, options), { headers: this.resolveHeaders(options) });
|
|
15310
|
+
}
|
|
15311
|
+
submitChangeWorkspace(workspaceId, etag, options = {}) {
|
|
15312
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15313
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15314
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/submit`, options), null, { headers });
|
|
15315
|
+
}
|
|
15316
|
+
reviewChangeWorkspace(workspaceId, request, etag, options = {}) {
|
|
15317
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15318
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15319
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/reviews`, options), request, { headers });
|
|
15320
|
+
}
|
|
15321
|
+
listChangeWorkspaceReviews(workspaceId, options = {}) {
|
|
15322
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/reviews`, options), { headers: this.resolveHeaders(options) });
|
|
15323
|
+
}
|
|
15324
|
+
promoteChangeWorkspace(workspaceId, etag, options = {}) {
|
|
15325
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15326
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15327
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/promote`, options), null, { headers });
|
|
15328
|
+
}
|
|
15329
|
+
inspectChangeWorkspaceLifecycle(workspaceId, ruleSetKey = null, options = {}) {
|
|
15330
|
+
return this.getChangeWorkspace(workspaceId, options).pipe(switchMap$1((workspace) => forkJoin({
|
|
15331
|
+
workspace: of(workspace),
|
|
15332
|
+
promotedDefinition: workspace.promotedDefinitionId
|
|
15333
|
+
? this.getDefinition(workspace.promotedDefinitionId, options)
|
|
15334
|
+
: of(null),
|
|
15335
|
+
testRuns: this.listTestRuns(workspaceId, options),
|
|
15336
|
+
reviews: this.listChangeWorkspaceReviews(workspaceId, options),
|
|
15337
|
+
materializations: workspace.promotedDefinitionId
|
|
15338
|
+
? this.listMaterializations({ ruleDefinitionId: workspace.promotedDefinitionId }, options)
|
|
15339
|
+
: of([]),
|
|
15340
|
+
snapshotHeadStatus: ruleSetKey
|
|
15341
|
+
? this.getSnapshotHeadStatus(ruleSetKey, options)
|
|
15342
|
+
: of(null),
|
|
15343
|
+
snapshotVersions: ruleSetKey
|
|
15344
|
+
? this.listSnapshotVersions(ruleSetKey, 50, options)
|
|
15345
|
+
: of([]),
|
|
15346
|
+
})));
|
|
15347
|
+
}
|
|
15348
|
+
updateTestScenario(workspaceId, scenarioId, request, etag, options = {}) {
|
|
15349
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15350
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15351
|
+
return this.http.put(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios/${encodeURIComponent(scenarioId)}`, options), request, { headers });
|
|
15352
|
+
}
|
|
15260
15353
|
simulate(request, options = {}) {
|
|
15261
15354
|
return this.http.post(this.discovery.resolveHref(SIMULATIONS_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15262
15355
|
}
|
|
@@ -15295,6 +15388,59 @@ class DomainRuleService {
|
|
|
15295
15388
|
headers: this.resolveHeaders(options),
|
|
15296
15389
|
});
|
|
15297
15390
|
}
|
|
15391
|
+
getSnapshotExecutionSummary(snapshotKey, options = {}) {
|
|
15392
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/execution-summary`, options), { headers: this.resolveHeaders(options) });
|
|
15393
|
+
}
|
|
15394
|
+
getSnapshotHostStatusSummary(ruleSetKey, options = {}) {
|
|
15395
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head/host-status-summary`, options), {
|
|
15396
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15397
|
+
headers: this.resolveHeaders(options),
|
|
15398
|
+
});
|
|
15399
|
+
}
|
|
15400
|
+
getRolloutPolicyCatalog(ruleSetKey, options = {}) {
|
|
15401
|
+
return this.http.get(this.discovery.resolveHref(ROLLOUT_POLICIES_HREF, options), {
|
|
15402
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15403
|
+
headers: this.resolveHeaders(options),
|
|
15404
|
+
});
|
|
15405
|
+
}
|
|
15406
|
+
getRolloutPolicyTimeline(ruleSetKey, options = {}) {
|
|
15407
|
+
return this.http.get(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/timeline`, options), {
|
|
15408
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15409
|
+
headers: this.resolveHeaders(options),
|
|
15410
|
+
});
|
|
15411
|
+
}
|
|
15412
|
+
createRolloutPolicy(request, options = {}) {
|
|
15413
|
+
return this.http.post(this.discovery.resolveHref(ROLLOUT_POLICIES_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15414
|
+
}
|
|
15415
|
+
approveRolloutPolicy(policyId, options = {}) {
|
|
15416
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/${encodeURIComponent(policyId)}/approve`, options), null, { headers: this.resolveHeaders(options) });
|
|
15417
|
+
}
|
|
15418
|
+
activateRolloutPolicy(policyId, policyHeadEtag, options = {}) {
|
|
15419
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15420
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/${encodeURIComponent(policyId)}/activate`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(policyHeadEtag)) });
|
|
15421
|
+
}
|
|
15422
|
+
getRolloutCatalog(ruleSetKey, options = {}) {
|
|
15423
|
+
return this.http.get(this.discovery.resolveHref(ROLLOUTS_HREF, options), {
|
|
15424
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15425
|
+
headers: this.resolveHeaders(options),
|
|
15426
|
+
});
|
|
15427
|
+
}
|
|
15428
|
+
getRolloutReadiness(rolloutId, options = {}) {
|
|
15429
|
+
return this.http.get(this.discovery.resolveHref(`${ROLLOUTS_HREF}/${encodeURIComponent(rolloutId)}/readiness`, options), { headers: this.resolveHeaders(options) });
|
|
15430
|
+
}
|
|
15431
|
+
createRollout(request, headEtag, options = {}) {
|
|
15432
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15433
|
+
return this.http.post(this.discovery.resolveHref(ROLLOUTS_HREF, options), request, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
|
|
15434
|
+
}
|
|
15435
|
+
cancelRollout(rolloutId, options = {}) {
|
|
15436
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUTS_HREF}/${encodeURIComponent(rolloutId)}/cancel`, options), null, { headers: this.resolveHeaders(options) });
|
|
15437
|
+
}
|
|
15438
|
+
activateSnapshotCandidate(snapshotKey, headEtag, rolloutId, options = {}) {
|
|
15439
|
+
let resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15440
|
+
resolved = resolved.set('If-Match', this.strongEntityTag(headEtag));
|
|
15441
|
+
resolved = resolved.set('X-Rule-Rollout-ID', rolloutId);
|
|
15442
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/activate`, options), null, { headers: resolved });
|
|
15443
|
+
}
|
|
15298
15444
|
prepareSnapshotComposition(request, options = {}) {
|
|
15299
15445
|
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/composition-manifest`, options), request, { headers: this.resolveHeaders(options) });
|
|
15300
15446
|
}
|
|
@@ -15803,6 +15949,16 @@ class ResourceActionOpenAdapterService {
|
|
|
15803
15949
|
];
|
|
15804
15950
|
return;
|
|
15805
15951
|
}
|
|
15952
|
+
const targetResourceKey = String(execution.preconditions.resourceVersionTargetResourceKey ?? '').trim();
|
|
15953
|
+
const targetIdField = String(execution.preconditions.resourceVersionTargetIdField ?? '').trim();
|
|
15954
|
+
if (targetResourceKey || targetIdField) {
|
|
15955
|
+
if (!targetResourceKey || !targetIdField) {
|
|
15956
|
+
throw new Error(`ResourceActionOpenAdapterService requires both resourceVersionTargetResourceKey and resourceVersionTargetIdField for action "${action.id}".`);
|
|
15957
|
+
}
|
|
15958
|
+
inputs['submitResourceVersionTargetResourceKey'] = targetResourceKey;
|
|
15959
|
+
inputs['submitResourceVersionTargetIdField'] = targetIdField;
|
|
15960
|
+
return;
|
|
15961
|
+
}
|
|
15806
15962
|
if (execution.preconditions.resourceVersion === 'REQUIRED') {
|
|
15807
15963
|
throw new Error(`ResourceActionOpenAdapterService requires resourceVersion or resourceVersionBindingPath for action "${action.id}".`);
|
|
15808
15964
|
}
|
|
@@ -15870,6 +16026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
15870
16026
|
|
|
15871
16027
|
class SurfaceOpenMaterializerService {
|
|
15872
16028
|
discovery = inject(ResourceDiscoveryService);
|
|
16029
|
+
i18n = inject(PraxisI18nService);
|
|
15873
16030
|
async materialize(payload, context) {
|
|
15874
16031
|
if (this.shouldPreserveRelatedRemoteTable(payload)) {
|
|
15875
16032
|
return payload;
|
|
@@ -16331,11 +16488,13 @@ class SurfaceOpenMaterializerService {
|
|
|
16331
16488
|
return !relatedActionIds.has(String(record['id'] || record['action'] || ''));
|
|
16332
16489
|
})
|
|
16333
16490
|
: [];
|
|
16491
|
+
const previousRelatedActionPresentation = new Map((Array.isArray(previousToolbar['actions']) ? previousToolbar['actions'] : [])
|
|
16492
|
+
.map((action) => this.objectRecord(action))
|
|
16493
|
+
.filter((action) => relatedActionIds.has(String(action['id'] || '')))
|
|
16494
|
+
.map((action) => [String(action['id']), action]));
|
|
16334
16495
|
const toolbarActions = [
|
|
16335
16496
|
...previousToolbarActions,
|
|
16336
|
-
...relatedActions.map((action) => action['
|
|
16337
|
-
? { ...action, appearance: 'filled' }
|
|
16338
|
-
: action),
|
|
16497
|
+
...relatedActions.map((action) => this.mergeRelatedActionPresentation(action, previousRelatedActionPresentation.get(String(action['id'])))),
|
|
16339
16498
|
];
|
|
16340
16499
|
const previousAi = this.objectRecord(previousConfig['ai']);
|
|
16341
16500
|
const previousAssistant = this.objectRecord(previousAi['assistant']);
|
|
@@ -16396,6 +16555,31 @@ class SurfaceOpenMaterializerService {
|
|
|
16396
16555
|
? value
|
|
16397
16556
|
: {};
|
|
16398
16557
|
}
|
|
16558
|
+
mergeRelatedActionPresentation(canonical, authored) {
|
|
16559
|
+
if (!authored)
|
|
16560
|
+
return canonical;
|
|
16561
|
+
const presentation = {};
|
|
16562
|
+
for (const key of ['label', 'tooltip', 'icon']) {
|
|
16563
|
+
if (typeof authored[key] === 'string')
|
|
16564
|
+
presentation[key] = authored[key];
|
|
16565
|
+
}
|
|
16566
|
+
if (['primary', 'accent', 'warn'].includes(String(authored['color']))) {
|
|
16567
|
+
presentation['color'] = authored['color'];
|
|
16568
|
+
}
|
|
16569
|
+
if (['filled', 'outlined', 'elevated', 'text', 'tonal'].includes(String(authored['appearance']))) {
|
|
16570
|
+
presentation['appearance'] = authored['appearance'];
|
|
16571
|
+
}
|
|
16572
|
+
if (['button', 'icon', 'fab'].includes(String(authored['type']))) {
|
|
16573
|
+
presentation['type'] = authored['type'];
|
|
16574
|
+
}
|
|
16575
|
+
if (['start', 'end'].includes(String(authored['position']))) {
|
|
16576
|
+
presentation['position'] = authored['position'];
|
|
16577
|
+
}
|
|
16578
|
+
if (typeof authored['order'] === 'number' && Number.isFinite(authored['order'])) {
|
|
16579
|
+
presentation['order'] = authored['order'];
|
|
16580
|
+
}
|
|
16581
|
+
return { ...canonical, ...presentation };
|
|
16582
|
+
}
|
|
16399
16583
|
buildRelatedCrudActions(payload, operations, paths) {
|
|
16400
16584
|
const noun = this.resolveRelatedActionNoun(payload);
|
|
16401
16585
|
const formIdPrefix = this.stableSurfaceId(payload);
|
|
@@ -16405,7 +16589,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16405
16589
|
actions.push({
|
|
16406
16590
|
id: 'create',
|
|
16407
16591
|
action: 'create',
|
|
16408
|
-
label:
|
|
16592
|
+
label: this.relatedActionText('create', noun),
|
|
16409
16593
|
tooltip: this.resolveRelatedActionDescription(payload, 'create', noun),
|
|
16410
16594
|
formId: `${formIdPrefix}.create`,
|
|
16411
16595
|
icon: 'add',
|
|
@@ -16422,7 +16606,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16422
16606
|
actions.push({
|
|
16423
16607
|
id: 'edit',
|
|
16424
16608
|
action: 'edit',
|
|
16425
|
-
label:
|
|
16609
|
+
label: this.relatedActionText('edit', noun),
|
|
16426
16610
|
tooltip: this.resolveRelatedActionDescription(payload, 'edit', noun),
|
|
16427
16611
|
formId: `${formIdPrefix}.edit`,
|
|
16428
16612
|
icon: 'edit',
|
|
@@ -16442,7 +16626,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16442
16626
|
actions.push({
|
|
16443
16627
|
id: 'delete',
|
|
16444
16628
|
action: 'delete',
|
|
16445
|
-
label:
|
|
16629
|
+
label: this.relatedActionText('delete', noun),
|
|
16446
16630
|
tooltip: this.resolveRelatedActionDescription(payload, 'delete', noun),
|
|
16447
16631
|
formId: `${formIdPrefix}.delete`,
|
|
16448
16632
|
icon: 'delete',
|
|
@@ -16461,6 +16645,13 @@ class SurfaceOpenMaterializerService {
|
|
|
16461
16645
|
}
|
|
16462
16646
|
return actions;
|
|
16463
16647
|
}
|
|
16648
|
+
relatedActionText(operation, noun) {
|
|
16649
|
+
const english = this.i18n.getLocale().toLowerCase().startsWith('en');
|
|
16650
|
+
const fallback = english
|
|
16651
|
+
? `${operation === 'create' ? 'Add' : operation === 'edit' ? 'Edit' : 'Remove'} ${noun}`
|
|
16652
|
+
: `${operation === 'create' ? 'Adicionar' : operation === 'edit' ? 'Editar' : 'Remover'} ${noun}`;
|
|
16653
|
+
return this.i18n.t(`action.${operation}.label`, { noun }, fallback, RELATED_RESOURCE_OUTLET_I18N_NAMESPACE);
|
|
16654
|
+
}
|
|
16464
16655
|
buildRelatedCommandFormConfig() {
|
|
16465
16656
|
return {
|
|
16466
16657
|
metadata: {
|
|
@@ -16643,11 +16834,19 @@ class SurfaceOpenMaterializerService {
|
|
|
16643
16834
|
|| '').trim();
|
|
16644
16835
|
if (surfaceDescription)
|
|
16645
16836
|
return surfaceDescription;
|
|
16646
|
-
|
|
16647
|
-
|
|
16648
|
-
|
|
16649
|
-
|
|
16650
|
-
|
|
16837
|
+
const english = this.i18n.getLocale().toLowerCase().startsWith('en');
|
|
16838
|
+
const fallback = english
|
|
16839
|
+
? action === 'create'
|
|
16840
|
+
? `Add ${noun} to the selected context.`
|
|
16841
|
+
: action === 'edit'
|
|
16842
|
+
? `Update ${noun} data in the selected context.`
|
|
16843
|
+
: `Remove ${noun} from the selected context.`
|
|
16844
|
+
: action === 'create'
|
|
16845
|
+
? `Adicione ${noun} ao contexto selecionado.`
|
|
16846
|
+
: action === 'edit'
|
|
16847
|
+
? `Atualize os dados de ${noun} no contexto selecionado.`
|
|
16848
|
+
: `Remova ${noun} do contexto selecionado.`;
|
|
16849
|
+
return this.i18n.t(`action.${action}.tooltip`, { noun }, fallback, RELATED_RESOURCE_OUTLET_I18N_NAMESPACE);
|
|
16651
16850
|
}
|
|
16652
16851
|
inferColumnsFromData(data) {
|
|
16653
16852
|
const first = data.find((item) => item && typeof item === 'object' && !Array.isArray(item));
|
|
@@ -17904,7 +18103,7 @@ function normalizeUnknownError(rawError) {
|
|
|
17904
18103
|
if (typeof candidate === 'string') {
|
|
17905
18104
|
return normalizeFromParts('Error', candidate);
|
|
17906
18105
|
}
|
|
17907
|
-
if (isRecord$
|
|
18106
|
+
if (isRecord$3(candidate)) {
|
|
17908
18107
|
const name = toText(candidate['name'], 'Error');
|
|
17909
18108
|
const message = toText(candidate['message'], safeStringify(candidate));
|
|
17910
18109
|
const stack = toStack(candidate['stack']);
|
|
@@ -17923,7 +18122,7 @@ function extractErrorCandidate(data) {
|
|
|
17923
18122
|
if (data instanceof Error || typeof data === 'string') {
|
|
17924
18123
|
return data;
|
|
17925
18124
|
}
|
|
17926
|
-
if (!isRecord$
|
|
18125
|
+
if (!isRecord$3(data)) {
|
|
17927
18126
|
return undefined;
|
|
17928
18127
|
}
|
|
17929
18128
|
if ('error' in data) {
|
|
@@ -17941,7 +18140,7 @@ function extractErrorCandidate(data) {
|
|
|
17941
18140
|
return undefined;
|
|
17942
18141
|
}
|
|
17943
18142
|
function unwrapRejection(error) {
|
|
17944
|
-
if (!isRecord$
|
|
18143
|
+
if (!isRecord$3(error)) {
|
|
17945
18144
|
return error;
|
|
17946
18145
|
}
|
|
17947
18146
|
if ('rejection' in error) {
|
|
@@ -18001,7 +18200,7 @@ function safeStringify(value) {
|
|
|
18001
18200
|
return UNKNOWN_ERROR_MESSAGE;
|
|
18002
18201
|
}
|
|
18003
18202
|
}
|
|
18004
|
-
function isRecord$
|
|
18203
|
+
function isRecord$3(value) {
|
|
18005
18204
|
return !!value && typeof value === 'object';
|
|
18006
18205
|
}
|
|
18007
18206
|
|
|
@@ -18961,6 +19160,54 @@ function buildPraxisCollectionSearchCss(tokens = {}) {
|
|
|
18961
19160
|
`;
|
|
18962
19161
|
}
|
|
18963
19162
|
|
|
19163
|
+
const PRAXIS_ACTION_CONTROL_DEFAULTS = {
|
|
19164
|
+
height: '40px',
|
|
19165
|
+
compactHeight: '36px',
|
|
19166
|
+
spaciousHeight: '44px',
|
|
19167
|
+
radius: '8px',
|
|
19168
|
+
paddingInline: '12px',
|
|
19169
|
+
gap: '8px',
|
|
19170
|
+
iconSize: '18px',
|
|
19171
|
+
fontSize: 'var(--md-sys-typescale-label-large-size, 0.875rem)',
|
|
19172
|
+
lineHeight: 'var(--md-sys-typescale-label-large-line-height, 1.25rem)',
|
|
19173
|
+
fontWeight: 'var(--md-sys-typescale-label-large-weight, 500)',
|
|
19174
|
+
focusRing: 'color-mix(in srgb, var(--md-sys-color-primary) 52%, transparent)',
|
|
19175
|
+
disabledOpacity: '0.62',
|
|
19176
|
+
};
|
|
19177
|
+
const PRAXIS_ACTION_CONTROL_VARS = {
|
|
19178
|
+
height: '--praxis-action-control-height',
|
|
19179
|
+
compactHeight: '--praxis-action-control-compact-height',
|
|
19180
|
+
spaciousHeight: '--praxis-action-control-spacious-height',
|
|
19181
|
+
radius: '--praxis-action-control-radius',
|
|
19182
|
+
paddingInline: '--praxis-action-control-padding-inline',
|
|
19183
|
+
gap: '--praxis-action-control-gap',
|
|
19184
|
+
iconSize: '--praxis-action-control-icon-size',
|
|
19185
|
+
fontSize: '--praxis-action-control-font-size',
|
|
19186
|
+
lineHeight: '--praxis-action-control-line-height',
|
|
19187
|
+
fontWeight: '--praxis-action-control-font-weight',
|
|
19188
|
+
focusRing: '--praxis-action-control-focus-ring',
|
|
19189
|
+
disabledOpacity: '--praxis-action-control-disabled-opacity',
|
|
19190
|
+
};
|
|
19191
|
+
function buildPraxisActionControlCss(tokens = {}) {
|
|
19192
|
+
const resolved = { ...PRAXIS_ACTION_CONTROL_DEFAULTS, ...tokens };
|
|
19193
|
+
return `
|
|
19194
|
+
:root {
|
|
19195
|
+
${PRAXIS_ACTION_CONTROL_VARS.height}: ${resolved.height};
|
|
19196
|
+
${PRAXIS_ACTION_CONTROL_VARS.compactHeight}: ${resolved.compactHeight};
|
|
19197
|
+
${PRAXIS_ACTION_CONTROL_VARS.spaciousHeight}: ${resolved.spaciousHeight};
|
|
19198
|
+
${PRAXIS_ACTION_CONTROL_VARS.radius}: ${resolved.radius};
|
|
19199
|
+
${PRAXIS_ACTION_CONTROL_VARS.paddingInline}: ${resolved.paddingInline};
|
|
19200
|
+
${PRAXIS_ACTION_CONTROL_VARS.gap}: ${resolved.gap};
|
|
19201
|
+
${PRAXIS_ACTION_CONTROL_VARS.iconSize}: ${resolved.iconSize};
|
|
19202
|
+
${PRAXIS_ACTION_CONTROL_VARS.fontSize}: ${resolved.fontSize};
|
|
19203
|
+
${PRAXIS_ACTION_CONTROL_VARS.lineHeight}: ${resolved.lineHeight};
|
|
19204
|
+
${PRAXIS_ACTION_CONTROL_VARS.fontWeight}: ${resolved.fontWeight};
|
|
19205
|
+
${PRAXIS_ACTION_CONTROL_VARS.focusRing}: ${resolved.focusRing};
|
|
19206
|
+
${PRAXIS_ACTION_CONTROL_VARS.disabledOpacity}: ${resolved.disabledOpacity};
|
|
19207
|
+
}
|
|
19208
|
+
`;
|
|
19209
|
+
}
|
|
19210
|
+
|
|
18964
19211
|
/** Set the current tenant for GlobalConfigService at app boot. */
|
|
18965
19212
|
function provideGlobalConfigTenant(tenantId) {
|
|
18966
19213
|
return {
|
|
@@ -20928,6 +21175,227 @@ function convertFormLayoutToConfig(formLayout) {
|
|
|
20928
21175
|
return ensureIds({ sections });
|
|
20929
21176
|
}
|
|
20930
21177
|
|
|
21178
|
+
const MAX_REACTIVE_DETERMINATION_BINDINGS = 64;
|
|
21179
|
+
/** Strictly normalizes the closed x-ui.reactiveDeterminations projection. */
|
|
21180
|
+
function normalizeReactiveDeterminations(value) {
|
|
21181
|
+
if (!Array.isArray(value))
|
|
21182
|
+
return [];
|
|
21183
|
+
const normalized = value
|
|
21184
|
+
.map((candidate) => normalizeReactiveDetermination(candidate))
|
|
21185
|
+
.filter((candidate) => candidate !== null);
|
|
21186
|
+
const idCounts = new Map();
|
|
21187
|
+
normalized.forEach((candidate) => idCounts.set(candidate.id, (idCounts.get(candidate.id) ?? 0) + 1));
|
|
21188
|
+
if (normalized.some((candidate) => idCounts.get(candidate.id) !== 1))
|
|
21189
|
+
return [];
|
|
21190
|
+
if (hasCrossDefinitionOutputOverlap(normalized) || hasDependencyCycle(normalized))
|
|
21191
|
+
return [];
|
|
21192
|
+
return normalized;
|
|
21193
|
+
}
|
|
21194
|
+
function normalizeReactiveDetermination(value) {
|
|
21195
|
+
if (!isRecord$2(value) ||
|
|
21196
|
+
!hasOnlyKeys(value, ['id', 'trigger', 'scope', 'capability', 'inputs', 'outputs', 'provenance'])) {
|
|
21197
|
+
return null;
|
|
21198
|
+
}
|
|
21199
|
+
const id = stableId(value['id']);
|
|
21200
|
+
const trigger = normalizeTrigger(value['trigger']);
|
|
21201
|
+
const scope = normalizeScope(value['scope']);
|
|
21202
|
+
const capability = normalizeCapability(value['capability']);
|
|
21203
|
+
const inputs = normalizeInputs(value['inputs']);
|
|
21204
|
+
const outputs = normalizeOutputs(value['outputs']);
|
|
21205
|
+
const provenance = normalizeProvenance(value['provenance']);
|
|
21206
|
+
const inputFieldPaths = new Set(inputs.map((binding) => binding.fieldPath));
|
|
21207
|
+
const outputFieldPaths = new Set(outputs.map((binding) => binding.fieldPath));
|
|
21208
|
+
if (!id ||
|
|
21209
|
+
!trigger ||
|
|
21210
|
+
!scope ||
|
|
21211
|
+
!capability ||
|
|
21212
|
+
!inputs.length ||
|
|
21213
|
+
!outputs.length ||
|
|
21214
|
+
!provenance ||
|
|
21215
|
+
inputs.length + outputs.length > MAX_REACTIVE_DETERMINATION_BINDINGS ||
|
|
21216
|
+
trigger.sourcePaths.length > inputs.length ||
|
|
21217
|
+
trigger.sourcePaths.some((sourcePath) => !inputFieldPaths.has(sourcePath)) ||
|
|
21218
|
+
[...outputFieldPaths].some((outputPath) => [...inputFieldPaths].some((inputPath) => jsonPointersOverlap(inputPath, outputPath)))) {
|
|
21219
|
+
return null;
|
|
21220
|
+
}
|
|
21221
|
+
return { id, trigger, scope, capability, inputs, outputs, provenance };
|
|
21222
|
+
}
|
|
21223
|
+
function hasCrossDefinitionOutputOverlap(definitions) {
|
|
21224
|
+
for (let leftIndex = 0; leftIndex < definitions.length; leftIndex += 1) {
|
|
21225
|
+
for (let rightIndex = leftIndex + 1; rightIndex < definitions.length; rightIndex += 1) {
|
|
21226
|
+
if (definitions[leftIndex].outputs.some((left) => definitions[rightIndex].outputs.some((right) => jsonPointersOverlap(left.fieldPath, right.fieldPath))))
|
|
21227
|
+
return true;
|
|
21228
|
+
}
|
|
21229
|
+
}
|
|
21230
|
+
return false;
|
|
21231
|
+
}
|
|
21232
|
+
function hasDependencyCycle(definitions) {
|
|
21233
|
+
const dependencies = definitions.map((consumer) => definitions
|
|
21234
|
+
.map((producer, producerIndex) => ({ producer, producerIndex }))
|
|
21235
|
+
.filter(({ producer }) => producer !== consumer && producer.outputs.some((output) => consumer.inputs.some((input) => jsonPointersOverlap(output.fieldPath, input.fieldPath))))
|
|
21236
|
+
.map(({ producerIndex }) => producerIndex));
|
|
21237
|
+
const state = new Array(definitions.length).fill(0);
|
|
21238
|
+
const visit = (index) => {
|
|
21239
|
+
if (state[index] === 1)
|
|
21240
|
+
return true;
|
|
21241
|
+
if (state[index] === 2)
|
|
21242
|
+
return false;
|
|
21243
|
+
state[index] = 1;
|
|
21244
|
+
if (dependencies[index].some(visit))
|
|
21245
|
+
return true;
|
|
21246
|
+
state[index] = 2;
|
|
21247
|
+
return false;
|
|
21248
|
+
};
|
|
21249
|
+
return definitions.some((_definition, index) => visit(index));
|
|
21250
|
+
}
|
|
21251
|
+
function normalizeTrigger(value) {
|
|
21252
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['mode', 'sourcePaths']))
|
|
21253
|
+
return null;
|
|
21254
|
+
const sourcePaths = pointerArray(value['sourcePaths'], MAX_REACTIVE_DETERMINATION_BINDINGS);
|
|
21255
|
+
if (value['mode'] !== 'on-change' || !sourcePaths.length)
|
|
21256
|
+
return null;
|
|
21257
|
+
return { mode: 'on-change', sourcePaths };
|
|
21258
|
+
}
|
|
21259
|
+
function normalizeScope(value) {
|
|
21260
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['schemaOperationId', 'formMode']))
|
|
21261
|
+
return null;
|
|
21262
|
+
const schemaOperationId = stableId(value['schemaOperationId']);
|
|
21263
|
+
const formMode = value['formMode'];
|
|
21264
|
+
if (!schemaOperationId || (formMode !== 'create' && formMode !== 'edit'))
|
|
21265
|
+
return null;
|
|
21266
|
+
return { schemaOperationId, formMode };
|
|
21267
|
+
}
|
|
21268
|
+
function normalizeCapability(value) {
|
|
21269
|
+
if (!isRecord$2(value) ||
|
|
21270
|
+
!hasOnlyKeys(value, ['operationId', 'method', 'href', 'requestSchemaUrl', 'responseSchemaUrl'])) {
|
|
21271
|
+
return null;
|
|
21272
|
+
}
|
|
21273
|
+
const operationId = stableId(value['operationId']);
|
|
21274
|
+
const href = nonBlank(value['href']);
|
|
21275
|
+
const requestSchemaUrl = nonBlank(value['requestSchemaUrl']);
|
|
21276
|
+
const responseSchemaUrl = nonBlank(value['responseSchemaUrl']);
|
|
21277
|
+
if (!operationId ||
|
|
21278
|
+
value['method'] !== 'POST' ||
|
|
21279
|
+
!href ||
|
|
21280
|
+
!isSafeRelativeOperationPath(href) ||
|
|
21281
|
+
!requestSchemaUrl?.startsWith('/schemas/filtered?') ||
|
|
21282
|
+
!responseSchemaUrl?.startsWith('/schemas/filtered?')) {
|
|
21283
|
+
return null;
|
|
21284
|
+
}
|
|
21285
|
+
return { operationId, method: 'POST', href, requestSchemaUrl, responseSchemaUrl };
|
|
21286
|
+
}
|
|
21287
|
+
function normalizeInputs(value) {
|
|
21288
|
+
if (!Array.isArray(value) || value.length > MAX_REACTIVE_DETERMINATION_BINDINGS)
|
|
21289
|
+
return [];
|
|
21290
|
+
const result = [];
|
|
21291
|
+
const fieldPaths = new Set();
|
|
21292
|
+
const requestPaths = new Set();
|
|
21293
|
+
for (const candidate of value) {
|
|
21294
|
+
if (!isRecord$2(candidate) || !hasOnlyKeys(candidate, ['fieldPath', 'requestPath']))
|
|
21295
|
+
return [];
|
|
21296
|
+
const fieldPath = jsonPointer(candidate['fieldPath']);
|
|
21297
|
+
const requestPath = jsonPointer(candidate['requestPath']);
|
|
21298
|
+
if (!fieldPath ||
|
|
21299
|
+
!requestPath ||
|
|
21300
|
+
[...fieldPaths].some((current) => jsonPointersOverlap(current, fieldPath)) ||
|
|
21301
|
+
[...requestPaths].some((current) => jsonPointersOverlap(current, requestPath)))
|
|
21302
|
+
return [];
|
|
21303
|
+
fieldPaths.add(fieldPath);
|
|
21304
|
+
requestPaths.add(requestPath);
|
|
21305
|
+
result.push({ fieldPath, requestPath });
|
|
21306
|
+
}
|
|
21307
|
+
return result;
|
|
21308
|
+
}
|
|
21309
|
+
function normalizeOutputs(value) {
|
|
21310
|
+
if (!Array.isArray(value) || value.length > MAX_REACTIVE_DETERMINATION_BINDINGS)
|
|
21311
|
+
return [];
|
|
21312
|
+
const result = [];
|
|
21313
|
+
const responsePaths = new Set();
|
|
21314
|
+
const fieldPaths = new Set();
|
|
21315
|
+
for (const candidate of value) {
|
|
21316
|
+
if (!isRecord$2(candidate) || !hasOnlyKeys(candidate, ['responsePath', 'fieldPath']))
|
|
21317
|
+
return [];
|
|
21318
|
+
const responsePath = jsonPointer(candidate['responsePath']);
|
|
21319
|
+
const fieldPath = jsonPointer(candidate['fieldPath']);
|
|
21320
|
+
if (!responsePath ||
|
|
21321
|
+
!fieldPath ||
|
|
21322
|
+
[...responsePaths].some((current) => jsonPointersOverlap(current, responsePath)) ||
|
|
21323
|
+
[...fieldPaths].some((current) => jsonPointersOverlap(current, fieldPath)))
|
|
21324
|
+
return [];
|
|
21325
|
+
responsePaths.add(responsePath);
|
|
21326
|
+
fieldPaths.add(fieldPath);
|
|
21327
|
+
result.push({ responsePath, fieldPath });
|
|
21328
|
+
}
|
|
21329
|
+
return result;
|
|
21330
|
+
}
|
|
21331
|
+
function normalizeProvenance(value) {
|
|
21332
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['kind', 'source', 'version']))
|
|
21333
|
+
return null;
|
|
21334
|
+
const kind = value['kind'];
|
|
21335
|
+
const source = stableId(value['source']);
|
|
21336
|
+
const version = value['version'] === undefined ? undefined : nonBlank(value['version']);
|
|
21337
|
+
if ((kind !== 'platform' && kind !== 'host') || !source || (value['version'] !== undefined && !version)) {
|
|
21338
|
+
return null;
|
|
21339
|
+
}
|
|
21340
|
+
if (version && version.length > 64)
|
|
21341
|
+
return null;
|
|
21342
|
+
return { kind, source, ...(version ? { version } : {}) };
|
|
21343
|
+
}
|
|
21344
|
+
function pointerArray(value, maxItems) {
|
|
21345
|
+
if (!Array.isArray(value) || value.length > maxItems)
|
|
21346
|
+
return [];
|
|
21347
|
+
const pointers = value.map(jsonPointer);
|
|
21348
|
+
if (pointers.some((pointer) => !pointer))
|
|
21349
|
+
return [];
|
|
21350
|
+
const uniquePointers = new Set(pointers);
|
|
21351
|
+
return uniquePointers.size === pointers.length ? [...uniquePointers] : [];
|
|
21352
|
+
}
|
|
21353
|
+
function jsonPointer(value) {
|
|
21354
|
+
const pointer = nonBlank(value);
|
|
21355
|
+
return pointer && /^\/(?!\/)(?:[^/~]|~[01])+(?:\/(?:[^/~]|~[01])+)*$/.test(pointer)
|
|
21356
|
+
? pointer
|
|
21357
|
+
: null;
|
|
21358
|
+
}
|
|
21359
|
+
function jsonPointersOverlap(left, right) {
|
|
21360
|
+
const leftSegments = decodeJsonPointerSegments(left);
|
|
21361
|
+
const rightSegments = decodeJsonPointerSegments(right);
|
|
21362
|
+
const prefixLength = Math.min(leftSegments.length, rightSegments.length);
|
|
21363
|
+
for (let index = 0; index < prefixLength; index += 1) {
|
|
21364
|
+
if (leftSegments[index] !== rightSegments[index])
|
|
21365
|
+
return false;
|
|
21366
|
+
}
|
|
21367
|
+
return true;
|
|
21368
|
+
}
|
|
21369
|
+
function decodeJsonPointerSegments(pointer) {
|
|
21370
|
+
return pointer.slice(1).split('/').map((segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
21371
|
+
}
|
|
21372
|
+
function stableId(value) {
|
|
21373
|
+
const id = nonBlank(value);
|
|
21374
|
+
return id && /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(id) ? id : null;
|
|
21375
|
+
}
|
|
21376
|
+
function isSafeRelativeOperationPath(path) {
|
|
21377
|
+
if (!path.startsWith('/') || path.startsWith('//') || path.includes('\\') || path.includes('?') ||
|
|
21378
|
+
path.includes('#') || path.includes('{') || path.includes('}') ||
|
|
21379
|
+
/[\u0000-\u001f\u007f]/.test(path) || /%(?:2f|5c)/i.test(path))
|
|
21380
|
+
return false;
|
|
21381
|
+
try {
|
|
21382
|
+
return new URL(path, 'https://praxis.invalid').origin === 'https://praxis.invalid';
|
|
21383
|
+
}
|
|
21384
|
+
catch {
|
|
21385
|
+
return false;
|
|
21386
|
+
}
|
|
21387
|
+
}
|
|
21388
|
+
function nonBlank(value) {
|
|
21389
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
21390
|
+
}
|
|
21391
|
+
function isRecord$2(value) {
|
|
21392
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
21393
|
+
}
|
|
21394
|
+
function hasOnlyKeys(value, allowed) {
|
|
21395
|
+
const allowedSet = new Set(allowed);
|
|
21396
|
+
return Object.keys(value).every((key) => allowedSet.has(key));
|
|
21397
|
+
}
|
|
21398
|
+
|
|
20931
21399
|
/**
|
|
20932
21400
|
* Materializes a concrete FormConfig from a reusable editorial template.
|
|
20933
21401
|
*
|
|
@@ -23749,6 +24217,25 @@ function markerColorForEvent$1(eventType) {
|
|
|
23749
24217
|
return 'neutral';
|
|
23750
24218
|
}
|
|
23751
24219
|
|
|
24220
|
+
/** Narrows an unknown HTTP error body without relying on human-readable message parsing. */
|
|
24221
|
+
function isDomainRuleSnapshotProblemResponse(value) {
|
|
24222
|
+
if (!isRecord$1(value) || typeof value['code'] !== 'string' || typeof value['message'] !== 'string') {
|
|
24223
|
+
return false;
|
|
24224
|
+
}
|
|
24225
|
+
const blockers = value['blockers'];
|
|
24226
|
+
return Array.isArray(blockers) && blockers.every(isDomainRuleSnapshotBlocker);
|
|
24227
|
+
}
|
|
24228
|
+
function isDomainRuleSnapshotBlocker(value) {
|
|
24229
|
+
return isRecord$1(value)
|
|
24230
|
+
&& typeof value['code'] === 'string'
|
|
24231
|
+
&& typeof value['stage'] === 'string'
|
|
24232
|
+
&& (value['definitionId'] === null || typeof value['definitionId'] === 'string')
|
|
24233
|
+
&& typeof value['message'] === 'string';
|
|
24234
|
+
}
|
|
24235
|
+
function isRecord$1(value) {
|
|
24236
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24237
|
+
}
|
|
24238
|
+
|
|
23752
24239
|
const DEFAULT_TITLE = 'Governed decision timeline';
|
|
23753
24240
|
const DEFAULT_EMPTY_TEXT = 'No safe timeline events published for this decision.';
|
|
23754
24241
|
function domainRuleTimelineToRichContentDocument(timeline, options = {}) {
|
|
@@ -32480,10 +32967,14 @@ class PraxisResourceIdentityComponent {
|
|
|
32480
32967
|
emptyTitle = '';
|
|
32481
32968
|
density = 'comfortable';
|
|
32482
32969
|
showMetadataLabels = false;
|
|
32970
|
+
showKey = true;
|
|
32483
32971
|
showKeyLabel = false;
|
|
32484
32972
|
ariaLabel = '';
|
|
32485
32973
|
title() {
|
|
32486
|
-
|
|
32974
|
+
if (!this.identity) {
|
|
32975
|
+
return this.emptyTitle.trim();
|
|
32976
|
+
}
|
|
32977
|
+
return String(this.identity.title?.value ?? this.identity.displayLabel ?? '').trim();
|
|
32487
32978
|
}
|
|
32488
32979
|
prefix(item) {
|
|
32489
32980
|
return item.presentation?.prefix ?? '';
|
|
@@ -32495,7 +32986,7 @@ class PraxisResourceIdentityComponent {
|
|
|
32495
32986
|
return item.presentation?.presenter === 'chip' || item.presentation?.presenter === 'badge';
|
|
32496
32987
|
}
|
|
32497
32988
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisResourceIdentityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32498
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisResourceIdentityComponent, isStandalone: true, selector: "praxis-resource-identity", inputs: { identity: "identity", emptyTitle: "emptyTitle", density: "density", showMetadataLabels: "showMetadataLabels", showKeyLabel: "showKeyLabel", ariaLabel: "ariaLabel" }, ngImport: i0, template: `
|
|
32989
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisResourceIdentityComponent, isStandalone: true, selector: "praxis-resource-identity", inputs: { identity: "identity", emptyTitle: "emptyTitle", density: "density", showMetadataLabels: "showMetadataLabels", showKey: "showKey", showKeyLabel: "showKeyLabel", ariaLabel: "ariaLabel" }, ngImport: i0, template: `
|
|
32499
32990
|
<div
|
|
32500
32991
|
class="identity"
|
|
32501
32992
|
[class.identity--compact]="density === 'compact'"
|
|
@@ -32503,15 +32994,19 @@ class PraxisResourceIdentityComponent {
|
|
|
32503
32994
|
[attr.aria-label]="ariaLabel || null"
|
|
32504
32995
|
>
|
|
32505
32996
|
<div class="identity__primary">
|
|
32506
|
-
@if (
|
|
32507
|
-
|
|
32508
|
-
|
|
32509
|
-
|
|
32510
|
-
|
|
32511
|
-
|
|
32512
|
-
|
|
32997
|
+
@if (showKey) {
|
|
32998
|
+
@if (identity?.key; as key) {
|
|
32999
|
+
<span class="identity__key" [attr.title]="key.label || null">
|
|
33000
|
+
@if (showKeyLabel && key.label) {
|
|
33001
|
+
<span class="identity__key-label">{{ key.label }}:</span>
|
|
33002
|
+
}
|
|
33003
|
+
{{ prefix(key) }}{{ key.value }}{{ suffix(key) }}
|
|
33004
|
+
</span>
|
|
33005
|
+
}
|
|
33006
|
+
}
|
|
33007
|
+
@if (title(); as identityTitle) {
|
|
33008
|
+
<span class="identity__title">{{ identityTitle }}</span>
|
|
32513
33009
|
}
|
|
32514
|
-
<span class="identity__title">{{ title() }}</span>
|
|
32515
33010
|
</div>
|
|
32516
33011
|
@if (identity?.metadata?.length) {
|
|
32517
33012
|
<div class="identity__metadata">
|
|
@@ -32542,15 +33037,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
32542
33037
|
[attr.aria-label]="ariaLabel || null"
|
|
32543
33038
|
>
|
|
32544
33039
|
<div class="identity__primary">
|
|
32545
|
-
@if (
|
|
32546
|
-
|
|
32547
|
-
|
|
32548
|
-
|
|
32549
|
-
|
|
32550
|
-
|
|
32551
|
-
|
|
33040
|
+
@if (showKey) {
|
|
33041
|
+
@if (identity?.key; as key) {
|
|
33042
|
+
<span class="identity__key" [attr.title]="key.label || null">
|
|
33043
|
+
@if (showKeyLabel && key.label) {
|
|
33044
|
+
<span class="identity__key-label">{{ key.label }}:</span>
|
|
33045
|
+
}
|
|
33046
|
+
{{ prefix(key) }}{{ key.value }}{{ suffix(key) }}
|
|
33047
|
+
</span>
|
|
33048
|
+
}
|
|
33049
|
+
}
|
|
33050
|
+
@if (title(); as identityTitle) {
|
|
33051
|
+
<span class="identity__title">{{ identityTitle }}</span>
|
|
32552
33052
|
}
|
|
32553
|
-
<span class="identity__title">{{ title() }}</span>
|
|
32554
33053
|
</div>
|
|
32555
33054
|
@if (identity?.metadata?.length) {
|
|
32556
33055
|
<div class="identity__metadata">
|
|
@@ -32578,6 +33077,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
32578
33077
|
type: Input
|
|
32579
33078
|
}], showMetadataLabels: [{
|
|
32580
33079
|
type: Input
|
|
33080
|
+
}], showKey: [{
|
|
33081
|
+
type: Input
|
|
32581
33082
|
}], showKeyLabel: [{
|
|
32582
33083
|
type: Input
|
|
32583
33084
|
}], ariaLabel: [{
|
|
@@ -41546,7 +42047,7 @@ class PraxisSurfaceHostComponent {
|
|
|
41546
42047
|
}
|
|
41547
42048
|
</section>
|
|
41548
42049
|
</div>
|
|
41549
|
-
`, isInline: true, styles: [":host{display:block;min-width:0}.pdx-surface-host{display:grid;gap:16px;min-width:0}.pdx-surface-host__header{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.pdx-surface-host__icon{font-size:20px;line-height:20px;color:var(--md-sys-color-primary, currentColor)}.pdx-surface-host__copy{display:grid;gap:4px;min-width:0}.pdx-surface-host__title,.pdx-surface-host__subtitle{margin:0}.pdx-surface-host__title{font-size:1rem;font-weight:600}.pdx-surface-host__subtitle{color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .64));font-size:.9375rem}.pdx-surface-host__body{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__slot{min-width:0}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisResourceIdentityComponent, selector: "praxis-resource-identity", inputs: ["identity", "emptyTitle", "density", "showMetadataLabels", "showKeyLabel", "ariaLabel"] }] });
|
|
42050
|
+
`, isInline: true, styles: [":host{display:block;min-width:0}.pdx-surface-host{display:grid;gap:16px;min-width:0}.pdx-surface-host__header{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.pdx-surface-host__icon{font-size:20px;line-height:20px;color:var(--md-sys-color-primary, currentColor)}.pdx-surface-host__copy{display:grid;gap:4px;min-width:0}.pdx-surface-host__title,.pdx-surface-host__subtitle{margin:0}.pdx-surface-host__title{font-size:1rem;font-weight:600}.pdx-surface-host__subtitle{color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .64));font-size:.9375rem}.pdx-surface-host__body{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__slot{min-width:0}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisResourceIdentityComponent, selector: "praxis-resource-identity", inputs: ["identity", "emptyTitle", "density", "showMetadataLabels", "showKey", "showKeyLabel", "ariaLabel"] }] });
|
|
41550
42051
|
}
|
|
41551
42052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, decorators: [{
|
|
41552
42053
|
type: Component,
|
|
@@ -42173,7 +42674,7 @@ const PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA = {
|
|
|
42173
42674
|
{ name: 'icon', type: 'string | null', description: 'Ícone opcional da superfície relacionada.' },
|
|
42174
42675
|
{ name: 'queryContext', type: 'RelatedResourceQueryContext | null', description: 'QueryContext base mesclado com o filtro canônico da relação filha.' },
|
|
42175
42676
|
{ name: 'tableId', type: 'string | null', description: 'Identidade estável da tabela filha para persistência, observabilidade e testes.' },
|
|
42176
|
-
{ name: 'tableConfig', type: 'Record<string, unknown> | null', description: '
|
|
42677
|
+
{ name: 'tableConfig', type: 'Record<string, unknown> | null', description: 'Configuração parcial mesclada ao preset canônico. Ações CRUD com ids create, edit e delete aceitam somente overrides visuais (label, tooltip, icon, color, appearance, type, position e order); semântica, alvo, formulários, confirmação e disponibilidade permanecem governados pelo materializador.' },
|
|
42177
42678
|
{ name: 'emptyState', type: 'Record<string, unknown> | null', description: 'Override opcional para behavior.emptyState da tabela filha. Quando omitido, o outlet deriva texto, icone, layout e ação create a partir de surface.relatedResource e dos metadados da surface.' },
|
|
42178
42679
|
{ name: 'enableCustomization', type: 'boolean', description: 'Opt-in explicito para authoring governado da tabela filha.', default: false },
|
|
42179
42680
|
{ name: 'authoringCapability', type: 'string | null', description: 'Capability publica do EnterpriseRuntimeContext exigida quando o authoring da tabela filha estiver habilitado.' },
|
|
@@ -42249,7 +42750,7 @@ class EmptyStateCardComponent {
|
|
|
42249
42750
|
</div>
|
|
42250
42751
|
<div class="actions">
|
|
42251
42752
|
@if (primaryAction) {
|
|
42252
|
-
<button mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42753
|
+
<button type="button" mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42253
42754
|
@if (primaryAction.icon) {
|
|
42254
42755
|
<mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
|
|
42255
42756
|
}
|
|
@@ -42257,7 +42758,7 @@ class EmptyStateCardComponent {
|
|
|
42257
42758
|
</button>
|
|
42258
42759
|
}
|
|
42259
42760
|
@for (a of secondaryActions; track a) {
|
|
42260
|
-
<button mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42761
|
+
<button type="button" mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42261
42762
|
@if (a.icon) {
|
|
42262
42763
|
<mat-icon [fontIcon]="a.icon"></mat-icon>
|
|
42263
42764
|
}
|
|
@@ -42267,7 +42768,7 @@ class EmptyStateCardComponent {
|
|
|
42267
42768
|
</div>
|
|
42268
42769
|
</mat-card-content>
|
|
42269
42770
|
</mat-card>
|
|
42270
|
-
`, isInline: true, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height,
|
|
42771
|
+
`, isInline: true, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{width:fit-content;max-width:100%;height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));padding-inline:var(--pdx-empty-state-action-padding-inline, var(--praxis-action-control-padding-inline, 12px));border-radius:var(--pdx-empty-state-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--pdx-empty-state-action-gap, var(--praxis-action-control-gap, 8px));font-size:var(--pdx-empty-state-action-font-size, var(--praxis-action-control-font-size, .875rem));font-weight:var(--pdx-empty-state-action-font-weight, var(--praxis-action-control-font-weight, 500));line-height:var(--pdx-empty-state-action-line-height, var(--praxis-action-control-line-height, 1.25rem));white-space:nowrap}.actions .mat-mdc-button-base mat-icon{width:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));margin:0;font-size:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));line-height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px))}.actions .mat-mdc-button-base:focus-visible{outline:2px solid var(--pdx-empty-state-action-focus-ring, var(--praxis-action-control-focus-ring, var(--md-sys-color-primary)));outline-offset:2px}.actions .mat-mdc-button-base:disabled{opacity:var(--pdx-empty-state-action-disabled-opacity, var(--praxis-action-control-disabled-opacity, .62))}.align-center .actions{justify-content:var(--pdx-empty-state-actions-justify, center)}.density-compact .content{gap:var(--pdx-empty-state-compact-gap, 8px)}.density-compact .actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px))}.density-compact .icon{font-size:var(--pdx-empty-state-compact-icon-size, 24px);width:var(--pdx-empty-state-compact-icon-box-size, 24px);height:var(--pdx-empty-state-compact-icon-box-size, 24px)}.density-compact.icon-circle .icon,.density-compact.icon-soft .icon{width:var(--pdx-empty-state-compact-icon-container-size, 36px);height:var(--pdx-empty-state-compact-icon-container-size, 36px);font-size:var(--pdx-empty-state-compact-icon-container-icon-size, 20px)}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
42271
42772
|
}
|
|
42272
42773
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EmptyStateCardComponent, decorators: [{
|
|
42273
42774
|
type: Component,
|
|
@@ -42300,7 +42801,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42300
42801
|
</div>
|
|
42301
42802
|
<div class="actions">
|
|
42302
42803
|
@if (primaryAction) {
|
|
42303
|
-
<button mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42804
|
+
<button type="button" mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42304
42805
|
@if (primaryAction.icon) {
|
|
42305
42806
|
<mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
|
|
42306
42807
|
}
|
|
@@ -42308,7 +42809,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42308
42809
|
</button>
|
|
42309
42810
|
}
|
|
42310
42811
|
@for (a of secondaryActions; track a) {
|
|
42311
|
-
<button mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42812
|
+
<button type="button" mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42312
42813
|
@if (a.icon) {
|
|
42313
42814
|
<mat-icon [fontIcon]="a.icon"></mat-icon>
|
|
42314
42815
|
}
|
|
@@ -42318,7 +42819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42318
42819
|
</div>
|
|
42319
42820
|
</mat-card-content>
|
|
42320
42821
|
</mat-card>
|
|
42321
|
-
`, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height,
|
|
42822
|
+
`, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{width:fit-content;max-width:100%;height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));padding-inline:var(--pdx-empty-state-action-padding-inline, var(--praxis-action-control-padding-inline, 12px));border-radius:var(--pdx-empty-state-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--pdx-empty-state-action-gap, var(--praxis-action-control-gap, 8px));font-size:var(--pdx-empty-state-action-font-size, var(--praxis-action-control-font-size, .875rem));font-weight:var(--pdx-empty-state-action-font-weight, var(--praxis-action-control-font-weight, 500));line-height:var(--pdx-empty-state-action-line-height, var(--praxis-action-control-line-height, 1.25rem));white-space:nowrap}.actions .mat-mdc-button-base mat-icon{width:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));margin:0;font-size:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));line-height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px))}.actions .mat-mdc-button-base:focus-visible{outline:2px solid var(--pdx-empty-state-action-focus-ring, var(--praxis-action-control-focus-ring, var(--md-sys-color-primary)));outline-offset:2px}.actions .mat-mdc-button-base:disabled{opacity:var(--pdx-empty-state-action-disabled-opacity, var(--praxis-action-control-disabled-opacity, .62))}.align-center .actions{justify-content:var(--pdx-empty-state-actions-justify, center)}.density-compact .content{gap:var(--pdx-empty-state-compact-gap, 8px)}.density-compact .actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px))}.density-compact .icon{font-size:var(--pdx-empty-state-compact-icon-size, 24px);width:var(--pdx-empty-state-compact-icon-box-size, 24px);height:var(--pdx-empty-state-compact-icon-box-size, 24px)}.density-compact.icon-circle .icon,.density-compact.icon-soft .icon{width:var(--pdx-empty-state-compact-icon-container-size, 36px);height:var(--pdx-empty-state-compact-icon-container-size, 36px);font-size:var(--pdx-empty-state-compact-icon-container-icon-size, 20px)}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"] }]
|
|
42322
42823
|
}], propDecorators: { icon: [{
|
|
42323
42824
|
type: Input
|
|
42324
42825
|
}], title: [{
|
|
@@ -43700,4 +44201,4 @@ function provideHookWhitelist(allowed) {
|
|
|
43700
44201
|
* Generated bundle index. Do not edit.
|
|
43701
44202
|
*/
|
|
43702
44203
|
|
|
43703
|
-
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, CompositionRuntimeFacade, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RELATED_RESOURCE_OUTLET_PORTS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisCollectionSearchCss, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
44204
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, CompositionRuntimeFacade, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_ACTION_CONTROL_DEFAULTS, PRAXIS_ACTION_CONTROL_VARS, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RELATED_RESOURCE_OUTLET_PORTS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisActionControlCss, buildPraxisCollectionSearchCss, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isDomainRuleSnapshotProblemResponse, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeReactiveDeterminations, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|