@praxisui/core 9.0.4-rc.12 → 9.0.4-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -54
- package/ai/component-registry.json +161 -112
- package/fesm2022/praxisui-core.mjs +1447 -342
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +29 -2
|
@@ -19289,6 +19289,91 @@ function providePraxisHttpCollectionExportProvider(options = {}) {
|
|
|
19289
19289
|
];
|
|
19290
19290
|
}
|
|
19291
19291
|
|
|
19292
|
+
const TEXT_DESCRIPTOR_KEYS = new Set(['key', 'text', 'params']);
|
|
19293
|
+
/**
|
|
19294
|
+
* Resolves explicit `PraxisTextValue` descriptors in a JSON-like authored
|
|
19295
|
+
* document without mutating the canonical source document.
|
|
19296
|
+
*
|
|
19297
|
+
* Plain strings are intentionally preserved: host-owned business copy only
|
|
19298
|
+
* becomes locale-aware when the author supplies an explicit descriptor.
|
|
19299
|
+
*/
|
|
19300
|
+
function resolvePraxisI18nDocument(document, options) {
|
|
19301
|
+
const locale = normalizedLocale(options.locale) ||
|
|
19302
|
+
normalizedLocale(options.config?.locale) ||
|
|
19303
|
+
options.i18n.getLocale();
|
|
19304
|
+
const fallbackLocale = normalizedLocale(options.config?.fallbackLocale) ||
|
|
19305
|
+
options.i18n.getFallbackLocale();
|
|
19306
|
+
const ancestors = new Set();
|
|
19307
|
+
const visit = (value) => {
|
|
19308
|
+
if (isPraxisI18nMessageDescriptor(value)) {
|
|
19309
|
+
return resolveDescriptor(value, locale, fallbackLocale, options);
|
|
19310
|
+
}
|
|
19311
|
+
if (Array.isArray(value)) {
|
|
19312
|
+
if (ancestors.has(value))
|
|
19313
|
+
return value;
|
|
19314
|
+
ancestors.add(value);
|
|
19315
|
+
try {
|
|
19316
|
+
return value.map(visit);
|
|
19317
|
+
}
|
|
19318
|
+
finally {
|
|
19319
|
+
ancestors.delete(value);
|
|
19320
|
+
}
|
|
19321
|
+
}
|
|
19322
|
+
if (!isPlainRecord(value)) {
|
|
19323
|
+
return value;
|
|
19324
|
+
}
|
|
19325
|
+
if (ancestors.has(value))
|
|
19326
|
+
return value;
|
|
19327
|
+
ancestors.add(value);
|
|
19328
|
+
try {
|
|
19329
|
+
return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => [
|
|
19330
|
+
key,
|
|
19331
|
+
visit(nestedValue),
|
|
19332
|
+
]));
|
|
19333
|
+
}
|
|
19334
|
+
finally {
|
|
19335
|
+
ancestors.delete(value);
|
|
19336
|
+
}
|
|
19337
|
+
};
|
|
19338
|
+
return visit(document);
|
|
19339
|
+
}
|
|
19340
|
+
function isPraxisI18nMessageDescriptor(value) {
|
|
19341
|
+
if (!isPlainRecord(value))
|
|
19342
|
+
return false;
|
|
19343
|
+
const keys = Object.keys(value);
|
|
19344
|
+
if (!keys.length || keys.some((key) => !TEXT_DESCRIPTOR_KEYS.has(key))) {
|
|
19345
|
+
return false;
|
|
19346
|
+
}
|
|
19347
|
+
const key = value['key'];
|
|
19348
|
+
const text = value['text'];
|
|
19349
|
+
const params = value['params'];
|
|
19350
|
+
return (((typeof key === 'string' && !!key.trim()) ||
|
|
19351
|
+
(typeof text === 'string' && !!text)) &&
|
|
19352
|
+
(params == null || isPlainRecord(params)));
|
|
19353
|
+
}
|
|
19354
|
+
function resolveDescriptor(descriptor, locale, fallbackLocale, options) {
|
|
19355
|
+
const key = descriptor.key?.trim();
|
|
19356
|
+
if (!key) {
|
|
19357
|
+
return options.i18n.resolve(descriptor, descriptor.text, options.namespace);
|
|
19358
|
+
}
|
|
19359
|
+
const pageMessage = options.config?.dictionaries?.[locale]?.[key] ??
|
|
19360
|
+
options.config?.dictionaries?.[fallbackLocale]?.[key];
|
|
19361
|
+
if (pageMessage != null) {
|
|
19362
|
+
return interpolatePraxisTranslation(pageMessage, descriptor.params);
|
|
19363
|
+
}
|
|
19364
|
+
return options.i18n.tForLocale(locale, key, descriptor.params, descriptor.text, options.namespace);
|
|
19365
|
+
}
|
|
19366
|
+
function normalizedLocale(value) {
|
|
19367
|
+
const normalized = value?.trim();
|
|
19368
|
+
return normalized || undefined;
|
|
19369
|
+
}
|
|
19370
|
+
function isPlainRecord(value) {
|
|
19371
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
19372
|
+
return false;
|
|
19373
|
+
const prototype = Object.getPrototypeOf(value);
|
|
19374
|
+
return prototype === Object.prototype || prototype === null;
|
|
19375
|
+
}
|
|
19376
|
+
|
|
19292
19377
|
const RESOURCE_DISCOVERY_I18N_NAMESPACE = 'resourceDiscovery';
|
|
19293
19378
|
const RESOURCE_AVAILABILITY_REASON_KEY_BY_CODE = {
|
|
19294
19379
|
'resource-state-blocked': 'availability.reason.resource-state-blocked',
|
|
@@ -26741,157 +26826,920 @@ const ENUMS = {
|
|
|
26741
26826
|
railSide: ['left', 'right'],
|
|
26742
26827
|
deviceKind: ['desktop', 'tablet', 'mobile'],
|
|
26743
26828
|
stateMergeStrategy: ['replace', 'merge', 'append', 'remove-keys'],
|
|
26744
|
-
derivedStateComputeKind: [
|
|
26829
|
+
derivedStateComputeKind: [
|
|
26830
|
+
'json-logic',
|
|
26831
|
+
'template',
|
|
26832
|
+
'operator',
|
|
26833
|
+
'transformer',
|
|
26834
|
+
],
|
|
26745
26835
|
shellKind: ['dashboard-card', 'none'],
|
|
26746
26836
|
actionVariant: ['icon', 'text', 'outlined'],
|
|
26747
26837
|
actionPlacement: ['header', 'window'],
|
|
26748
26838
|
};
|
|
26749
26839
|
const CAPS = [
|
|
26750
|
-
{
|
|
26751
|
-
|
|
26752
|
-
|
|
26753
|
-
|
|
26754
|
-
|
|
26755
|
-
|
|
26756
|
-
{
|
|
26757
|
-
|
|
26758
|
-
|
|
26759
|
-
|
|
26760
|
-
|
|
26761
|
-
|
|
26762
|
-
{
|
|
26763
|
-
|
|
26764
|
-
|
|
26765
|
-
|
|
26766
|
-
|
|
26767
|
-
|
|
26768
|
-
{
|
|
26769
|
-
|
|
26770
|
-
|
|
26771
|
-
|
|
26772
|
-
|
|
26773
|
-
|
|
26774
|
-
{
|
|
26775
|
-
|
|
26776
|
-
|
|
26777
|
-
|
|
26778
|
-
|
|
26779
|
-
|
|
26780
|
-
{
|
|
26781
|
-
|
|
26782
|
-
|
|
26783
|
-
|
|
26784
|
-
|
|
26785
|
-
|
|
26786
|
-
{
|
|
26787
|
-
|
|
26788
|
-
|
|
26789
|
-
|
|
26790
|
-
|
|
26791
|
-
|
|
26792
|
-
{
|
|
26793
|
-
|
|
26794
|
-
|
|
26795
|
-
|
|
26796
|
-
|
|
26797
|
-
|
|
26798
|
-
{
|
|
26799
|
-
|
|
26800
|
-
|
|
26801
|
-
|
|
26802
|
-
|
|
26803
|
-
|
|
26804
|
-
{
|
|
26805
|
-
|
|
26806
|
-
|
|
26807
|
-
|
|
26808
|
-
|
|
26809
|
-
|
|
26810
|
-
|
|
26811
|
-
{
|
|
26812
|
-
|
|
26813
|
-
|
|
26814
|
-
|
|
26815
|
-
|
|
26816
|
-
|
|
26817
|
-
{
|
|
26818
|
-
|
|
26819
|
-
|
|
26820
|
-
|
|
26821
|
-
|
|
26822
|
-
|
|
26823
|
-
{
|
|
26824
|
-
|
|
26825
|
-
|
|
26826
|
-
|
|
26827
|
-
|
|
26828
|
-
|
|
26829
|
-
{
|
|
26830
|
-
|
|
26831
|
-
|
|
26832
|
-
|
|
26833
|
-
|
|
26834
|
-
|
|
26835
|
-
{
|
|
26836
|
-
|
|
26837
|
-
|
|
26838
|
-
|
|
26839
|
-
|
|
26840
|
-
|
|
26841
|
-
{
|
|
26842
|
-
|
|
26843
|
-
|
|
26844
|
-
|
|
26845
|
-
|
|
26846
|
-
|
|
26847
|
-
{
|
|
26848
|
-
|
|
26849
|
-
|
|
26850
|
-
|
|
26851
|
-
|
|
26852
|
-
|
|
26853
|
-
{
|
|
26854
|
-
|
|
26855
|
-
|
|
26856
|
-
|
|
26857
|
-
|
|
26858
|
-
|
|
26859
|
-
{
|
|
26860
|
-
|
|
26861
|
-
|
|
26862
|
-
|
|
26863
|
-
|
|
26864
|
-
|
|
26865
|
-
|
|
26866
|
-
{
|
|
26867
|
-
|
|
26868
|
-
|
|
26869
|
-
|
|
26870
|
-
|
|
26871
|
-
|
|
26872
|
-
{
|
|
26873
|
-
|
|
26874
|
-
|
|
26875
|
-
|
|
26876
|
-
|
|
26877
|
-
|
|
26878
|
-
{
|
|
26879
|
-
|
|
26880
|
-
|
|
26881
|
-
|
|
26882
|
-
|
|
26883
|
-
|
|
26884
|
-
{
|
|
26885
|
-
|
|
26886
|
-
|
|
26887
|
-
|
|
26888
|
-
|
|
26889
|
-
|
|
26890
|
-
|
|
26891
|
-
{
|
|
26892
|
-
|
|
26893
|
-
|
|
26894
|
-
|
|
26840
|
+
{
|
|
26841
|
+
path: 'page',
|
|
26842
|
+
category: 'page',
|
|
26843
|
+
valueKind: 'object',
|
|
26844
|
+
description: 'Definição da página dinâmica.',
|
|
26845
|
+
},
|
|
26846
|
+
{
|
|
26847
|
+
path: 'page.context',
|
|
26848
|
+
category: 'context',
|
|
26849
|
+
valueKind: 'object',
|
|
26850
|
+
description: 'Contexto compartilhado entre widgets.',
|
|
26851
|
+
},
|
|
26852
|
+
{
|
|
26853
|
+
path: 'page.i18n',
|
|
26854
|
+
category: 'localization',
|
|
26855
|
+
valueKind: 'object',
|
|
26856
|
+
description: 'Catálogo de copy de negócio da página, resolvido apenas na projeção runtime.',
|
|
26857
|
+
},
|
|
26858
|
+
{
|
|
26859
|
+
path: 'page.i18n.fallbackLocale',
|
|
26860
|
+
category: 'localization',
|
|
26861
|
+
valueKind: 'string',
|
|
26862
|
+
description: 'Locale de fallback do catálogo próprio da página.',
|
|
26863
|
+
},
|
|
26864
|
+
{
|
|
26865
|
+
path: 'page.i18n.dictionaries',
|
|
26866
|
+
category: 'localization',
|
|
26867
|
+
valueKind: 'object',
|
|
26868
|
+
description: 'Dicionários locale -> chave semântica -> texto usados por descritores PraxisTextValue explícitos.',
|
|
26869
|
+
},
|
|
26870
|
+
{
|
|
26871
|
+
path: 'page.layoutPreset',
|
|
26872
|
+
category: 'layout',
|
|
26873
|
+
valueKind: 'string',
|
|
26874
|
+
description: 'ID canônico opcional do preset estrutural da página.',
|
|
26875
|
+
},
|
|
26876
|
+
{
|
|
26877
|
+
path: 'page.layoutPresetOptions',
|
|
26878
|
+
category: 'layout',
|
|
26879
|
+
valueKind: 'object',
|
|
26880
|
+
description: 'Opções específicas do preset estrutural consumidas por builders e runtimes futuros.',
|
|
26881
|
+
},
|
|
26882
|
+
{
|
|
26883
|
+
path: 'page.themePreset',
|
|
26884
|
+
category: 'appearance',
|
|
26885
|
+
valueKind: 'string',
|
|
26886
|
+
description: 'ID opcional do preset de tema para shell, gráficos, densidade e defaults visuais.',
|
|
26887
|
+
},
|
|
26888
|
+
{
|
|
26889
|
+
path: 'page.layout',
|
|
26890
|
+
category: 'layout',
|
|
26891
|
+
valueKind: 'object',
|
|
26892
|
+
description: 'Layout base da página.',
|
|
26893
|
+
},
|
|
26894
|
+
{
|
|
26895
|
+
path: 'page.layout.orientation',
|
|
26896
|
+
category: 'layout',
|
|
26897
|
+
valueKind: 'enum',
|
|
26898
|
+
allowedValues: ENUMS.layoutOrientation,
|
|
26899
|
+
description: 'Orientacao do grid (vertical/columns).',
|
|
26900
|
+
},
|
|
26901
|
+
{
|
|
26902
|
+
path: 'page.layout.columns',
|
|
26903
|
+
category: 'layout',
|
|
26904
|
+
valueKind: 'number',
|
|
26905
|
+
description: 'Numero de colunas (quando orientation=columns).',
|
|
26906
|
+
},
|
|
26907
|
+
{
|
|
26908
|
+
path: 'page.layout.gap',
|
|
26909
|
+
category: 'layout',
|
|
26910
|
+
valueKind: 'string',
|
|
26911
|
+
description: 'Gap entre widgets (ex: 16px).',
|
|
26912
|
+
},
|
|
26913
|
+
{
|
|
26914
|
+
path: 'page.layout.breakpoints',
|
|
26915
|
+
category: 'layout',
|
|
26916
|
+
valueKind: 'object',
|
|
26917
|
+
description: 'Colunas por breakpoint.',
|
|
26918
|
+
},
|
|
26919
|
+
{
|
|
26920
|
+
path: 'page.layout.breakpoints.sm',
|
|
26921
|
+
category: 'layout',
|
|
26922
|
+
valueKind: 'number',
|
|
26923
|
+
description: 'Colunas para breakpoint sm.',
|
|
26924
|
+
},
|
|
26925
|
+
{
|
|
26926
|
+
path: 'page.layout.breakpoints.md',
|
|
26927
|
+
category: 'layout',
|
|
26928
|
+
valueKind: 'number',
|
|
26929
|
+
description: 'Colunas para breakpoint md.',
|
|
26930
|
+
},
|
|
26931
|
+
{
|
|
26932
|
+
path: 'page.layout.breakpoints.lg',
|
|
26933
|
+
category: 'layout',
|
|
26934
|
+
valueKind: 'number',
|
|
26935
|
+
description: 'Colunas para breakpoint lg.',
|
|
26936
|
+
},
|
|
26937
|
+
{
|
|
26938
|
+
path: 'page.layout.breakpoints.xl',
|
|
26939
|
+
category: 'layout',
|
|
26940
|
+
valueKind: 'number',
|
|
26941
|
+
description: 'Colunas para breakpoint xl.',
|
|
26942
|
+
},
|
|
26943
|
+
{
|
|
26944
|
+
path: 'page.canvas',
|
|
26945
|
+
category: 'layout',
|
|
26946
|
+
valueKind: 'object',
|
|
26947
|
+
description: 'Canvas espacial canônico da página quando houver geometria explícita.',
|
|
26948
|
+
},
|
|
26949
|
+
{
|
|
26950
|
+
path: 'page.canvas.mode',
|
|
26951
|
+
category: 'layout',
|
|
26952
|
+
valueKind: 'enum',
|
|
26953
|
+
allowedValues: ENUMS.canvasMode,
|
|
26954
|
+
description: 'Modo canonico do canvas. Valor atual: grid.',
|
|
26955
|
+
},
|
|
26956
|
+
{
|
|
26957
|
+
path: 'page.canvas.columns',
|
|
26958
|
+
category: 'layout',
|
|
26959
|
+
valueKind: 'number',
|
|
26960
|
+
description: 'Numero de colunas do canvas espacial.',
|
|
26961
|
+
},
|
|
26962
|
+
{
|
|
26963
|
+
path: 'page.canvas.rowUnit',
|
|
26964
|
+
category: 'layout',
|
|
26965
|
+
valueKind: 'string',
|
|
26966
|
+
description: 'Altura base das linhas do canvas, como 80px.',
|
|
26967
|
+
},
|
|
26968
|
+
{
|
|
26969
|
+
path: 'page.canvas.gap',
|
|
26970
|
+
category: 'layout',
|
|
26971
|
+
valueKind: 'string',
|
|
26972
|
+
description: 'Espacamento entre itens do canvas.',
|
|
26973
|
+
},
|
|
26974
|
+
{
|
|
26975
|
+
path: 'page.canvas.autoRows',
|
|
26976
|
+
category: 'layout',
|
|
26977
|
+
valueKind: 'enum',
|
|
26978
|
+
allowedValues: ENUMS.canvasAutoRows,
|
|
26979
|
+
description: 'Politica de linhas automaticas do canvas.',
|
|
26980
|
+
},
|
|
26981
|
+
{
|
|
26982
|
+
path: 'page.canvas.collisionPolicy',
|
|
26983
|
+
category: 'layout',
|
|
26984
|
+
valueKind: 'enum',
|
|
26985
|
+
allowedValues: ENUMS.canvasCollisionPolicy,
|
|
26986
|
+
description: 'Politica de colisao do canvas espacial.',
|
|
26987
|
+
},
|
|
26988
|
+
{
|
|
26989
|
+
path: 'page.canvas.items',
|
|
26990
|
+
category: 'layout',
|
|
26991
|
+
valueKind: 'object',
|
|
26992
|
+
description: 'Mapa canonico de geometria por widget key.',
|
|
26993
|
+
},
|
|
26994
|
+
{
|
|
26995
|
+
path: 'page.canvas.items.<widgetKey>.col',
|
|
26996
|
+
category: 'layout',
|
|
26997
|
+
valueKind: 'number',
|
|
26998
|
+
description: 'Coluna inicial do widget no canvas.',
|
|
26999
|
+
},
|
|
27000
|
+
{
|
|
27001
|
+
path: 'page.canvas.items.<widgetKey>.row',
|
|
27002
|
+
category: 'layout',
|
|
27003
|
+
valueKind: 'number',
|
|
27004
|
+
description: 'Linha inicial do widget no canvas.',
|
|
27005
|
+
},
|
|
27006
|
+
{
|
|
27007
|
+
path: 'page.canvas.items.<widgetKey>.colSpan',
|
|
27008
|
+
category: 'layout',
|
|
27009
|
+
valueKind: 'number',
|
|
27010
|
+
description: 'Quantidade de colunas ocupadas pelo widget.',
|
|
27011
|
+
},
|
|
27012
|
+
{
|
|
27013
|
+
path: 'page.canvas.items.<widgetKey>.rowSpan',
|
|
27014
|
+
category: 'layout',
|
|
27015
|
+
valueKind: 'number',
|
|
27016
|
+
description: 'Quantidade de linhas ocupadas pelo widget.',
|
|
27017
|
+
},
|
|
27018
|
+
{
|
|
27019
|
+
path: 'page.canvas.items.<widgetKey>.zIndex',
|
|
27020
|
+
category: 'layout',
|
|
27021
|
+
valueKind: 'number',
|
|
27022
|
+
description: 'Camada opcional do item no canvas.',
|
|
27023
|
+
},
|
|
27024
|
+
{
|
|
27025
|
+
path: 'page.canvas.items.<widgetKey>.constraints',
|
|
27026
|
+
category: 'layout',
|
|
27027
|
+
valueKind: 'object',
|
|
27028
|
+
description: 'Restricoes opcionais de posicao e tamanho do item no canvas.',
|
|
27029
|
+
},
|
|
27030
|
+
{
|
|
27031
|
+
path: 'page.canvas.items.<widgetKey>.constraints.minColSpan',
|
|
27032
|
+
category: 'layout',
|
|
27033
|
+
valueKind: 'number',
|
|
27034
|
+
description: 'Span mínimo de colunas permitido.',
|
|
27035
|
+
},
|
|
27036
|
+
{
|
|
27037
|
+
path: 'page.canvas.items.<widgetKey>.constraints.minRowSpan',
|
|
27038
|
+
category: 'layout',
|
|
27039
|
+
valueKind: 'number',
|
|
27040
|
+
description: 'Span mínimo de linhas permitido.',
|
|
27041
|
+
},
|
|
27042
|
+
{
|
|
27043
|
+
path: 'page.canvas.items.<widgetKey>.constraints.maxColSpan',
|
|
27044
|
+
category: 'layout',
|
|
27045
|
+
valueKind: 'number',
|
|
27046
|
+
description: 'Span máximo de colunas permitido.',
|
|
27047
|
+
},
|
|
27048
|
+
{
|
|
27049
|
+
path: 'page.canvas.items.<widgetKey>.constraints.maxRowSpan',
|
|
27050
|
+
category: 'layout',
|
|
27051
|
+
valueKind: 'number',
|
|
27052
|
+
description: 'Span máximo de linhas permitido.',
|
|
27053
|
+
},
|
|
27054
|
+
{
|
|
27055
|
+
path: 'page.canvas.items.<widgetKey>.constraints.lockPosition',
|
|
27056
|
+
category: 'layout',
|
|
27057
|
+
valueKind: 'boolean',
|
|
27058
|
+
description: 'Bloqueia alteracao de posicao do item no canvas.',
|
|
27059
|
+
},
|
|
27060
|
+
{
|
|
27061
|
+
path: 'page.canvas.items.<widgetKey>.constraints.lockSize',
|
|
27062
|
+
category: 'layout',
|
|
27063
|
+
valueKind: 'boolean',
|
|
27064
|
+
description: 'Bloqueia alteracao de tamanho do item no canvas.',
|
|
27065
|
+
},
|
|
27066
|
+
{
|
|
27067
|
+
path: 'page.widgets',
|
|
27068
|
+
category: 'widgets',
|
|
27069
|
+
valueKind: 'array',
|
|
27070
|
+
description: 'Lista de widgets renderizados.',
|
|
27071
|
+
},
|
|
27072
|
+
{
|
|
27073
|
+
path: 'page.widgets[].key',
|
|
27074
|
+
category: 'widgets',
|
|
27075
|
+
valueKind: 'string',
|
|
27076
|
+
description: 'Identificador unico do widget.',
|
|
27077
|
+
},
|
|
27078
|
+
{
|
|
27079
|
+
path: 'page.widgets[].className',
|
|
27080
|
+
category: 'widgets',
|
|
27081
|
+
valueKind: 'string',
|
|
27082
|
+
description: 'Classe CSS opcional do widget.',
|
|
27083
|
+
},
|
|
27084
|
+
{
|
|
27085
|
+
path: 'page.widgets[].definition.id',
|
|
27086
|
+
category: 'widgets',
|
|
27087
|
+
valueKind: 'string',
|
|
27088
|
+
description: 'ID do componente do widget (ex: praxis-table).',
|
|
27089
|
+
},
|
|
27090
|
+
{
|
|
27091
|
+
path: 'page.widgets[].definition.inputs',
|
|
27092
|
+
category: 'widgets',
|
|
27093
|
+
valueKind: 'object',
|
|
27094
|
+
description: 'Inputs iniciais do widget.',
|
|
27095
|
+
},
|
|
27096
|
+
{
|
|
27097
|
+
path: 'page.widgets[].definition.inputs.hostCapabilities',
|
|
27098
|
+
category: 'widgets',
|
|
27099
|
+
valueKind: 'object',
|
|
27100
|
+
description: 'Capacidades runtime mediadas pelo host quando definition.id = praxis-rich-content. Não pertence ao JSON persistido.',
|
|
27101
|
+
},
|
|
27102
|
+
{
|
|
27103
|
+
path: 'page.widgets[].definition.inputs.hostCapabilities.dispatchAction',
|
|
27104
|
+
category: 'widgets',
|
|
27105
|
+
valueKind: 'object',
|
|
27106
|
+
description: 'Dispatcher runtime para actionButton e actions declarativas de rich content hospedado na página.',
|
|
27107
|
+
},
|
|
27108
|
+
{
|
|
27109
|
+
path: 'page.widgets[].definition.inputs.hostCapabilities.isActionAvailable',
|
|
27110
|
+
category: 'widgets',
|
|
27111
|
+
valueKind: 'object',
|
|
27112
|
+
description: 'Resolver runtime de disponibilidade de actionId para rich content hospedado na página.',
|
|
27113
|
+
},
|
|
27114
|
+
{
|
|
27115
|
+
path: 'page.widgets[].definition.inputs.hostCapabilities.hasCapability',
|
|
27116
|
+
category: 'widgets',
|
|
27117
|
+
valueKind: 'object',
|
|
27118
|
+
description: 'Resolver runtime de capabilities como page.customization.enabled e page.widget.selected para rich content hospedado na página.',
|
|
27119
|
+
},
|
|
27120
|
+
{
|
|
27121
|
+
path: 'page.widgets[].definition.bindingOrder',
|
|
27122
|
+
category: 'widgets',
|
|
27123
|
+
valueKind: 'array',
|
|
27124
|
+
description: 'Ordem de binding de inputs.',
|
|
27125
|
+
},
|
|
27126
|
+
{
|
|
27127
|
+
path: 'page.widgets[].shell',
|
|
27128
|
+
category: 'shell',
|
|
27129
|
+
valueKind: 'object',
|
|
27130
|
+
description: 'Configuração do shell do widget.',
|
|
27131
|
+
},
|
|
27132
|
+
{
|
|
27133
|
+
path: 'page.widgets[].shell.kind',
|
|
27134
|
+
category: 'shell',
|
|
27135
|
+
valueKind: 'enum',
|
|
27136
|
+
allowedValues: ENUMS.shellKind,
|
|
27137
|
+
description: 'Tipo de shell.',
|
|
27138
|
+
},
|
|
27139
|
+
{
|
|
27140
|
+
path: 'page.widgets[].shell.title',
|
|
27141
|
+
category: 'shell',
|
|
27142
|
+
valueKind: 'string',
|
|
27143
|
+
description: 'Título do shell.',
|
|
27144
|
+
},
|
|
27145
|
+
{
|
|
27146
|
+
path: 'page.widgets[].shell.subtitle',
|
|
27147
|
+
category: 'shell',
|
|
27148
|
+
valueKind: 'string',
|
|
27149
|
+
description: 'Subtítulo do shell.',
|
|
27150
|
+
},
|
|
27151
|
+
{
|
|
27152
|
+
path: 'page.widgets[].shell.icon',
|
|
27153
|
+
category: 'shell',
|
|
27154
|
+
valueKind: 'string',
|
|
27155
|
+
description: 'Ícone do shell.',
|
|
27156
|
+
},
|
|
27157
|
+
{
|
|
27158
|
+
path: 'page.widgets[].shell.showHeader',
|
|
27159
|
+
category: 'shell',
|
|
27160
|
+
valueKind: 'boolean',
|
|
27161
|
+
description: 'Exibe o header do shell.',
|
|
27162
|
+
},
|
|
27163
|
+
{
|
|
27164
|
+
path: 'page.widgets[].shell.actions',
|
|
27165
|
+
category: 'shell',
|
|
27166
|
+
valueKind: 'array',
|
|
27167
|
+
description: 'Ações do shell.',
|
|
27168
|
+
},
|
|
27169
|
+
{
|
|
27170
|
+
path: 'page.widgets[].shell.actions[].id',
|
|
27171
|
+
category: 'shell',
|
|
27172
|
+
valueKind: 'string',
|
|
27173
|
+
description: 'ID da ação.',
|
|
27174
|
+
},
|
|
27175
|
+
{
|
|
27176
|
+
path: 'page.widgets[].shell.actions[].label',
|
|
27177
|
+
category: 'shell',
|
|
27178
|
+
valueKind: 'string',
|
|
27179
|
+
description: 'Label da ação.',
|
|
27180
|
+
},
|
|
27181
|
+
{
|
|
27182
|
+
path: 'page.widgets[].shell.actions[].icon',
|
|
27183
|
+
category: 'shell',
|
|
27184
|
+
valueKind: 'string',
|
|
27185
|
+
description: 'Ícone da ação.',
|
|
27186
|
+
},
|
|
27187
|
+
{
|
|
27188
|
+
path: 'page.widgets[].shell.actions[].variant',
|
|
27189
|
+
category: 'shell',
|
|
27190
|
+
valueKind: 'enum',
|
|
27191
|
+
allowedValues: ENUMS.actionVariant,
|
|
27192
|
+
description: 'Estilo visual da ação.',
|
|
27193
|
+
},
|
|
27194
|
+
{
|
|
27195
|
+
path: 'page.widgets[].shell.actions[].placement',
|
|
27196
|
+
category: 'shell',
|
|
27197
|
+
valueKind: 'enum',
|
|
27198
|
+
allowedValues: ENUMS.actionPlacement,
|
|
27199
|
+
description: 'Posicionamento da ação.',
|
|
27200
|
+
},
|
|
27201
|
+
{
|
|
27202
|
+
path: 'page.widgets[].shell.actions[].emit',
|
|
27203
|
+
category: 'shell',
|
|
27204
|
+
valueKind: 'string',
|
|
27205
|
+
description: 'Evento emitido ao acionar a ação.',
|
|
27206
|
+
},
|
|
27207
|
+
{
|
|
27208
|
+
path: 'page.state',
|
|
27209
|
+
category: 'state',
|
|
27210
|
+
valueKind: 'object',
|
|
27211
|
+
description: 'Estado declarativo opcional compartilhado por widgets e composicao.',
|
|
27212
|
+
},
|
|
27213
|
+
{
|
|
27214
|
+
path: 'page.state.values',
|
|
27215
|
+
category: 'state',
|
|
27216
|
+
valueKind: 'object',
|
|
27217
|
+
description: 'Valores primarios mutaveis escritos por widgets, defaults ou host.',
|
|
27218
|
+
},
|
|
27219
|
+
{
|
|
27220
|
+
path: 'page.state.schema',
|
|
27221
|
+
category: 'state',
|
|
27222
|
+
valueKind: 'object',
|
|
27223
|
+
description: 'Descritores dos paths primarios de estado.',
|
|
27224
|
+
},
|
|
27225
|
+
{
|
|
27226
|
+
path: 'page.state.schema.<token>.type',
|
|
27227
|
+
category: 'state',
|
|
27228
|
+
valueKind: 'string',
|
|
27229
|
+
description: 'Tipo semantico opcional do path de estado.',
|
|
27230
|
+
},
|
|
27231
|
+
{
|
|
27232
|
+
path: 'page.state.schema.<token>.initial',
|
|
27233
|
+
category: 'state',
|
|
27234
|
+
valueKind: 'object',
|
|
27235
|
+
description: 'Valor inicial usado quando page.state.values omite o path.',
|
|
27236
|
+
},
|
|
27237
|
+
{
|
|
27238
|
+
path: 'page.state.schema.<token>.persist',
|
|
27239
|
+
category: 'state',
|
|
27240
|
+
valueKind: 'boolean',
|
|
27241
|
+
description: 'Indica se o path primário deve ser persistido com a página.',
|
|
27242
|
+
},
|
|
27243
|
+
{
|
|
27244
|
+
path: 'page.state.schema.<token>.mergeStrategy',
|
|
27245
|
+
category: 'state',
|
|
27246
|
+
valueKind: 'enum',
|
|
27247
|
+
allowedValues: ENUMS.stateMergeStrategy,
|
|
27248
|
+
description: 'Como escritas de widget/estado combinam com o valor atual.',
|
|
27249
|
+
},
|
|
27250
|
+
{
|
|
27251
|
+
path: 'page.state.schema.<token>.description',
|
|
27252
|
+
category: 'state',
|
|
27253
|
+
valueKind: 'string',
|
|
27254
|
+
description: 'Descrição opcional do path para builders e catálogos AI.',
|
|
27255
|
+
},
|
|
27256
|
+
{
|
|
27257
|
+
path: 'page.state.schema.<token>.tags',
|
|
27258
|
+
category: 'state',
|
|
27259
|
+
valueKind: 'array',
|
|
27260
|
+
description: 'Tags opcionais para busca e governanca do estado.',
|
|
27261
|
+
},
|
|
27262
|
+
{
|
|
27263
|
+
path: 'page.state.derived',
|
|
27264
|
+
category: 'state',
|
|
27265
|
+
valueKind: 'object',
|
|
27266
|
+
description: 'Descritores de estado derivado recomputado pelo runtime.',
|
|
27267
|
+
},
|
|
27268
|
+
{
|
|
27269
|
+
path: 'page.state.derived.<token>.dependsOn',
|
|
27270
|
+
category: 'state',
|
|
27271
|
+
valueKind: 'array',
|
|
27272
|
+
description: 'Paths de estado que alimentam o valor derivado.',
|
|
27273
|
+
},
|
|
27274
|
+
{
|
|
27275
|
+
path: 'page.state.derived.<token>.compute',
|
|
27276
|
+
category: 'state',
|
|
27277
|
+
valueKind: 'object',
|
|
27278
|
+
description: 'Descritor de computacao do estado derivado.',
|
|
27279
|
+
},
|
|
27280
|
+
{
|
|
27281
|
+
path: 'page.state.derived.<token>.compute.kind',
|
|
27282
|
+
category: 'state',
|
|
27283
|
+
valueKind: 'enum',
|
|
27284
|
+
allowedValues: ENUMS.derivedStateComputeKind,
|
|
27285
|
+
description: 'Tipo de computacao do estado derivado.',
|
|
27286
|
+
},
|
|
27287
|
+
{
|
|
27288
|
+
path: 'page.state.derived.<token>.compute.expression',
|
|
27289
|
+
category: 'state',
|
|
27290
|
+
valueKind: 'expression',
|
|
27291
|
+
description: 'Expressao Json Logic para compute.kind=json-logic.',
|
|
27292
|
+
},
|
|
27293
|
+
{
|
|
27294
|
+
path: 'page.state.derived.<token>.compute.value',
|
|
27295
|
+
category: 'state',
|
|
27296
|
+
valueKind: 'object',
|
|
27297
|
+
description: 'Valor template para compute.kind=template.',
|
|
27298
|
+
},
|
|
27299
|
+
{
|
|
27300
|
+
path: 'page.state.derived.<token>.compute.operator',
|
|
27301
|
+
category: 'state',
|
|
27302
|
+
valueKind: 'string',
|
|
27303
|
+
description: 'Operador para compute.kind=operator.',
|
|
27304
|
+
},
|
|
27305
|
+
{
|
|
27306
|
+
path: 'page.state.derived.<token>.compute.options',
|
|
27307
|
+
category: 'state',
|
|
27308
|
+
valueKind: 'object',
|
|
27309
|
+
description: 'Opções do operador ou transformer.',
|
|
27310
|
+
},
|
|
27311
|
+
{
|
|
27312
|
+
path: 'page.state.derived.<token>.compute.transformerId',
|
|
27313
|
+
category: 'state',
|
|
27314
|
+
valueKind: 'string',
|
|
27315
|
+
description: 'Identificador do transformer para compute.kind=transformer.',
|
|
27316
|
+
},
|
|
27317
|
+
{
|
|
27318
|
+
path: 'page.state.derived.<token>.description',
|
|
27319
|
+
category: 'state',
|
|
27320
|
+
valueKind: 'string',
|
|
27321
|
+
description: 'Descrição opcional do estado derivado.',
|
|
27322
|
+
},
|
|
27323
|
+
{
|
|
27324
|
+
path: 'page.state.derived.<token>.cache',
|
|
27325
|
+
category: 'state',
|
|
27326
|
+
valueKind: 'boolean',
|
|
27327
|
+
description: 'Permite cache futuro do valor derivado.',
|
|
27328
|
+
},
|
|
27329
|
+
{
|
|
27330
|
+
path: 'page.composition',
|
|
27331
|
+
category: 'connections',
|
|
27332
|
+
valueKind: 'object',
|
|
27333
|
+
description: 'Envelope canonico da composicao persistida.',
|
|
27334
|
+
},
|
|
27335
|
+
{
|
|
27336
|
+
path: 'page.composition.version',
|
|
27337
|
+
category: 'connections',
|
|
27338
|
+
valueKind: 'string',
|
|
27339
|
+
description: 'Versao do envelope de composicao.',
|
|
27340
|
+
},
|
|
27341
|
+
{
|
|
27342
|
+
path: 'page.composition.links',
|
|
27343
|
+
category: 'connections',
|
|
27344
|
+
valueKind: 'array',
|
|
27345
|
+
description: 'Links canonicos entre widgets, estado e actions globais.',
|
|
27346
|
+
},
|
|
27347
|
+
{
|
|
27348
|
+
path: 'page.composition.links[].id',
|
|
27349
|
+
category: 'connections',
|
|
27350
|
+
valueKind: 'string',
|
|
27351
|
+
description: 'Identificador estavel do link.',
|
|
27352
|
+
},
|
|
27353
|
+
{
|
|
27354
|
+
path: 'page.composition.links[].from',
|
|
27355
|
+
category: 'connections',
|
|
27356
|
+
valueKind: 'object',
|
|
27357
|
+
description: 'Endpoint de origem do link.',
|
|
27358
|
+
},
|
|
27359
|
+
{
|
|
27360
|
+
path: 'page.composition.links[].from.kind',
|
|
27361
|
+
category: 'connections',
|
|
27362
|
+
valueKind: 'string',
|
|
27363
|
+
description: 'Tipo do endpoint de origem, como component-port ou state.',
|
|
27364
|
+
},
|
|
27365
|
+
{
|
|
27366
|
+
path: 'page.composition.links[].from.ref',
|
|
27367
|
+
category: 'connections',
|
|
27368
|
+
valueKind: 'object',
|
|
27369
|
+
description: 'Referencia estruturada do endpoint de origem.',
|
|
27370
|
+
},
|
|
27371
|
+
{
|
|
27372
|
+
path: 'page.composition.links[].from.ref.widget',
|
|
27373
|
+
category: 'connections',
|
|
27374
|
+
valueKind: 'string',
|
|
27375
|
+
description: 'Widget top-level dono do endpoint de origem.',
|
|
27376
|
+
},
|
|
27377
|
+
{
|
|
27378
|
+
path: 'page.composition.links[].from.ref.port',
|
|
27379
|
+
category: 'connections',
|
|
27380
|
+
valueKind: 'string',
|
|
27381
|
+
description: 'Porta de origem do componente.',
|
|
27382
|
+
},
|
|
27383
|
+
{
|
|
27384
|
+
path: 'page.composition.links[].from.ref.direction',
|
|
27385
|
+
category: 'connections',
|
|
27386
|
+
valueKind: 'string',
|
|
27387
|
+
description: 'Direcao da porta de origem.',
|
|
27388
|
+
},
|
|
27389
|
+
{
|
|
27390
|
+
path: 'page.composition.links[].from.ref.nestedPath',
|
|
27391
|
+
category: 'connections',
|
|
27392
|
+
valueKind: 'array',
|
|
27393
|
+
description: 'NestedPath canonico para porta de componente filho de origem.',
|
|
27394
|
+
},
|
|
27395
|
+
{
|
|
27396
|
+
path: 'page.composition.links[].from.ref.nestedPath[].kind',
|
|
27397
|
+
category: 'connections',
|
|
27398
|
+
valueKind: 'string',
|
|
27399
|
+
description: 'Tipo do segmento nested de origem.',
|
|
27400
|
+
},
|
|
27401
|
+
{
|
|
27402
|
+
path: 'page.composition.links[].from.ref.nestedPath[].id',
|
|
27403
|
+
category: 'connections',
|
|
27404
|
+
valueKind: 'string',
|
|
27405
|
+
description: 'Identificador estrutural do segmento nested de origem.',
|
|
27406
|
+
},
|
|
27407
|
+
{
|
|
27408
|
+
path: 'page.composition.links[].from.ref.nestedPath[].key',
|
|
27409
|
+
category: 'connections',
|
|
27410
|
+
valueKind: 'string',
|
|
27411
|
+
description: 'Chave estavel do widget filho no segmento terminal de origem.',
|
|
27412
|
+
critical: true,
|
|
27413
|
+
},
|
|
27414
|
+
{
|
|
27415
|
+
path: 'page.composition.links[].from.ref.nestedPath[].index',
|
|
27416
|
+
category: 'connections',
|
|
27417
|
+
valueKind: 'number',
|
|
27418
|
+
description: 'Índice auxiliar para diagnóstico visual; não use como identidade primária.',
|
|
27419
|
+
},
|
|
27420
|
+
{
|
|
27421
|
+
path: 'page.composition.links[].from.ref.nestedPath[].componentType',
|
|
27422
|
+
category: 'connections',
|
|
27423
|
+
valueKind: 'string',
|
|
27424
|
+
description: 'Tipo do componente real do widget filho de origem.',
|
|
27425
|
+
},
|
|
27426
|
+
{
|
|
27427
|
+
path: 'page.composition.links[].to',
|
|
27428
|
+
category: 'connections',
|
|
27429
|
+
valueKind: 'object',
|
|
27430
|
+
description: 'Endpoint de destino do link.',
|
|
27431
|
+
},
|
|
27432
|
+
{
|
|
27433
|
+
path: 'page.composition.links[].to.kind',
|
|
27434
|
+
category: 'connections',
|
|
27435
|
+
valueKind: 'string',
|
|
27436
|
+
description: 'Tipo do endpoint de destino, como component-port, state ou global-action.',
|
|
27437
|
+
},
|
|
27438
|
+
{
|
|
27439
|
+
path: 'page.composition.links[].to.ref',
|
|
27440
|
+
category: 'connections',
|
|
27441
|
+
valueKind: 'object',
|
|
27442
|
+
description: 'Referencia estruturada do endpoint de destino.',
|
|
27443
|
+
},
|
|
27444
|
+
{
|
|
27445
|
+
path: 'page.composition.links[].to.ref.[actionId]',
|
|
27446
|
+
category: 'connections',
|
|
27447
|
+
valueKind: 'string',
|
|
27448
|
+
description: 'ID da action global quando to.kind = global-action.',
|
|
27449
|
+
},
|
|
27450
|
+
{
|
|
27451
|
+
path: 'page.composition.links[].to.ref.payload',
|
|
27452
|
+
category: 'connections',
|
|
27453
|
+
valueKind: 'object',
|
|
27454
|
+
description: 'Payload fixo opcional da action global; quando omitido, o runtime entrega o valor transformado do link.',
|
|
27455
|
+
},
|
|
27456
|
+
{
|
|
27457
|
+
path: 'page.composition.links[].to.ref.payloadExpr',
|
|
27458
|
+
category: 'connections',
|
|
27459
|
+
valueKind: 'expression',
|
|
27460
|
+
description: 'Expressao opcional de payload da action global suportada pelo GlobalActionService.',
|
|
27461
|
+
},
|
|
27462
|
+
{
|
|
27463
|
+
path: 'page.composition.links[].to.ref.widget',
|
|
27464
|
+
category: 'connections',
|
|
27465
|
+
valueKind: 'string',
|
|
27466
|
+
description: 'Widget top-level dono do endpoint de destino.',
|
|
27467
|
+
},
|
|
27468
|
+
{
|
|
27469
|
+
path: 'page.composition.links[].to.ref.port',
|
|
27470
|
+
category: 'connections',
|
|
27471
|
+
valueKind: 'string',
|
|
27472
|
+
description: 'Porta de destino do componente.',
|
|
27473
|
+
},
|
|
27474
|
+
{
|
|
27475
|
+
path: 'page.composition.links[].to.ref.direction',
|
|
27476
|
+
category: 'connections',
|
|
27477
|
+
valueKind: 'string',
|
|
27478
|
+
description: 'Direcao da porta de destino.',
|
|
27479
|
+
},
|
|
27480
|
+
{
|
|
27481
|
+
path: 'page.composition.links[].to.ref.nestedPath',
|
|
27482
|
+
category: 'connections',
|
|
27483
|
+
valueKind: 'array',
|
|
27484
|
+
description: 'NestedPath canonico para porta de componente filho de destino.',
|
|
27485
|
+
},
|
|
27486
|
+
{
|
|
27487
|
+
path: 'page.composition.links[].to.ref.nestedPath[].kind',
|
|
27488
|
+
category: 'connections',
|
|
27489
|
+
valueKind: 'string',
|
|
27490
|
+
description: 'Tipo do segmento nested de destino.',
|
|
27491
|
+
},
|
|
27492
|
+
{
|
|
27493
|
+
path: 'page.composition.links[].to.ref.nestedPath[].id',
|
|
27494
|
+
category: 'connections',
|
|
27495
|
+
valueKind: 'string',
|
|
27496
|
+
description: 'Identificador estrutural do segmento nested de destino.',
|
|
27497
|
+
},
|
|
27498
|
+
{
|
|
27499
|
+
path: 'page.composition.links[].to.ref.nestedPath[].key',
|
|
27500
|
+
category: 'connections',
|
|
27501
|
+
valueKind: 'string',
|
|
27502
|
+
description: 'Chave estavel do widget filho no segmento terminal de destino.',
|
|
27503
|
+
critical: true,
|
|
27504
|
+
},
|
|
27505
|
+
{
|
|
27506
|
+
path: 'page.composition.links[].to.ref.nestedPath[].index',
|
|
27507
|
+
category: 'connections',
|
|
27508
|
+
valueKind: 'number',
|
|
27509
|
+
description: 'Índice auxiliar para diagnóstico visual; não use como identidade primária.',
|
|
27510
|
+
},
|
|
27511
|
+
{
|
|
27512
|
+
path: 'page.composition.links[].to.ref.nestedPath[].componentType',
|
|
27513
|
+
category: 'connections',
|
|
27514
|
+
valueKind: 'string',
|
|
27515
|
+
description: 'Tipo do componente real do widget filho de destino.',
|
|
27516
|
+
},
|
|
27517
|
+
{
|
|
27518
|
+
path: 'page.composition.links[].intent',
|
|
27519
|
+
category: 'connections',
|
|
27520
|
+
valueKind: 'string',
|
|
27521
|
+
description: 'Intenção semântica do link.',
|
|
27522
|
+
},
|
|
27523
|
+
{
|
|
27524
|
+
path: 'page.composition.links[].transform',
|
|
27525
|
+
category: 'connections',
|
|
27526
|
+
valueKind: 'object',
|
|
27527
|
+
description: 'Pipeline de transformacao do link.',
|
|
27528
|
+
},
|
|
27529
|
+
{
|
|
27530
|
+
path: 'page.composition.links[].condition',
|
|
27531
|
+
category: 'connections',
|
|
27532
|
+
valueKind: 'expression',
|
|
27533
|
+
description: 'Guarda semântica opcional do link, expressa como um único AST Json Logic canônico.',
|
|
27534
|
+
},
|
|
27535
|
+
{
|
|
27536
|
+
path: 'page.composition.links[].policy',
|
|
27537
|
+
category: 'connections',
|
|
27538
|
+
valueKind: 'object',
|
|
27539
|
+
description: 'Politicas operacionais opcionais do link, como debounce, distinct e missing-value.',
|
|
27540
|
+
},
|
|
27541
|
+
{
|
|
27542
|
+
path: 'page.composition.links[].metadata',
|
|
27543
|
+
category: 'connections',
|
|
27544
|
+
valueKind: 'object',
|
|
27545
|
+
description: 'Metadados opcionais do link.',
|
|
27546
|
+
},
|
|
27547
|
+
{
|
|
27548
|
+
path: 'page.grouping',
|
|
27549
|
+
category: 'layout',
|
|
27550
|
+
valueKind: 'array',
|
|
27551
|
+
description: 'Modelo semantico opcional de secoes, abas, areas hero e rails.',
|
|
27552
|
+
},
|
|
27553
|
+
{
|
|
27554
|
+
path: 'page.grouping[].kind',
|
|
27555
|
+
category: 'layout',
|
|
27556
|
+
valueKind: 'enum',
|
|
27557
|
+
allowedValues: ENUMS.groupingKind,
|
|
27558
|
+
description: 'Tipo do agrupamento semantico.',
|
|
27559
|
+
},
|
|
27560
|
+
{
|
|
27561
|
+
path: 'page.grouping[].id',
|
|
27562
|
+
category: 'layout',
|
|
27563
|
+
valueKind: 'string',
|
|
27564
|
+
description: 'Identificador estavel do agrupamento.',
|
|
27565
|
+
},
|
|
27566
|
+
{
|
|
27567
|
+
path: 'page.grouping[].label',
|
|
27568
|
+
category: 'layout',
|
|
27569
|
+
valueKind: 'string',
|
|
27570
|
+
description: 'Rotulo opcional do agrupamento.',
|
|
27571
|
+
},
|
|
27572
|
+
{
|
|
27573
|
+
path: 'page.grouping[].widgetKeys',
|
|
27574
|
+
category: 'layout',
|
|
27575
|
+
valueKind: 'array',
|
|
27576
|
+
description: 'Widgets pertencentes ao agrupamento section, hero ou rail.',
|
|
27577
|
+
},
|
|
27578
|
+
{
|
|
27579
|
+
path: 'page.grouping[].layout',
|
|
27580
|
+
category: 'layout',
|
|
27581
|
+
valueKind: 'enum',
|
|
27582
|
+
allowedValues: ENUMS.groupingLayout,
|
|
27583
|
+
description: 'Layout opcional para agrupamento section.',
|
|
27584
|
+
},
|
|
27585
|
+
{
|
|
27586
|
+
path: 'page.grouping[].tabs',
|
|
27587
|
+
category: 'layout',
|
|
27588
|
+
valueKind: 'array',
|
|
27589
|
+
description: 'Abas do agrupamento kind=tabs.',
|
|
27590
|
+
},
|
|
27591
|
+
{
|
|
27592
|
+
path: 'page.grouping[].tabs[].id',
|
|
27593
|
+
category: 'layout',
|
|
27594
|
+
valueKind: 'string',
|
|
27595
|
+
description: 'Identificador estavel da aba.',
|
|
27596
|
+
},
|
|
27597
|
+
{
|
|
27598
|
+
path: 'page.grouping[].tabs[].label',
|
|
27599
|
+
category: 'layout',
|
|
27600
|
+
valueKind: 'string',
|
|
27601
|
+
description: 'Rotulo da aba.',
|
|
27602
|
+
},
|
|
27603
|
+
{
|
|
27604
|
+
path: 'page.grouping[].tabs[].widgetKeys',
|
|
27605
|
+
category: 'layout',
|
|
27606
|
+
valueKind: 'array',
|
|
27607
|
+
description: 'Widgets renderizados dentro da aba.',
|
|
27608
|
+
},
|
|
27609
|
+
{
|
|
27610
|
+
path: 'page.grouping[].emphasis',
|
|
27611
|
+
category: 'layout',
|
|
27612
|
+
valueKind: 'enum',
|
|
27613
|
+
allowedValues: ENUMS.heroEmphasis,
|
|
27614
|
+
description: 'Enfase opcional para agrupamento hero.',
|
|
27615
|
+
},
|
|
27616
|
+
{
|
|
27617
|
+
path: 'page.grouping[].side',
|
|
27618
|
+
category: 'layout',
|
|
27619
|
+
valueKind: 'enum',
|
|
27620
|
+
allowedValues: ENUMS.railSide,
|
|
27621
|
+
description: 'Lado do rail quando kind=rail.',
|
|
27622
|
+
},
|
|
27623
|
+
{
|
|
27624
|
+
path: 'page.slotAssignments',
|
|
27625
|
+
category: 'layout',
|
|
27626
|
+
valueKind: 'object',
|
|
27627
|
+
description: 'Mapa canonico de widget key para slot semantico de preset.',
|
|
27628
|
+
},
|
|
27629
|
+
{
|
|
27630
|
+
path: 'page.deviceLayouts',
|
|
27631
|
+
category: 'layout',
|
|
27632
|
+
valueKind: 'object',
|
|
27633
|
+
description: 'Variantes opcionais de layout por dispositivo.',
|
|
27634
|
+
},
|
|
27635
|
+
{
|
|
27636
|
+
path: 'page.deviceLayouts.desktop',
|
|
27637
|
+
category: 'layout',
|
|
27638
|
+
valueKind: 'object',
|
|
27639
|
+
description: 'Overrides de layout para desktop.',
|
|
27640
|
+
},
|
|
27641
|
+
{
|
|
27642
|
+
path: 'page.deviceLayouts.tablet',
|
|
27643
|
+
category: 'layout',
|
|
27644
|
+
valueKind: 'object',
|
|
27645
|
+
description: 'Overrides de layout para tablet.',
|
|
27646
|
+
},
|
|
27647
|
+
{
|
|
27648
|
+
path: 'page.deviceLayouts.mobile',
|
|
27649
|
+
category: 'layout',
|
|
27650
|
+
valueKind: 'object',
|
|
27651
|
+
description: 'Overrides de layout para mobile.',
|
|
27652
|
+
},
|
|
27653
|
+
{
|
|
27654
|
+
path: 'page.deviceLayouts.desktop.layout',
|
|
27655
|
+
category: 'layout',
|
|
27656
|
+
valueKind: 'object',
|
|
27657
|
+
description: 'Override de WidgetPageLayout para desktop.',
|
|
27658
|
+
},
|
|
27659
|
+
{
|
|
27660
|
+
path: 'page.deviceLayouts.desktop.canvas',
|
|
27661
|
+
category: 'layout',
|
|
27662
|
+
valueKind: 'object',
|
|
27663
|
+
description: 'Override de canvas para desktop.',
|
|
27664
|
+
},
|
|
27665
|
+
{
|
|
27666
|
+
path: 'page.deviceLayouts.desktop.groupingOverrides',
|
|
27667
|
+
category: 'layout',
|
|
27668
|
+
valueKind: 'array',
|
|
27669
|
+
description: 'Overrides de agrupamentos para desktop.',
|
|
27670
|
+
},
|
|
27671
|
+
{
|
|
27672
|
+
path: 'page.deviceLayouts.desktop.widgetOverrides',
|
|
27673
|
+
category: 'layout',
|
|
27674
|
+
valueKind: 'object',
|
|
27675
|
+
description: 'Overrides por widget key para desktop.',
|
|
27676
|
+
},
|
|
27677
|
+
{
|
|
27678
|
+
path: 'page.deviceLayouts.desktop.widgetOverrides.<widgetKey>.hidden',
|
|
27679
|
+
category: 'layout',
|
|
27680
|
+
valueKind: 'boolean',
|
|
27681
|
+
description: 'Oculta o widget em desktop.',
|
|
27682
|
+
},
|
|
27683
|
+
{
|
|
27684
|
+
path: 'page.deviceLayouts.tablet.layout',
|
|
27685
|
+
category: 'layout',
|
|
27686
|
+
valueKind: 'object',
|
|
27687
|
+
description: 'Override de WidgetPageLayout para tablet.',
|
|
27688
|
+
},
|
|
27689
|
+
{
|
|
27690
|
+
path: 'page.deviceLayouts.tablet.canvas',
|
|
27691
|
+
category: 'layout',
|
|
27692
|
+
valueKind: 'object',
|
|
27693
|
+
description: 'Override de canvas para tablet.',
|
|
27694
|
+
},
|
|
27695
|
+
{
|
|
27696
|
+
path: 'page.deviceLayouts.tablet.groupingOverrides',
|
|
27697
|
+
category: 'layout',
|
|
27698
|
+
valueKind: 'array',
|
|
27699
|
+
description: 'Overrides de agrupamentos para tablet.',
|
|
27700
|
+
},
|
|
27701
|
+
{
|
|
27702
|
+
path: 'page.deviceLayouts.tablet.widgetOverrides',
|
|
27703
|
+
category: 'layout',
|
|
27704
|
+
valueKind: 'object',
|
|
27705
|
+
description: 'Overrides por widget key para tablet.',
|
|
27706
|
+
},
|
|
27707
|
+
{
|
|
27708
|
+
path: 'page.deviceLayouts.tablet.widgetOverrides.<widgetKey>.hidden',
|
|
27709
|
+
category: 'layout',
|
|
27710
|
+
valueKind: 'boolean',
|
|
27711
|
+
description: 'Oculta o widget em tablet.',
|
|
27712
|
+
},
|
|
27713
|
+
{
|
|
27714
|
+
path: 'page.deviceLayouts.mobile.layout',
|
|
27715
|
+
category: 'layout',
|
|
27716
|
+
valueKind: 'object',
|
|
27717
|
+
description: 'Override de WidgetPageLayout para mobile.',
|
|
27718
|
+
},
|
|
27719
|
+
{
|
|
27720
|
+
path: 'page.deviceLayouts.mobile.canvas',
|
|
27721
|
+
category: 'layout',
|
|
27722
|
+
valueKind: 'object',
|
|
27723
|
+
description: 'Override de canvas para mobile.',
|
|
27724
|
+
},
|
|
27725
|
+
{
|
|
27726
|
+
path: 'page.deviceLayouts.mobile.groupingOverrides',
|
|
27727
|
+
category: 'layout',
|
|
27728
|
+
valueKind: 'array',
|
|
27729
|
+
description: 'Overrides de agrupamentos para mobile.',
|
|
27730
|
+
},
|
|
27731
|
+
{
|
|
27732
|
+
path: 'page.deviceLayouts.mobile.widgetOverrides',
|
|
27733
|
+
category: 'layout',
|
|
27734
|
+
valueKind: 'object',
|
|
27735
|
+
description: 'Overrides por widget key para mobile.',
|
|
27736
|
+
},
|
|
27737
|
+
{
|
|
27738
|
+
path: 'page.deviceLayouts.mobile.widgetOverrides.<widgetKey>.hidden',
|
|
27739
|
+
category: 'layout',
|
|
27740
|
+
valueKind: 'boolean',
|
|
27741
|
+
description: 'Oculta o widget em mobile.',
|
|
27742
|
+
},
|
|
26895
27743
|
];
|
|
26896
27744
|
const DYNAMIC_PAGE_AI_CAPABILITIES = {
|
|
26897
27745
|
version: 'v1.2',
|
|
@@ -26899,7 +27747,7 @@ const DYNAMIC_PAGE_AI_CAPABILITIES = {
|
|
|
26899
27747
|
targets: ['praxis-dynamic-page'],
|
|
26900
27748
|
notes: [
|
|
26901
27749
|
'Este catálogo é específico para o runtime praxis-dynamic-page; operações de authoring/mutação pertencem ao manifesto do praxis-page-builder.',
|
|
26902
|
-
'WidgetPageDefinition e o contrato canonico persistido: widgets, composition.links, state, context, layout, canvas, presets, grouping, slotAssignments, deviceLayouts e themePreset.',
|
|
27750
|
+
'WidgetPageDefinition e o contrato canonico persistido: widgets, composition.links, state, context, i18n, layout, canvas, presets, grouping, slotAssignments, deviceLayouts e themePreset.',
|
|
26903
27751
|
'Widgets e page.composition.links sao arrays; ferramentas de patch legadas fazem merge por key estavel e id estavel.',
|
|
26904
27752
|
'page.canvas.items é um mapa por widget key; não modele canvas.items como array.',
|
|
26905
27753
|
'Taxonomia editorial: condition usa Json Logic canônico; transform usa pipeline declarativo; não trate ambos como a mesma "expression".',
|
|
@@ -26927,9 +27775,7 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
26927
27775
|
},
|
|
26928
27776
|
'page.canvas.mode': {
|
|
26929
27777
|
mode: 'enum',
|
|
26930
|
-
options: [
|
|
26931
|
-
{ value: 'grid', label: 'Grid' },
|
|
26932
|
-
],
|
|
27778
|
+
options: [{ value: 'grid', label: 'Grid' }],
|
|
26933
27779
|
},
|
|
26934
27780
|
'page.canvas.autoRows': {
|
|
26935
27781
|
mode: 'enum',
|
|
@@ -27018,9 +27864,7 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27018
27864
|
},
|
|
27019
27865
|
'page.composition.version': {
|
|
27020
27866
|
mode: 'enum',
|
|
27021
|
-
options: [
|
|
27022
|
-
{ value: '1.0.0', label: 'Schema canonico 1.0.0' },
|
|
27023
|
-
],
|
|
27867
|
+
options: [{ value: '1.0.0', label: 'Schema canonico 1.0.0' }],
|
|
27024
27868
|
},
|
|
27025
27869
|
'page.composition.links[].intent': {
|
|
27026
27870
|
mode: 'enum',
|
|
@@ -27033,22 +27877,37 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27033
27877
|
'page.composition.links[].from.ref.port': {
|
|
27034
27878
|
mode: 'suggested',
|
|
27035
27879
|
options: [
|
|
27036
|
-
{
|
|
27880
|
+
{
|
|
27881
|
+
value: 'rowClick',
|
|
27882
|
+
label: 'Clique na linha (praxis-table)',
|
|
27883
|
+
example: 'Usar table.rowClick -> form.resourceId via transform pick-path payload.row.id',
|
|
27884
|
+
},
|
|
27037
27885
|
{ value: 'rowAction', label: 'Ação da linha (praxis-table)' },
|
|
27038
|
-
{
|
|
27886
|
+
{
|
|
27887
|
+
value: 'formSubmit',
|
|
27888
|
+
label: 'Submit do formulario (praxis-dynamic-form)',
|
|
27889
|
+
},
|
|
27039
27890
|
],
|
|
27040
27891
|
},
|
|
27041
27892
|
'page.composition.links[].to.ref.port': {
|
|
27042
27893
|
mode: 'suggested',
|
|
27043
27894
|
options: [
|
|
27044
|
-
{
|
|
27895
|
+
{
|
|
27896
|
+
value: 'resourceId',
|
|
27897
|
+
label: 'ID do registro (praxis-dynamic-form)',
|
|
27898
|
+
example: 'transform pick-path payload.row.id',
|
|
27899
|
+
},
|
|
27045
27900
|
{ value: 'mode', label: 'Modo do formulario (create|edit|view)' },
|
|
27046
27901
|
],
|
|
27047
27902
|
},
|
|
27048
27903
|
'page.composition.links[].transform.steps[].config.path': {
|
|
27049
27904
|
mode: 'suggested',
|
|
27050
27905
|
options: [
|
|
27051
|
-
{
|
|
27906
|
+
{
|
|
27907
|
+
value: 'payload.row.id',
|
|
27908
|
+
label: 'ID padrão do registro',
|
|
27909
|
+
example: 'rowClick -> resourceId',
|
|
27910
|
+
},
|
|
27052
27911
|
],
|
|
27053
27912
|
},
|
|
27054
27913
|
},
|
|
@@ -27060,9 +27919,7 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27060
27919
|
scope: 'ROW',
|
|
27061
27920
|
patchTemplate: {
|
|
27062
27921
|
page: {
|
|
27063
|
-
widgets: [
|
|
27064
|
-
{ key: '{{target}}', _remove: true },
|
|
27065
|
-
],
|
|
27922
|
+
widgets: [{ key: '{{target}}', _remove: true }],
|
|
27066
27923
|
},
|
|
27067
27924
|
},
|
|
27068
27925
|
},
|
|
@@ -27071,9 +27928,7 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27071
27928
|
intentExamples: ['remover conexao', 'excluir conexao', 'apagar conexao'],
|
|
27072
27929
|
requiresExistingTarget: true,
|
|
27073
27930
|
scope: 'ROW',
|
|
27074
|
-
params: [
|
|
27075
|
-
{ name: 'id', type: 'STRING' },
|
|
27076
|
-
],
|
|
27931
|
+
params: [{ name: 'id', type: 'STRING' }],
|
|
27077
27932
|
patchTemplate: {
|
|
27078
27933
|
page: {
|
|
27079
27934
|
composition: {
|
|
@@ -27091,7 +27946,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27091
27946
|
},
|
|
27092
27947
|
{
|
|
27093
27948
|
id: 'page.layout.orientation.set',
|
|
27094
|
-
intentExamples: [
|
|
27949
|
+
intentExamples: [
|
|
27950
|
+
'orientacao',
|
|
27951
|
+
'orientation',
|
|
27952
|
+
'layout vertical',
|
|
27953
|
+
'layout colunas',
|
|
27954
|
+
],
|
|
27095
27955
|
patchTemplate: {
|
|
27096
27956
|
page: {
|
|
27097
27957
|
layout: {
|
|
@@ -27176,7 +28036,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27176
28036
|
},
|
|
27177
28037
|
{
|
|
27178
28038
|
id: 'page.connection.set',
|
|
27179
|
-
intentExamples: [
|
|
28039
|
+
intentExamples: [
|
|
28040
|
+
'set connection',
|
|
28041
|
+
'definir conexao',
|
|
28042
|
+
'valor fixo',
|
|
28043
|
+
'set constante',
|
|
28044
|
+
],
|
|
27180
28045
|
params: [
|
|
27181
28046
|
{ name: 'fromWidget', type: 'STRING' },
|
|
27182
28047
|
{ name: 'fromOutput', type: 'STRING' },
|
|
@@ -27193,11 +28058,19 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27193
28058
|
id: '{{params.fromWidget}}.{{params.fromOutput}}->{{params.toWidget}}.{{params.toInput}}',
|
|
27194
28059
|
from: {
|
|
27195
28060
|
kind: 'component-port',
|
|
27196
|
-
ref: {
|
|
28061
|
+
ref: {
|
|
28062
|
+
widget: '{{params.fromWidget}}',
|
|
28063
|
+
port: '{{params.fromOutput}}',
|
|
28064
|
+
direction: 'output',
|
|
28065
|
+
},
|
|
27197
28066
|
},
|
|
27198
28067
|
to: {
|
|
27199
28068
|
kind: 'component-port',
|
|
27200
|
-
ref: {
|
|
28069
|
+
ref: {
|
|
28070
|
+
widget: '{{params.toWidget}}',
|
|
28071
|
+
port: '{{params.toInput}}',
|
|
28072
|
+
direction: 'input',
|
|
28073
|
+
},
|
|
27201
28074
|
},
|
|
27202
28075
|
intent: 'event-propagation',
|
|
27203
28076
|
transform: {
|
|
@@ -27225,7 +28098,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27225
28098
|
},
|
|
27226
28099
|
{
|
|
27227
28100
|
id: 'page.widget.upsert',
|
|
27228
|
-
intentExamples: [
|
|
28101
|
+
intentExamples: [
|
|
28102
|
+
'adicionar widget',
|
|
28103
|
+
'novo widget',
|
|
28104
|
+
'inserir widget',
|
|
28105
|
+
'atualizar widget',
|
|
28106
|
+
],
|
|
27229
28107
|
params: [
|
|
27230
28108
|
{ name: 'widgetKey', type: 'STRING' },
|
|
27231
28109
|
{ name: 'widgetType', type: 'STRING' },
|
|
@@ -27248,7 +28126,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27248
28126
|
},
|
|
27249
28127
|
{
|
|
27250
28128
|
id: 'page.connection.move',
|
|
27251
|
-
intentExamples: [
|
|
28129
|
+
intentExamples: [
|
|
28130
|
+
'mover conexao',
|
|
28131
|
+
'alterar conexao',
|
|
28132
|
+
'editar conexao',
|
|
28133
|
+
'trocar conexao',
|
|
28134
|
+
],
|
|
27252
28135
|
params: [
|
|
27253
28136
|
{ name: 'fromWidget', type: 'STRING' },
|
|
27254
28137
|
{ name: 'fromOutput', type: 'STRING' },
|
|
@@ -27269,11 +28152,19 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27269
28152
|
id: '{{params.fromWidget}}.{{params.fromOutput}}->{{params.toWidget}}.{{params.toInput}}',
|
|
27270
28153
|
from: {
|
|
27271
28154
|
kind: 'component-port',
|
|
27272
|
-
ref: {
|
|
28155
|
+
ref: {
|
|
28156
|
+
widget: '{{params.fromWidget}}',
|
|
28157
|
+
port: '{{params.fromOutput}}',
|
|
28158
|
+
direction: 'output',
|
|
28159
|
+
},
|
|
27273
28160
|
},
|
|
27274
28161
|
to: {
|
|
27275
28162
|
kind: 'component-port',
|
|
27276
|
-
ref: {
|
|
28163
|
+
ref: {
|
|
28164
|
+
widget: '{{params.toWidget}}',
|
|
28165
|
+
port: '{{params.toInput}}',
|
|
28166
|
+
direction: 'input',
|
|
28167
|
+
},
|
|
27277
28168
|
},
|
|
27278
28169
|
intent: 'event-propagation',
|
|
27279
28170
|
metadata: {
|
|
@@ -27317,7 +28208,11 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27317
28208
|
},
|
|
27318
28209
|
{
|
|
27319
28210
|
id: 'page.widget.createForm',
|
|
27320
|
-
intentExamples: [
|
|
28211
|
+
intentExamples: [
|
|
28212
|
+
'criar formulario',
|
|
28213
|
+
'adicionar formulario',
|
|
28214
|
+
'widget formulario',
|
|
28215
|
+
],
|
|
27321
28216
|
operation: 'create',
|
|
27322
28217
|
scope: 'ROW',
|
|
27323
28218
|
valueType: 'OBJECT',
|
|
@@ -27349,7 +28244,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27349
28244
|
},
|
|
27350
28245
|
{
|
|
27351
28246
|
id: 'page.connection.bindRowToForm',
|
|
27352
|
-
intentExamples: [
|
|
28247
|
+
intentExamples: [
|
|
28248
|
+
'conectar tabela ao formulario',
|
|
28249
|
+
'master detail',
|
|
28250
|
+
'master-detail',
|
|
28251
|
+
'detalhe',
|
|
28252
|
+
],
|
|
27353
28253
|
operation: 'create',
|
|
27354
28254
|
scope: 'ROW',
|
|
27355
28255
|
valueType: 'OBJECT',
|
|
@@ -27370,11 +28270,19 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27370
28270
|
id: '{{params.fromWidget}}.{{params.fromOutput}}->{{params.toWidget}}.{{params.toInput}}',
|
|
27371
28271
|
from: {
|
|
27372
28272
|
kind: 'component-port',
|
|
27373
|
-
ref: {
|
|
28273
|
+
ref: {
|
|
28274
|
+
widget: '{{params.fromWidget}}',
|
|
28275
|
+
port: '{{params.fromOutput}}',
|
|
28276
|
+
direction: 'output',
|
|
28277
|
+
},
|
|
27374
28278
|
},
|
|
27375
28279
|
to: {
|
|
27376
28280
|
kind: 'component-port',
|
|
27377
|
-
ref: {
|
|
28281
|
+
ref: {
|
|
28282
|
+
widget: '{{params.toWidget}}',
|
|
28283
|
+
port: '{{params.toInput}}',
|
|
28284
|
+
direction: 'input',
|
|
28285
|
+
},
|
|
27378
28286
|
},
|
|
27379
28287
|
intent: 'event-propagation',
|
|
27380
28288
|
transform: {
|
|
@@ -27403,7 +28311,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27403
28311
|
},
|
|
27404
28312
|
{
|
|
27405
28313
|
id: 'page.connection.bindMasterDetail',
|
|
27406
|
-
intentExamples: [
|
|
28314
|
+
intentExamples: [
|
|
28315
|
+
'master detail',
|
|
28316
|
+
'master-detail',
|
|
28317
|
+
'conectar tabela ao formulario',
|
|
28318
|
+
'detalhe',
|
|
28319
|
+
],
|
|
27407
28320
|
operation: 'create',
|
|
27408
28321
|
scope: 'ROW',
|
|
27409
28322
|
valueType: 'OBJECT',
|
|
@@ -27421,11 +28334,19 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27421
28334
|
id: '{{params.fromWidget}}.rowClick->{{params.toWidget}}.resourceId',
|
|
27422
28335
|
from: {
|
|
27423
28336
|
kind: 'component-port',
|
|
27424
|
-
ref: {
|
|
28337
|
+
ref: {
|
|
28338
|
+
widget: '{{params.fromWidget}}',
|
|
28339
|
+
port: 'rowClick',
|
|
28340
|
+
direction: 'output',
|
|
28341
|
+
},
|
|
27425
28342
|
},
|
|
27426
28343
|
to: {
|
|
27427
28344
|
kind: 'component-port',
|
|
27428
|
-
ref: {
|
|
28345
|
+
ref: {
|
|
28346
|
+
widget: '{{params.toWidget}}',
|
|
28347
|
+
port: 'resourceId',
|
|
28348
|
+
direction: 'input',
|
|
28349
|
+
},
|
|
27429
28350
|
},
|
|
27430
28351
|
intent: 'event-propagation',
|
|
27431
28352
|
transform: {
|
|
@@ -27454,7 +28375,12 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27454
28375
|
},
|
|
27455
28376
|
{
|
|
27456
28377
|
id: 'page.template.applyMasterDetail',
|
|
27457
|
-
intentExamples: [
|
|
28378
|
+
intentExamples: [
|
|
28379
|
+
'criar página master detail',
|
|
28380
|
+
'setup master detail',
|
|
28381
|
+
'tabela e formulário',
|
|
28382
|
+
'master-detail',
|
|
28383
|
+
],
|
|
27458
28384
|
operation: 'create',
|
|
27459
28385
|
scope: 'GLOBAL',
|
|
27460
28386
|
valueType: 'OBJECT',
|
|
@@ -27501,11 +28427,19 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27501
28427
|
id: '{{params.tableId}}.rowClick->{{params.formId}}.resourceId',
|
|
27502
28428
|
from: {
|
|
27503
28429
|
kind: 'component-port',
|
|
27504
|
-
ref: {
|
|
28430
|
+
ref: {
|
|
28431
|
+
widget: '{{params.tableId}}',
|
|
28432
|
+
port: 'rowClick',
|
|
28433
|
+
direction: 'output',
|
|
28434
|
+
},
|
|
27505
28435
|
},
|
|
27506
28436
|
to: {
|
|
27507
28437
|
kind: 'component-port',
|
|
27508
|
-
ref: {
|
|
28438
|
+
ref: {
|
|
28439
|
+
widget: '{{params.formId}}',
|
|
28440
|
+
port: 'resourceId',
|
|
28441
|
+
direction: 'input',
|
|
28442
|
+
},
|
|
27509
28443
|
},
|
|
27510
28444
|
intent: 'event-propagation',
|
|
27511
28445
|
transform: {
|
|
@@ -27540,7 +28474,8 @@ const DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK = {
|
|
|
27540
28474
|
hints: [
|
|
27541
28475
|
'praxis-dynamic-page e runtime de composicao: consome WidgetPageDefinition, renderiza widgets e mantem relacoes em page.composition.links.',
|
|
27542
28476
|
'Mutações agentic de página pertencem ao manifesto do praxis-page-builder; use este context pack como descoberta/runtime guidance.',
|
|
27543
|
-
'WidgetPageDefinition inclui widgets, composition.links, state, context, layout, canvas, layoutPreset, layoutPresetOptions, grouping, slotAssignments, deviceLayouts e themePreset.',
|
|
28477
|
+
'WidgetPageDefinition inclui widgets, composition.links, state, context, i18n, layout, canvas, layoutPreset, layoutPresetOptions, grouping, slotAssignments, deviceLayouts e themePreset.',
|
|
28478
|
+
'page.i18n carrega copy de negócio do documento; use descritores PraxisTextValue explícitos em shells e inputs e preserve strings comuns como dados do domínio.',
|
|
27544
28479
|
'page.canvas.items é um mapa por widget key, não um array; cada entrada guarda col, row, colSpan, rowSpan, zIndex e constraints opcionais.',
|
|
27545
28480
|
'Widgets e composition.links sao arrays; o patching deve fazer merge por key (widgets) e por id (links).',
|
|
27546
28481
|
'Preferir mudanças incrementais: alterar/estender em vez de substituir toda a página.',
|
|
@@ -35187,7 +36122,8 @@ class DynamicWidgetPageComponent {
|
|
|
35187
36122
|
ngOnChanges(changes) {
|
|
35188
36123
|
if (changes['page'] ||
|
|
35189
36124
|
changes['context'] ||
|
|
35190
|
-
changes['enableCustomization']
|
|
36125
|
+
changes['enableCustomization'] ||
|
|
36126
|
+
changes['pageIdentity']) {
|
|
35191
36127
|
this.widgetShellRenderCache.clear();
|
|
35192
36128
|
const parsed = this.parsePage(this.page);
|
|
35193
36129
|
const resolvedPage = parsed ? this.resolvePagePresets(parsed) : parsed;
|
|
@@ -35272,10 +36208,10 @@ class DynamicWidgetPageComponent {
|
|
|
35272
36208
|
const stateProjectionChanged = !this.areStateValuesEqual(widgets, projectedWidgets);
|
|
35273
36209
|
widgets = projectedWidgets;
|
|
35274
36210
|
const nextRuntime = this.buildStateRuntime(state, pageWithPatchedInputs.context);
|
|
35275
|
-
if (this.isTransientOnlyCompositionCycle(cycle)
|
|
35276
|
-
|
|
35277
|
-
|
|
35278
|
-
|
|
36211
|
+
if (this.isTransientOnlyCompositionCycle(cycle) &&
|
|
36212
|
+
!updatedPrimaryStatePaths.length &&
|
|
36213
|
+
!directDelivery.changed &&
|
|
36214
|
+
!widgetInputPatchResult.changed) {
|
|
35279
36215
|
this.applyResponsivePresentation(pageWithPatchedInputs, widgets, nextRuntime);
|
|
35280
36216
|
return;
|
|
35281
36217
|
}
|
|
@@ -35294,8 +36230,8 @@ class DynamicWidgetPageComponent {
|
|
|
35294
36230
|
const linksById = new Map(this.compositionDefinition.links.map((link) => [link.id, link]));
|
|
35295
36231
|
return cycle.matchedLinkIds.every((linkId) => {
|
|
35296
36232
|
const link = linksById.get(linkId);
|
|
35297
|
-
return link?.to.kind === 'state'
|
|
35298
|
-
|
|
36233
|
+
return (link?.to.kind === 'state' &&
|
|
36234
|
+
(link.to.ref.layer ?? 'values') === 'transient');
|
|
35299
36235
|
});
|
|
35300
36236
|
}
|
|
35301
36237
|
applyWidgetInputPatchToPage(page, widgetKey, evt) {
|
|
@@ -35374,7 +36310,8 @@ class DynamicWidgetPageComponent {
|
|
|
35374
36310
|
const nestedPath = normalizeWidgetEventPath(evt, {
|
|
35375
36311
|
ownerComponentId: owner.definition.id,
|
|
35376
36312
|
});
|
|
35377
|
-
if (nestedPath.length &&
|
|
36313
|
+
if (nestedPath.length &&
|
|
36314
|
+
this.nestedWidgetAccessor.resolveNestedWidget(owner, nestedPath)) {
|
|
35378
36315
|
return nestedPath;
|
|
35379
36316
|
}
|
|
35380
36317
|
const sourceChildWidgetKey = String(evt?.sourceChildWidgetKey || '').trim();
|
|
@@ -35382,16 +36319,18 @@ class DynamicWidgetPageComponent {
|
|
|
35382
36319
|
return null;
|
|
35383
36320
|
}
|
|
35384
36321
|
const sourceComponentId = String(evt?.sourceComponentId || '').trim();
|
|
35385
|
-
const match = this.nestedWidgetAccessor
|
|
35386
|
-
|
|
36322
|
+
const match = this.nestedWidgetAccessor
|
|
36323
|
+
.listNestedWidgets(owner)
|
|
36324
|
+
.find((candidate) => candidate.childWidgetKey === sourceChildWidgetKey &&
|
|
36325
|
+
(!sourceComponentId || candidate.componentId === sourceComponentId));
|
|
35387
36326
|
return match?.nestedPath || null;
|
|
35388
36327
|
}
|
|
35389
36328
|
extractWidgetInputPatch(payload) {
|
|
35390
36329
|
if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
|
|
35391
36330
|
return null;
|
|
35392
36331
|
}
|
|
35393
|
-
const candidate = payload.inputPatch
|
|
35394
|
-
|
|
36332
|
+
const candidate = payload.inputPatch ??
|
|
36333
|
+
payload.payload?.inputPatch;
|
|
35395
36334
|
if (!candidate ||
|
|
35396
36335
|
typeof candidate !== 'object' ||
|
|
35397
36336
|
Array.isArray(candidate)) {
|
|
@@ -35412,8 +36351,7 @@ class DynamicWidgetPageComponent {
|
|
|
35412
36351
|
const hasWidgetInput = Object.prototype.hasOwnProperty.call(declaredInputs, inputName);
|
|
35413
36352
|
const hasMetadataInput = !!this.componentMetadata
|
|
35414
36353
|
?.get(widget.definition?.id || '')
|
|
35415
|
-
?.inputs
|
|
35416
|
-
?.some((input) => input.name === inputName);
|
|
36354
|
+
?.inputs?.some((input) => input.name === inputName);
|
|
35417
36355
|
if (!hasWidgetInput && !hasMetadataInput) {
|
|
35418
36356
|
return null;
|
|
35419
36357
|
}
|
|
@@ -35495,10 +36433,12 @@ class DynamicWidgetPageComponent {
|
|
|
35495
36433
|
activeWidgetKeys: widgetKeys.slice(0, 80),
|
|
35496
36434
|
selectedWidgetKey,
|
|
35497
36435
|
composition: {
|
|
35498
|
-
version: this.pageDefinition?.composition?.version
|
|
35499
|
-
|| '1.0.0',
|
|
36436
|
+
version: this.pageDefinition?.composition?.version || '1.0.0',
|
|
35500
36437
|
linkCount: compositionLinks.length,
|
|
35501
|
-
linkIds: compositionLinks
|
|
36438
|
+
linkIds: compositionLinks
|
|
36439
|
+
.map((link) => link.id)
|
|
36440
|
+
.filter(Boolean)
|
|
36441
|
+
.slice(0, 80),
|
|
35502
36442
|
},
|
|
35503
36443
|
relationSurfaceRefs: compositionSurfaceRefs.slice(0, 80),
|
|
35504
36444
|
},
|
|
@@ -35534,23 +36474,27 @@ class DynamicWidgetPageComponent {
|
|
|
35534
36474
|
};
|
|
35535
36475
|
}
|
|
35536
36476
|
registerRuntimeComponentObservationProvider() {
|
|
35537
|
-
if (!this.runtimeObservationRegistry ||
|
|
36477
|
+
if (!this.runtimeObservationRegistry ||
|
|
36478
|
+
this.runtimeObservationRegistration) {
|
|
35538
36479
|
return;
|
|
35539
36480
|
}
|
|
35540
|
-
this.runtimeObservationRegistration =
|
|
35541
|
-
|
|
35542
|
-
|
|
36481
|
+
this.runtimeObservationRegistration =
|
|
36482
|
+
this.runtimeObservationRegistry.register({
|
|
36483
|
+
getObservation: () => this.buildRuntimeComponentObservation(),
|
|
36484
|
+
});
|
|
35543
36485
|
}
|
|
35544
36486
|
resolveRuntimePageId() {
|
|
35545
|
-
const identityKey = this.pageIdentity
|
|
35546
|
-
|
|
35547
|
-
|
|
35548
|
-
|
|
35549
|
-
||
|
|
36487
|
+
const identityKey = this.pageIdentity
|
|
36488
|
+
? buildPageKey(this.pageIdentity)
|
|
36489
|
+
: '';
|
|
36490
|
+
return (this.componentInstanceId ||
|
|
36491
|
+
identityKey ||
|
|
36492
|
+
this.stringOrNull(this.pageDefinition?.context?.['pageId']) ||
|
|
36493
|
+
'dynamic-page:default');
|
|
35550
36494
|
}
|
|
35551
36495
|
resolveRuntimeComponentInstanceId(pageId) {
|
|
35552
|
-
return this.componentInstanceId
|
|
35553
|
-
|
|
36496
|
+
return (this.componentInstanceId ||
|
|
36497
|
+
(pageId ? `dynamic-page:${pageId}` : 'dynamic-page:default'));
|
|
35554
36498
|
}
|
|
35555
36499
|
isRuntimeObservationVisible() {
|
|
35556
36500
|
const nativeElement = this.pageCanvasHost?.nativeElement;
|
|
@@ -35566,13 +36510,19 @@ class DynamicWidgetPageComponent {
|
|
|
35566
36510
|
label: surface.label,
|
|
35567
36511
|
sourceWidget: surface.source.widget,
|
|
35568
36512
|
targetWidget: surface.target.widget,
|
|
35569
|
-
...(surface.target.resourcePath
|
|
35570
|
-
|
|
35571
|
-
|
|
35572
|
-
|
|
35573
|
-
|
|
36513
|
+
...(surface.target.resourcePath
|
|
36514
|
+
? { targetResourcePath: surface.target.resourcePath }
|
|
36515
|
+
: {}),
|
|
36516
|
+
...(surface.runtimeSurfaceInstanceRef
|
|
36517
|
+
? {
|
|
36518
|
+
runtimeSurfaceInstanceRef: surface.runtimeSurfaceInstanceRef,
|
|
36519
|
+
targetRuntimeSurfaceInstanceRef: surface.runtimeSurfaceInstanceRef,
|
|
36520
|
+
}
|
|
36521
|
+
: {}),
|
|
35574
36522
|
statePath: surface.statePath,
|
|
35575
|
-
...(surface.queryMapping
|
|
36523
|
+
...(surface.queryMapping
|
|
36524
|
+
? { queryMapping: surface.queryMapping }
|
|
36525
|
+
: {}),
|
|
35576
36526
|
operationId: surface.operationId,
|
|
35577
36527
|
});
|
|
35578
36528
|
}
|
|
@@ -35583,10 +36533,18 @@ class DynamicWidgetPageComponent {
|
|
|
35583
36533
|
const claims = [
|
|
35584
36534
|
{ kind: 'component', ref: 'praxis-dynamic-page', observed: true },
|
|
35585
36535
|
{ kind: 'stateDigest', ref: `page:${context.pageId}`, observed: true },
|
|
35586
|
-
{
|
|
36536
|
+
{
|
|
36537
|
+
kind: 'dataDigest',
|
|
36538
|
+
ref: `page:${context.pageId}:composition`,
|
|
36539
|
+
observed: true,
|
|
36540
|
+
},
|
|
35587
36541
|
];
|
|
35588
36542
|
for (const widgetKey of context.widgetKeys.slice(0, 80)) {
|
|
35589
|
-
claims.push({
|
|
36543
|
+
claims.push({
|
|
36544
|
+
kind: 'component',
|
|
36545
|
+
ref: `widget:${widgetKey}`,
|
|
36546
|
+
observed: true,
|
|
36547
|
+
});
|
|
35590
36548
|
}
|
|
35591
36549
|
for (const surfaceRef of context.activeSurfaceRefs.slice(0, 80)) {
|
|
35592
36550
|
claims.push({ kind: 'surface', ref: surfaceRef, observed: true });
|
|
@@ -35656,9 +36614,9 @@ class DynamicWidgetPageComponent {
|
|
|
35656
36614
|
const sourceWidget = widgetByKey.get(sourceRef.widget);
|
|
35657
36615
|
if (!sourceWidget)
|
|
35658
36616
|
continue;
|
|
35659
|
-
const targets = stateToQueryLinks.filter((link) => link.from.kind === 'state'
|
|
35660
|
-
|
|
35661
|
-
|
|
36617
|
+
const targets = stateToQueryLinks.filter((link) => link.from.kind === 'state' &&
|
|
36618
|
+
link.from.ref.path === statePath &&
|
|
36619
|
+
link.to.kind === 'component-port');
|
|
35662
36620
|
if (!targets.length)
|
|
35663
36621
|
continue;
|
|
35664
36622
|
const sourceKey = this.recordSurfaceSourceKey(sourceRef.widget, sourceRef.nestedPath);
|
|
@@ -35717,9 +36675,9 @@ class DynamicWidgetPageComponent {
|
|
|
35717
36675
|
return surfacesBySource;
|
|
35718
36676
|
}
|
|
35719
36677
|
resolveRecordSurfaceQueryMapping(sourceWidget, targetLink) {
|
|
35720
|
-
const sourceField = this.stringOrNull(sourceWidget?.definition.inputs?.['config']?.['meta']?.['idField'])
|
|
35721
|
-
|
|
35722
|
-
|
|
36678
|
+
const sourceField = this.stringOrNull(sourceWidget?.definition.inputs?.['config']?.['meta']?.['idField']) ||
|
|
36679
|
+
this.stringOrNull(sourceWidget?.definition.inputs?.['config']?.['idField']) ||
|
|
36680
|
+
this.stringOrNull(sourceWidget?.definition.inputs?.['idField']);
|
|
35723
36681
|
const targetFilterField = this.resolveQueryContextFilterField(targetLink);
|
|
35724
36682
|
if (!sourceField || !targetFilterField) {
|
|
35725
36683
|
return undefined;
|
|
@@ -35750,24 +36708,31 @@ class DynamicWidgetPageComponent {
|
|
|
35750
36708
|
return null;
|
|
35751
36709
|
}
|
|
35752
36710
|
isTableRowClickToStateLink(link) {
|
|
35753
|
-
return link.from.kind === 'component-port'
|
|
35754
|
-
|
|
35755
|
-
|
|
35756
|
-
|
|
35757
|
-
|
|
35758
|
-
|
|
36711
|
+
return (link.from.kind === 'component-port' &&
|
|
36712
|
+
link.from.ref.componentType === 'praxis-table' &&
|
|
36713
|
+
link.from.ref.port === 'rowClick' &&
|
|
36714
|
+
link.from.ref.direction === 'output' &&
|
|
36715
|
+
link.to.kind === 'state' &&
|
|
36716
|
+
!!link.to.ref.path);
|
|
35759
36717
|
}
|
|
35760
36718
|
isStateToTableQueryContextLink(link) {
|
|
35761
|
-
return link.from.kind === 'state'
|
|
35762
|
-
|
|
35763
|
-
|
|
35764
|
-
|
|
35765
|
-
|
|
35766
|
-
|
|
36719
|
+
return (link.from.kind === 'state' &&
|
|
36720
|
+
!!link.from.ref.path &&
|
|
36721
|
+
link.to.kind === 'component-port' &&
|
|
36722
|
+
link.to.ref.componentType === 'praxis-table' &&
|
|
36723
|
+
link.to.ref.port === 'queryContext' &&
|
|
36724
|
+
link.to.ref.direction === 'input');
|
|
35767
36725
|
}
|
|
35768
36726
|
resolveRecordSurfaceId(ref) {
|
|
35769
|
-
const tab = [...(ref.nestedPath || [])]
|
|
35770
|
-
|
|
36727
|
+
const tab = [...(ref.nestedPath || [])]
|
|
36728
|
+
.reverse()
|
|
36729
|
+
.find((segment) => segment.kind === 'tab');
|
|
36730
|
+
return String(tab?.id ||
|
|
36731
|
+
ref.nestedPath
|
|
36732
|
+
?.map((segment) => segment.key || segment.id)
|
|
36733
|
+
.filter(Boolean)
|
|
36734
|
+
.join('.') ||
|
|
36735
|
+
ref.widget).trim();
|
|
35771
36736
|
}
|
|
35772
36737
|
resolveRecordSurfaceLabel(ref, targetWidget, targetDefinition) {
|
|
35773
36738
|
const tabLabel = this.resolveRecordSurfaceTabLabel(ref, targetWidget);
|
|
@@ -35776,29 +36741,33 @@ class DynamicWidgetPageComponent {
|
|
|
35776
36741
|
const toolbarTitle = this.stringOrNull(targetDefinition?.inputs?.['config']?.['toolbar']?.['title']);
|
|
35777
36742
|
if (toolbarTitle)
|
|
35778
36743
|
return toolbarTitle;
|
|
35779
|
-
const tab = [...(ref.nestedPath || [])]
|
|
36744
|
+
const tab = [...(ref.nestedPath || [])]
|
|
36745
|
+
.reverse()
|
|
36746
|
+
.find((segment) => segment.kind === 'tab');
|
|
35780
36747
|
return this.humanizeRecordSurfaceLabel(tab?.id || ref.widget);
|
|
35781
36748
|
}
|
|
35782
36749
|
resolveRuntimeSurfaceWidgetKey(targetRef, targetDefinition) {
|
|
35783
|
-
return this.stringOrNull(targetDefinition?.inputs?.['componentInstanceId'])
|
|
35784
|
-
|
|
35785
|
-
|
|
36750
|
+
return (this.stringOrNull(targetDefinition?.inputs?.['componentInstanceId']) ||
|
|
36751
|
+
this.stringOrNull(targetDefinition?.inputs?.['tableId']) ||
|
|
36752
|
+
targetRef.widget);
|
|
35786
36753
|
}
|
|
35787
36754
|
resolveRecordSurfaceTabLabel(ref, targetWidget) {
|
|
35788
|
-
const tab = [...(ref.nestedPath || [])]
|
|
36755
|
+
const tab = [...(ref.nestedPath || [])]
|
|
36756
|
+
.reverse()
|
|
36757
|
+
.find((segment) => segment.kind === 'tab');
|
|
35789
36758
|
if (!tab)
|
|
35790
36759
|
return null;
|
|
35791
36760
|
const tabs = targetWidget?.definition.inputs?.['config']?.['tabs'];
|
|
35792
36761
|
if (!Array.isArray(tabs))
|
|
35793
36762
|
return null;
|
|
35794
|
-
const match = tabs.find((candidate) => this.isRecord(candidate)
|
|
35795
|
-
|
|
35796
|
-
|
|
36763
|
+
const match = tabs.find((candidate) => this.isRecord(candidate) &&
|
|
36764
|
+
(this.stringOrNull(candidate['id']) === this.stringOrNull(tab.id) ||
|
|
36765
|
+
candidate['index'] === tab.index));
|
|
35797
36766
|
if (!this.isRecord(match))
|
|
35798
36767
|
return null;
|
|
35799
|
-
return this.stringOrNull(match['textLabel'])
|
|
35800
|
-
|
|
35801
|
-
|
|
36768
|
+
return (this.stringOrNull(match['textLabel']) ||
|
|
36769
|
+
this.stringOrNull(match['label']) ||
|
|
36770
|
+
this.stringOrNull(match['title']));
|
|
35802
36771
|
}
|
|
35803
36772
|
humanizeRecordSurfaceLabel(value) {
|
|
35804
36773
|
const raw = String(value || '').trim();
|
|
@@ -35827,11 +36796,15 @@ class DynamicWidgetPageComponent {
|
|
|
35827
36796
|
.slice(0, 120);
|
|
35828
36797
|
}
|
|
35829
36798
|
resolveRecordSurfaceChildWidgetKey(path) {
|
|
35830
|
-
const widget = [...(path || [])]
|
|
36799
|
+
const widget = [...(path || [])]
|
|
36800
|
+
.reverse()
|
|
36801
|
+
.find((segment) => segment.kind === 'widget');
|
|
35831
36802
|
return widget?.key;
|
|
35832
36803
|
}
|
|
35833
36804
|
recordSurfaceSourceKey(widget, nestedPath) {
|
|
35834
|
-
const signature = nestedPath?.length
|
|
36805
|
+
const signature = nestedPath?.length
|
|
36806
|
+
? this.recordSurfaceNestedPathSignature(nestedPath)
|
|
36807
|
+
: '';
|
|
35835
36808
|
return `${widget}::${signature}`;
|
|
35836
36809
|
}
|
|
35837
36810
|
recordSurfaceNestedPathSignature(path) {
|
|
@@ -35840,7 +36813,9 @@ class DynamicWidgetPageComponent {
|
|
|
35840
36813
|
parseRecordSurfaceNestedPathSignature(signature) {
|
|
35841
36814
|
try {
|
|
35842
36815
|
const parsed = JSON.parse(decodeURIComponent(signature));
|
|
35843
|
-
return Array.isArray(parsed)
|
|
36816
|
+
return Array.isArray(parsed)
|
|
36817
|
+
? parsed
|
|
36818
|
+
: [];
|
|
35844
36819
|
}
|
|
35845
36820
|
catch {
|
|
35846
36821
|
return [];
|
|
@@ -35857,8 +36832,12 @@ class DynamicWidgetPageComponent {
|
|
|
35857
36832
|
if (evt?.output !== 'recordSurfaceOpen')
|
|
35858
36833
|
return false;
|
|
35859
36834
|
const payload = this.isRecord(evt.payload) ? evt.payload : null;
|
|
35860
|
-
const surface = this.isRecord(payload?.['surface'])
|
|
35861
|
-
|
|
36835
|
+
const surface = this.isRecord(payload?.['surface'])
|
|
36836
|
+
? payload['surface']
|
|
36837
|
+
: null;
|
|
36838
|
+
const target = this.isRecord(surface?.['target'])
|
|
36839
|
+
? surface['target']
|
|
36840
|
+
: null;
|
|
35862
36841
|
const widgetKey = this.stringOrNull(target?.['widget']);
|
|
35863
36842
|
const nestedPath = Array.isArray(target?.['nestedPath'])
|
|
35864
36843
|
? target['nestedPath']
|
|
@@ -35913,7 +36892,9 @@ class DynamicWidgetPageComponent {
|
|
|
35913
36892
|
return true;
|
|
35914
36893
|
}
|
|
35915
36894
|
applyRecordSurfaceSourceState(page, fromKey, evt, surface, payload) {
|
|
35916
|
-
const source = this.isRecord(surface?.['source'])
|
|
36895
|
+
const source = this.isRecord(surface?.['source'])
|
|
36896
|
+
? surface['source']
|
|
36897
|
+
: null;
|
|
35917
36898
|
const selectedRow = payload?.['selectedRow'];
|
|
35918
36899
|
if (!source || selectedRow == null) {
|
|
35919
36900
|
return { page };
|
|
@@ -35956,14 +36937,18 @@ class DynamicWidgetPageComponent {
|
|
|
35956
36937
|
}
|
|
35957
36938
|
findRecordSurfaceTabIndex(config, segment) {
|
|
35958
36939
|
const collection = segment.kind === 'nav'
|
|
35959
|
-
?
|
|
35960
|
-
|
|
36940
|
+
? this.isRecord(config['nav']) && Array.isArray(config['nav']['links'])
|
|
36941
|
+
? config['nav']['links']
|
|
36942
|
+
: []
|
|
36943
|
+
: Array.isArray(config['tabs'])
|
|
36944
|
+
? config['tabs']
|
|
36945
|
+
: [];
|
|
35961
36946
|
const id = this.stringOrNull(segment.id);
|
|
35962
36947
|
const key = this.stringOrNull(segment.key);
|
|
35963
36948
|
if (id || key) {
|
|
35964
36949
|
const match = collection.findIndex((item) => {
|
|
35965
36950
|
const record = this.isRecord(item) ? item : {};
|
|
35966
|
-
return (!!id && record['id'] === id) || (!!key && record['key'] === key);
|
|
36951
|
+
return ((!!id && record['id'] === id) || (!!key && record['key'] === key));
|
|
35967
36952
|
});
|
|
35968
36953
|
if (match >= 0)
|
|
35969
36954
|
return match;
|
|
@@ -35975,7 +36960,7 @@ class DynamicWidgetPageComponent {
|
|
|
35975
36960
|
return true;
|
|
35976
36961
|
}
|
|
35977
36962
|
const bindingOrder = widget.definition.bindingOrder;
|
|
35978
|
-
return Array.isArray(bindingOrder) && bindingOrder.includes('selectedIndex');
|
|
36963
|
+
return (Array.isArray(bindingOrder) && bindingOrder.includes('selectedIndex'));
|
|
35979
36964
|
}
|
|
35980
36965
|
reportStateDiagnostics(diagnostics) {
|
|
35981
36966
|
if (!diagnostics?.length)
|
|
@@ -36068,18 +37053,18 @@ class DynamicWidgetPageComponent {
|
|
|
36068
37053
|
this.applyPageUpdate({ ...page, widgets, state }, true, runtime, false, true);
|
|
36069
37054
|
}
|
|
36070
37055
|
matchesRuntimeSourceRef(endpoint, sourceRef) {
|
|
36071
|
-
return endpoint.kind === 'component-port'
|
|
36072
|
-
|
|
36073
|
-
|
|
36074
|
-
|
|
36075
|
-
|
|
37056
|
+
return (endpoint.kind === 'component-port' &&
|
|
37057
|
+
endpoint.ref.widget === sourceRef.widget &&
|
|
37058
|
+
endpoint.ref.port === sourceRef.port &&
|
|
37059
|
+
endpoint.ref.direction === sourceRef.direction &&
|
|
37060
|
+
this.areNestedPathsEqual(endpoint.ref.nestedPath, sourceRef.nestedPath));
|
|
36076
37061
|
}
|
|
36077
37062
|
matchesLegacyWidgetEventSource(endpoint, ownerWidgetKey) {
|
|
36078
|
-
return endpoint.kind === 'component-port'
|
|
36079
|
-
|
|
36080
|
-
|
|
36081
|
-
|
|
36082
|
-
|
|
37063
|
+
return (endpoint.kind === 'component-port' &&
|
|
37064
|
+
endpoint.ref.widget === ownerWidgetKey &&
|
|
37065
|
+
endpoint.ref.port === 'widgetEvent' &&
|
|
37066
|
+
endpoint.ref.direction === 'output' &&
|
|
37067
|
+
!endpoint.ref.nestedPath?.length);
|
|
36083
37068
|
}
|
|
36084
37069
|
areNestedPathsEqual(left, right) {
|
|
36085
37070
|
return JSON.stringify(left || []) === JSON.stringify(right || []);
|
|
@@ -36216,8 +37201,8 @@ class DynamicWidgetPageComponent {
|
|
|
36216
37201
|
pageStateEffective: this.cloneStateValues(runtime.effectiveValues),
|
|
36217
37202
|
};
|
|
36218
37203
|
return this.cloneWidgets(widgets).map((widget) => {
|
|
36219
|
-
const runtimeEnrichedWidget = this.enrichRuntimeWidgetInputs(widget, runtime);
|
|
36220
|
-
if (!
|
|
37204
|
+
const runtimeEnrichedWidget = this.localizeRuntimeProjection(this.enrichRuntimeWidgetInputs(widget, runtime));
|
|
37205
|
+
if (!runtimeEnrichedWidget.shell) {
|
|
36221
37206
|
return runtimeEnrichedWidget;
|
|
36222
37207
|
}
|
|
36223
37208
|
const widgetTemplateContext = {
|
|
@@ -36231,10 +37216,17 @@ class DynamicWidgetPageComponent {
|
|
|
36231
37216
|
};
|
|
36232
37217
|
return {
|
|
36233
37218
|
...runtimeEnrichedWidget,
|
|
36234
|
-
shell: this.resolveTemplate(
|
|
37219
|
+
shell: this.resolveTemplate(runtimeEnrichedWidget.shell, widgetTemplateContext),
|
|
36235
37220
|
};
|
|
36236
37221
|
});
|
|
36237
37222
|
}
|
|
37223
|
+
localizeRuntimeProjection(value) {
|
|
37224
|
+
return resolvePraxisI18nDocument(value, {
|
|
37225
|
+
i18n: this.i18n,
|
|
37226
|
+
locale: this.pageIdentity?.locale,
|
|
37227
|
+
config: this.pageDefinition?.i18n,
|
|
37228
|
+
});
|
|
37229
|
+
}
|
|
36238
37230
|
enrichRuntimeWidgetInputs(widget, runtime) {
|
|
36239
37231
|
if (widget.definition?.id !== 'praxis-rich-content') {
|
|
36240
37232
|
return widget;
|
|
@@ -36262,7 +37254,8 @@ class DynamicWidgetPageComponent {
|
|
|
36262
37254
|
return;
|
|
36263
37255
|
}
|
|
36264
37256
|
if (this.globalActions.has(actionId)) {
|
|
36265
|
-
void this.globalActions
|
|
37257
|
+
void this.globalActions
|
|
37258
|
+
.execute(actionId, payload, {
|
|
36266
37259
|
sourceId: widgetKey,
|
|
36267
37260
|
widgetKey,
|
|
36268
37261
|
payload: {
|
|
@@ -36284,7 +37277,8 @@ class DynamicWidgetPageComponent {
|
|
|
36284
37277
|
origin: 'dynamic-page.rich-content',
|
|
36285
37278
|
componentId: 'praxis-dynamic-page',
|
|
36286
37279
|
},
|
|
36287
|
-
})
|
|
37280
|
+
})
|
|
37281
|
+
.then((result) => {
|
|
36288
37282
|
if (!result?.success) {
|
|
36289
37283
|
this.emitRichContentCustomAction(widgetKey, actionId, payload);
|
|
36290
37284
|
}
|
|
@@ -36434,8 +37428,7 @@ class DynamicWidgetPageComponent {
|
|
|
36434
37428
|
});
|
|
36435
37429
|
}
|
|
36436
37430
|
shouldRenderWidgetContextOverlay(widget) {
|
|
36437
|
-
return (this.enableCustomization &&
|
|
36438
|
-
!this.hasVisibleWidgetShellHeader(widget));
|
|
37431
|
+
return (this.enableCustomization && !this.hasVisibleWidgetShellHeader(widget));
|
|
36439
37432
|
}
|
|
36440
37433
|
widgetShellForRender(widget) {
|
|
36441
37434
|
if (!this.shouldProjectWidgetHeaderActions(widget)) {
|
|
@@ -36473,12 +37466,13 @@ class DynamicWidgetPageComponent {
|
|
|
36473
37466
|
if (shellTitle)
|
|
36474
37467
|
return shellTitle;
|
|
36475
37468
|
const componentId = widget.definition?.id || '';
|
|
36476
|
-
const metadata = componentId
|
|
37469
|
+
const metadata = componentId
|
|
37470
|
+
? this.componentMetadata?.get(componentId)
|
|
37471
|
+
: undefined;
|
|
36477
37472
|
return metadata?.friendlyName || componentId || widget.key;
|
|
36478
37473
|
}
|
|
36479
37474
|
shouldProjectWidgetHeaderActions(widget) {
|
|
36480
|
-
return
|
|
36481
|
-
this.hasVisibleWidgetShellHeader(widget));
|
|
37475
|
+
return this.enableCustomization && this.hasVisibleWidgetShellHeader(widget);
|
|
36482
37476
|
}
|
|
36483
37477
|
hasVisibleWidgetShellHeader(widget) {
|
|
36484
37478
|
const shell = widget.shell;
|
|
@@ -36496,8 +37490,8 @@ class DynamicWidgetPageComponent {
|
|
|
36496
37490
|
return (shell.actions || []).some((action) => this.isVisibleShellAction(action));
|
|
36497
37491
|
}
|
|
36498
37492
|
hasVisibleWindowActions(shell) {
|
|
36499
|
-
return (
|
|
36500
|
-
shell.windowActions?.fullscreen !== false
|
|
37493
|
+
return (shell.windowActions?.collapsible !== false ||
|
|
37494
|
+
shell.windowActions?.fullscreen !== false ||
|
|
36501
37495
|
(shell.actions || []).some((action) => this.isVisibleShellAction(action) &&
|
|
36502
37496
|
(action.placement || 'header') === 'window'));
|
|
36503
37497
|
}
|
|
@@ -36844,10 +37838,10 @@ class DynamicWidgetPageComponent {
|
|
|
36844
37838
|
}
|
|
36845
37839
|
}
|
|
36846
37840
|
isConfigEditorContextResult(value) {
|
|
36847
|
-
return !!value &&
|
|
37841
|
+
return (!!value &&
|
|
36848
37842
|
typeof value === 'object' &&
|
|
36849
37843
|
!Array.isArray(value) &&
|
|
36850
|
-
('context' in value || 'diagnostics' in value);
|
|
37844
|
+
('context' in value || 'diagnostics' in value));
|
|
36851
37845
|
}
|
|
36852
37846
|
materializeRuntimeInputsForWidget(page, key) {
|
|
36853
37847
|
const normalizedKey = String(key || '').trim();
|
|
@@ -36860,8 +37854,7 @@ class DynamicWidgetPageComponent {
|
|
|
36860
37854
|
}
|
|
36861
37855
|
const inputNames = this.componentMetadata
|
|
36862
37856
|
?.get(widget.definition?.id || '')
|
|
36863
|
-
?.inputs
|
|
36864
|
-
?.map((input) => input.name)
|
|
37857
|
+
?.inputs?.map((input) => input.name)
|
|
36865
37858
|
?.filter((name) => typeof name === 'string' && !!name.trim()) || [];
|
|
36866
37859
|
if (!inputNames.length) {
|
|
36867
37860
|
return page;
|
|
@@ -36892,10 +37885,10 @@ class DynamicWidgetPageComponent {
|
|
|
36892
37885
|
if (typeof loader?.dispatchAction !== 'function') {
|
|
36893
37886
|
return false;
|
|
36894
37887
|
}
|
|
36895
|
-
return loader?.dispatchAction({
|
|
37888
|
+
return (loader?.dispatchAction({
|
|
36896
37889
|
id: 'component-settings',
|
|
36897
37890
|
command: 'component-settings',
|
|
36898
|
-
}) === true;
|
|
37891
|
+
}) === true);
|
|
36899
37892
|
}
|
|
36900
37893
|
applyWidgetComponentInputs(key, result, persist) {
|
|
36901
37894
|
if (!result || typeof result !== 'object' || Array.isArray(result))
|
|
@@ -37008,7 +38001,9 @@ class DynamicWidgetPageComponent {
|
|
|
37008
38001
|
const groupingOverrides = variant.groupingOverrides?.map((override) => ({
|
|
37009
38002
|
...override,
|
|
37010
38003
|
...(override.widgetKeys
|
|
37011
|
-
? {
|
|
38004
|
+
? {
|
|
38005
|
+
widgetKeys: override.widgetKeys.filter((key) => key !== widgetKey),
|
|
38006
|
+
}
|
|
37012
38007
|
: {}),
|
|
37013
38008
|
...(override.tabs
|
|
37014
38009
|
? {
|
|
@@ -37021,7 +38016,14 @@ class DynamicWidgetPageComponent {
|
|
|
37021
38016
|
}));
|
|
37022
38017
|
deviceLayouts[device] = {
|
|
37023
38018
|
...variant,
|
|
37024
|
-
...(variant.canvas
|
|
38019
|
+
...(variant.canvas
|
|
38020
|
+
? {
|
|
38021
|
+
canvas: {
|
|
38022
|
+
...variant.canvas,
|
|
38023
|
+
...(canvasItems ? { items: canvasItems } : {}),
|
|
38024
|
+
},
|
|
38025
|
+
}
|
|
38026
|
+
: {}),
|
|
37025
38027
|
...(widgetOverrides ? { widgetOverrides } : {}),
|
|
37026
38028
|
...(groupingOverrides ? { groupingOverrides } : {}),
|
|
37027
38029
|
};
|
|
@@ -37031,11 +38033,11 @@ class DynamicWidgetPageComponent {
|
|
|
37031
38033
|
return next;
|
|
37032
38034
|
}
|
|
37033
38035
|
linkReferencesWidget(link, widgetKey) {
|
|
37034
|
-
return this.endpointReferencesWidget(link.from, widgetKey)
|
|
37035
|
-
|
|
38036
|
+
return (this.endpointReferencesWidget(link.from, widgetKey) ||
|
|
38037
|
+
this.endpointReferencesWidget(link.to, widgetKey));
|
|
37036
38038
|
}
|
|
37037
38039
|
endpointReferencesWidget(endpoint, widgetKey) {
|
|
37038
|
-
return endpoint.kind === 'component-port' && endpoint.ref.widget === widgetKey;
|
|
38040
|
+
return (endpoint.kind === 'component-port' && endpoint.ref.widget === widgetKey);
|
|
37039
38041
|
}
|
|
37040
38042
|
openPageSettings() {
|
|
37041
38043
|
if (!this.settingsPanel)
|
|
@@ -37398,7 +38400,7 @@ class DynamicWidgetPageComponent {
|
|
|
37398
38400
|
}
|
|
37399
38401
|
applyResponsivePresentation(pageDefinition, widgets, runtime) {
|
|
37400
38402
|
const runtimeWidgets = this.projectRuntimeCompositionStateInputs(widgets);
|
|
37401
|
-
const effective = this.resolveEffectivePresentation(pageDefinition, runtimeWidgets);
|
|
38403
|
+
const effective = this.resolveEffectivePresentation(pageDefinition, runtimeWidgets, runtime);
|
|
37402
38404
|
if (effective.canvas) {
|
|
37403
38405
|
this.applyCanvasLayout(effective.canvas, effective.layout, effective.grouping);
|
|
37404
38406
|
}
|
|
@@ -37413,7 +38415,7 @@ class DynamicWidgetPageComponent {
|
|
|
37413
38415
|
grouping: effective.grouping,
|
|
37414
38416
|
});
|
|
37415
38417
|
this.renderedGroups.set(effective.groups);
|
|
37416
|
-
this.widgets.set(
|
|
38418
|
+
this.widgets.set(effective.widgets);
|
|
37417
38419
|
}
|
|
37418
38420
|
projectPersistentCompositionStateInputs(widgets, state, now) {
|
|
37419
38421
|
if (!this.compositionDefinition) {
|
|
@@ -37445,23 +38447,24 @@ class DynamicWidgetPageComponent {
|
|
|
37445
38447
|
now: snapshot.generatedAt,
|
|
37446
38448
|
}).widgets;
|
|
37447
38449
|
}
|
|
37448
|
-
resolveEffectivePresentation(pageDefinition, widgets) {
|
|
38450
|
+
resolveEffectivePresentation(pageDefinition, widgets, runtime) {
|
|
37449
38451
|
const variant = this.resolveDeviceVariant(pageDefinition?.deviceLayouts);
|
|
37450
38452
|
const layout = this.mergeLayout(pageDefinition?.layout, variant?.layout);
|
|
37451
|
-
const grouping = this.applyGroupingOverrides(pageDefinition?.grouping, variant?.groupingOverrides);
|
|
38453
|
+
const grouping = this.localizeRuntimeProjection(this.applyGroupingOverrides(pageDefinition?.grouping, variant?.groupingOverrides));
|
|
37452
38454
|
const baseWidgets = this.applyWidgetLayoutOverrides(this.applyEditShellActions(widgets), variant?.widgetOverrides);
|
|
37453
38455
|
const canvas = this.resolveCanvas(pageDefinition?.canvas, variant?.canvas);
|
|
37454
38456
|
const widgetsWithOverrides = canvas
|
|
37455
38457
|
? this.applyCanvasLayoutToWidgets(baseWidgets, canvas)
|
|
37456
38458
|
: baseWidgets;
|
|
38459
|
+
const renderedWidgets = this.resolveShellTemplates(widgetsWithOverrides, runtime);
|
|
37457
38460
|
const groups = canvas
|
|
37458
38461
|
? []
|
|
37459
|
-
: this.buildRenderedGroups(grouping,
|
|
38462
|
+
: this.buildRenderedGroups(grouping, renderedWidgets, pageDefinition?.slotAssignments);
|
|
37460
38463
|
return {
|
|
37461
38464
|
layout,
|
|
37462
38465
|
canvas,
|
|
37463
38466
|
grouping,
|
|
37464
|
-
widgets:
|
|
38467
|
+
widgets: renderedWidgets,
|
|
37465
38468
|
groups,
|
|
37466
38469
|
};
|
|
37467
38470
|
}
|
|
@@ -37534,9 +38537,9 @@ class DynamicWidgetPageComponent {
|
|
|
37534
38537
|
if (!normalizedWidgetKey) {
|
|
37535
38538
|
return false;
|
|
37536
38539
|
}
|
|
37537
|
-
return !!this.ensurePageDefinition().composition?.links?.some((link) => link.from.kind === 'component-port'
|
|
37538
|
-
|
|
37539
|
-
|
|
38540
|
+
return !!this.ensurePageDefinition().composition?.links?.some((link) => link.from.kind === 'component-port' &&
|
|
38541
|
+
link.from.ref.widget === normalizedWidgetKey &&
|
|
38542
|
+
link.from.ref.direction === 'output');
|
|
37540
38543
|
}
|
|
37541
38544
|
selectWidget(widgetKey) {
|
|
37542
38545
|
if (!this.enableCustomization)
|
|
@@ -38289,7 +39292,9 @@ class DynamicWidgetPageComponent {
|
|
|
38289
39292
|
const seen = new Set();
|
|
38290
39293
|
for (const reference of references || []) {
|
|
38291
39294
|
const directWidget = widgetMap.get(reference);
|
|
38292
|
-
const candidates = directWidget
|
|
39295
|
+
const candidates = directWidget
|
|
39296
|
+
? [directWidget]
|
|
39297
|
+
: slotWidgetMap.get(reference) || [];
|
|
38293
39298
|
for (const widget of candidates) {
|
|
38294
39299
|
if (seen.has(widget.key))
|
|
38295
39300
|
continue;
|
|
@@ -38474,7 +39479,7 @@ class DynamicWidgetPageComponent {
|
|
|
38474
39479
|
[attr.data-density]="pageThemeDensity"
|
|
38475
39480
|
[attr.data-motion]="pageThemeMotion"
|
|
38476
39481
|
[ngStyle]="pageThemeTokenStyle"
|
|
38477
|
-
|
|
39482
|
+
>
|
|
38478
39483
|
@if (enableCustomization && showPageSettingsButton) {
|
|
38479
39484
|
<button
|
|
38480
39485
|
class="pdx-page-settings"
|
|
@@ -38566,7 +39571,9 @@ class DynamicWidgetPageComponent {
|
|
|
38566
39571
|
[showAssistant]="showWidgetAssistantButton"
|
|
38567
39572
|
[assistantLabel]="widgetAssistantLabel()"
|
|
38568
39573
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
38569
|
-
[showComponentSettings]="
|
|
39574
|
+
[showComponentSettings]="
|
|
39575
|
+
canOpenWidgetComponentSettings(w.key)
|
|
39576
|
+
"
|
|
38570
39577
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
38571
39578
|
[componentSettingsTooltip]="componentSettingsTooltip()"
|
|
38572
39579
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
@@ -38639,7 +39646,9 @@ class DynamicWidgetPageComponent {
|
|
|
38639
39646
|
<div
|
|
38640
39647
|
class="pdx-widget"
|
|
38641
39648
|
[attr.data-widget-key]="w.key"
|
|
38642
|
-
[class.pdx-widget--interactive]="
|
|
39649
|
+
[class.pdx-widget--interactive]="
|
|
39650
|
+
enableCustomization
|
|
39651
|
+
"
|
|
38643
39652
|
[class.pdx-widget--selected]="
|
|
38644
39653
|
enableCustomization && isWidgetSelected(w.key)
|
|
38645
39654
|
"
|
|
@@ -38669,22 +39678,34 @@ class DynamicWidgetPageComponent {
|
|
|
38669
39678
|
</praxis-widget-shell>
|
|
38670
39679
|
@if (shouldRenderWidgetContextOverlay(w)) {
|
|
38671
39680
|
<praxis-dynamic-widget-context-toolbar
|
|
38672
|
-
[toolbarLabel]="
|
|
39681
|
+
[toolbarLabel]="
|
|
39682
|
+
widgetContextToolbarLabel(w.key)
|
|
39683
|
+
"
|
|
38673
39684
|
[contextLabel]="widgetContextLabel(w)"
|
|
38674
39685
|
[contextTooltip]="widgetContextTooltip(w)"
|
|
38675
39686
|
[showAssistant]="showWidgetAssistantButton"
|
|
38676
39687
|
[assistantLabel]="widgetAssistantLabel()"
|
|
38677
39688
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
38678
|
-
[showComponentSettings]="
|
|
38679
|
-
|
|
38680
|
-
|
|
38681
|
-
[
|
|
39689
|
+
[showComponentSettings]="
|
|
39690
|
+
canOpenWidgetComponentSettings(w.key)
|
|
39691
|
+
"
|
|
39692
|
+
[componentSettingsLabel]="
|
|
39693
|
+
componentSettingsLabel()
|
|
39694
|
+
"
|
|
39695
|
+
[componentSettingsTooltip]="
|
|
39696
|
+
componentSettingsTooltip()
|
|
39697
|
+
"
|
|
39698
|
+
[showShellSettings]="
|
|
39699
|
+
canOpenWidgetShellSettings()
|
|
39700
|
+
"
|
|
38682
39701
|
[shellSettingsLabel]="widgetSettingsLabel()"
|
|
38683
39702
|
[shellSettingsTooltip]="widgetSettingsTooltip()"
|
|
38684
39703
|
[moreActionsLabel]="moreWidgetActionsLabel()"
|
|
38685
39704
|
[removeLabel]="widgetRemoveLabel()"
|
|
38686
39705
|
(assistant)="requestWidgetAssistant(w.key)"
|
|
38687
|
-
(componentSettings)="
|
|
39706
|
+
(componentSettings)="
|
|
39707
|
+
openWidgetComponentSettings(w.key)
|
|
39708
|
+
"
|
|
38688
39709
|
(shellSettings)="openWidgetShellSettings(w.key)"
|
|
38689
39710
|
(remove)="confirmAndRemoveWidget(w.key)"
|
|
38690
39711
|
/>
|
|
@@ -38740,16 +39761,22 @@ class DynamicWidgetPageComponent {
|
|
|
38740
39761
|
[showAssistant]="showWidgetAssistantButton"
|
|
38741
39762
|
[assistantLabel]="widgetAssistantLabel()"
|
|
38742
39763
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
38743
|
-
[showComponentSettings]="
|
|
39764
|
+
[showComponentSettings]="
|
|
39765
|
+
canOpenWidgetComponentSettings(w.key)
|
|
39766
|
+
"
|
|
38744
39767
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
38745
|
-
[componentSettingsTooltip]="
|
|
39768
|
+
[componentSettingsTooltip]="
|
|
39769
|
+
componentSettingsTooltip()
|
|
39770
|
+
"
|
|
38746
39771
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
38747
39772
|
[shellSettingsLabel]="widgetSettingsLabel()"
|
|
38748
39773
|
[shellSettingsTooltip]="widgetSettingsTooltip()"
|
|
38749
39774
|
[moreActionsLabel]="moreWidgetActionsLabel()"
|
|
38750
39775
|
[removeLabel]="widgetRemoveLabel()"
|
|
38751
39776
|
(assistant)="requestWidgetAssistant(w.key)"
|
|
38752
|
-
(componentSettings)="
|
|
39777
|
+
(componentSettings)="
|
|
39778
|
+
openWidgetComponentSettings(w.key)
|
|
39779
|
+
"
|
|
38753
39780
|
(shellSettings)="openWidgetShellSettings(w.key)"
|
|
38754
39781
|
(remove)="confirmAndRemoveWidget(w.key)"
|
|
38755
39782
|
/>
|
|
@@ -38799,7 +39826,9 @@ class DynamicWidgetPageComponent {
|
|
|
38799
39826
|
[showAssistant]="showWidgetAssistantButton"
|
|
38800
39827
|
[assistantLabel]="widgetAssistantLabel()"
|
|
38801
39828
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
38802
|
-
[showComponentSettings]="
|
|
39829
|
+
[showComponentSettings]="
|
|
39830
|
+
canOpenWidgetComponentSettings(w.key)
|
|
39831
|
+
"
|
|
38803
39832
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
38804
39833
|
[componentSettingsTooltip]="componentSettingsTooltip()"
|
|
38805
39834
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
@@ -38843,7 +39872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38843
39872
|
[attr.data-density]="pageThemeDensity"
|
|
38844
39873
|
[attr.data-motion]="pageThemeMotion"
|
|
38845
39874
|
[ngStyle]="pageThemeTokenStyle"
|
|
38846
|
-
|
|
39875
|
+
>
|
|
38847
39876
|
@if (enableCustomization && showPageSettingsButton) {
|
|
38848
39877
|
<button
|
|
38849
39878
|
class="pdx-page-settings"
|
|
@@ -38935,7 +39964,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38935
39964
|
[showAssistant]="showWidgetAssistantButton"
|
|
38936
39965
|
[assistantLabel]="widgetAssistantLabel()"
|
|
38937
39966
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
38938
|
-
[showComponentSettings]="
|
|
39967
|
+
[showComponentSettings]="
|
|
39968
|
+
canOpenWidgetComponentSettings(w.key)
|
|
39969
|
+
"
|
|
38939
39970
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
38940
39971
|
[componentSettingsTooltip]="componentSettingsTooltip()"
|
|
38941
39972
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
@@ -39008,7 +40039,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39008
40039
|
<div
|
|
39009
40040
|
class="pdx-widget"
|
|
39010
40041
|
[attr.data-widget-key]="w.key"
|
|
39011
|
-
[class.pdx-widget--interactive]="
|
|
40042
|
+
[class.pdx-widget--interactive]="
|
|
40043
|
+
enableCustomization
|
|
40044
|
+
"
|
|
39012
40045
|
[class.pdx-widget--selected]="
|
|
39013
40046
|
enableCustomization && isWidgetSelected(w.key)
|
|
39014
40047
|
"
|
|
@@ -39038,22 +40071,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39038
40071
|
</praxis-widget-shell>
|
|
39039
40072
|
@if (shouldRenderWidgetContextOverlay(w)) {
|
|
39040
40073
|
<praxis-dynamic-widget-context-toolbar
|
|
39041
|
-
[toolbarLabel]="
|
|
40074
|
+
[toolbarLabel]="
|
|
40075
|
+
widgetContextToolbarLabel(w.key)
|
|
40076
|
+
"
|
|
39042
40077
|
[contextLabel]="widgetContextLabel(w)"
|
|
39043
40078
|
[contextTooltip]="widgetContextTooltip(w)"
|
|
39044
40079
|
[showAssistant]="showWidgetAssistantButton"
|
|
39045
40080
|
[assistantLabel]="widgetAssistantLabel()"
|
|
39046
40081
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
39047
|
-
[showComponentSettings]="
|
|
39048
|
-
|
|
39049
|
-
|
|
39050
|
-
[
|
|
40082
|
+
[showComponentSettings]="
|
|
40083
|
+
canOpenWidgetComponentSettings(w.key)
|
|
40084
|
+
"
|
|
40085
|
+
[componentSettingsLabel]="
|
|
40086
|
+
componentSettingsLabel()
|
|
40087
|
+
"
|
|
40088
|
+
[componentSettingsTooltip]="
|
|
40089
|
+
componentSettingsTooltip()
|
|
40090
|
+
"
|
|
40091
|
+
[showShellSettings]="
|
|
40092
|
+
canOpenWidgetShellSettings()
|
|
40093
|
+
"
|
|
39051
40094
|
[shellSettingsLabel]="widgetSettingsLabel()"
|
|
39052
40095
|
[shellSettingsTooltip]="widgetSettingsTooltip()"
|
|
39053
40096
|
[moreActionsLabel]="moreWidgetActionsLabel()"
|
|
39054
40097
|
[removeLabel]="widgetRemoveLabel()"
|
|
39055
40098
|
(assistant)="requestWidgetAssistant(w.key)"
|
|
39056
|
-
(componentSettings)="
|
|
40099
|
+
(componentSettings)="
|
|
40100
|
+
openWidgetComponentSettings(w.key)
|
|
40101
|
+
"
|
|
39057
40102
|
(shellSettings)="openWidgetShellSettings(w.key)"
|
|
39058
40103
|
(remove)="confirmAndRemoveWidget(w.key)"
|
|
39059
40104
|
/>
|
|
@@ -39109,16 +40154,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39109
40154
|
[showAssistant]="showWidgetAssistantButton"
|
|
39110
40155
|
[assistantLabel]="widgetAssistantLabel()"
|
|
39111
40156
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
39112
|
-
[showComponentSettings]="
|
|
40157
|
+
[showComponentSettings]="
|
|
40158
|
+
canOpenWidgetComponentSettings(w.key)
|
|
40159
|
+
"
|
|
39113
40160
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
39114
|
-
[componentSettingsTooltip]="
|
|
40161
|
+
[componentSettingsTooltip]="
|
|
40162
|
+
componentSettingsTooltip()
|
|
40163
|
+
"
|
|
39115
40164
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
39116
40165
|
[shellSettingsLabel]="widgetSettingsLabel()"
|
|
39117
40166
|
[shellSettingsTooltip]="widgetSettingsTooltip()"
|
|
39118
40167
|
[moreActionsLabel]="moreWidgetActionsLabel()"
|
|
39119
40168
|
[removeLabel]="widgetRemoveLabel()"
|
|
39120
40169
|
(assistant)="requestWidgetAssistant(w.key)"
|
|
39121
|
-
(componentSettings)="
|
|
40170
|
+
(componentSettings)="
|
|
40171
|
+
openWidgetComponentSettings(w.key)
|
|
40172
|
+
"
|
|
39122
40173
|
(shellSettings)="openWidgetShellSettings(w.key)"
|
|
39123
40174
|
(remove)="confirmAndRemoveWidget(w.key)"
|
|
39124
40175
|
/>
|
|
@@ -39168,7 +40219,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39168
40219
|
[showAssistant]="showWidgetAssistantButton"
|
|
39169
40220
|
[assistantLabel]="widgetAssistantLabel()"
|
|
39170
40221
|
[assistantTooltip]="widgetAssistantTooltip()"
|
|
39171
|
-
[showComponentSettings]="
|
|
40222
|
+
[showComponentSettings]="
|
|
40223
|
+
canOpenWidgetComponentSettings(w.key)
|
|
40224
|
+
"
|
|
39172
40225
|
[componentSettingsLabel]="componentSettingsLabel()"
|
|
39173
40226
|
[componentSettingsTooltip]="componentSettingsTooltip()"
|
|
39174
40227
|
[showShellSettings]="canOpenWidgetShellSettings()"
|
|
@@ -39254,21 +40307,73 @@ const PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA = {
|
|
|
39254
40307
|
description: 'Página dinâmica com widgets e composition.links em layout responsivo, incluindo mediação runtime para rich-content hospedado.',
|
|
39255
40308
|
icon: 'dashboard',
|
|
39256
40309
|
inputs: [
|
|
39257
|
-
{
|
|
39258
|
-
|
|
39259
|
-
|
|
39260
|
-
|
|
39261
|
-
|
|
39262
|
-
{
|
|
39263
|
-
|
|
39264
|
-
|
|
39265
|
-
|
|
39266
|
-
|
|
40310
|
+
{
|
|
40311
|
+
name: 'page',
|
|
40312
|
+
type: 'WidgetPageDefinition',
|
|
40313
|
+
description: 'Definição da página (widgets, layout, i18n de negócio e composition.links).',
|
|
40314
|
+
},
|
|
40315
|
+
{
|
|
40316
|
+
name: 'context',
|
|
40317
|
+
type: 'Record<string, any>',
|
|
40318
|
+
description: 'Contexto adicional compartilhado entre widgets.',
|
|
40319
|
+
},
|
|
40320
|
+
{
|
|
40321
|
+
name: 'strictValidation',
|
|
40322
|
+
type: 'boolean',
|
|
40323
|
+
description: 'Habilita validação estrita de inputs.',
|
|
40324
|
+
},
|
|
40325
|
+
{
|
|
40326
|
+
name: 'enableCustomization',
|
|
40327
|
+
type: 'boolean',
|
|
40328
|
+
description: 'Habilita affordances de edição na página.',
|
|
40329
|
+
},
|
|
40330
|
+
{
|
|
40331
|
+
name: 'showPageSettingsButton',
|
|
40332
|
+
type: 'boolean',
|
|
40333
|
+
description: 'Exibe botão de configuração da página.',
|
|
40334
|
+
},
|
|
40335
|
+
{
|
|
40336
|
+
name: 'shellEditorComponent',
|
|
40337
|
+
type: 'Type<any>',
|
|
40338
|
+
description: 'Override do editor de shell dos widgets.',
|
|
40339
|
+
},
|
|
40340
|
+
{
|
|
40341
|
+
name: 'pageEditorComponent',
|
|
40342
|
+
type: 'Type<any>',
|
|
40343
|
+
description: 'Override do editor de configuração da página.',
|
|
40344
|
+
},
|
|
40345
|
+
{
|
|
40346
|
+
name: 'autoPersist',
|
|
40347
|
+
type: 'boolean',
|
|
40348
|
+
description: 'Ativa persistência automática (load/save) da página.',
|
|
40349
|
+
},
|
|
40350
|
+
{
|
|
40351
|
+
name: 'pageIdentity',
|
|
40352
|
+
type: 'PageIdentity',
|
|
40353
|
+
description: 'Identidade de persistência (tenant/usuário/rota/locale).',
|
|
40354
|
+
},
|
|
40355
|
+
{
|
|
40356
|
+
name: 'componentInstanceId',
|
|
40357
|
+
type: 'string',
|
|
40358
|
+
description: 'Identificador opcional para múltiplas instâncias na mesma rota.',
|
|
40359
|
+
},
|
|
39267
40360
|
],
|
|
39268
40361
|
outputs: [
|
|
39269
|
-
{
|
|
39270
|
-
|
|
39271
|
-
|
|
40362
|
+
{
|
|
40363
|
+
name: 'pageChange',
|
|
40364
|
+
type: 'WidgetPageDefinition',
|
|
40365
|
+
description: 'Emitido ao alterar a definição da página.',
|
|
40366
|
+
},
|
|
40367
|
+
{
|
|
40368
|
+
name: 'widgetEvent',
|
|
40369
|
+
type: 'WidgetEventEnvelope',
|
|
40370
|
+
description: 'Reemite eventos dos widgets filhos com ownerWidgetKey para integrações do host.',
|
|
40371
|
+
},
|
|
40372
|
+
{
|
|
40373
|
+
name: 'widgetDiagnosticsChange',
|
|
40374
|
+
type: 'Record<string, WidgetResolutionDiagnostic>',
|
|
40375
|
+
description: 'Emitido quando o runtime detecta widgets resolvidos ou falhos durante o carregamento dinâmico.',
|
|
40376
|
+
},
|
|
39272
40377
|
],
|
|
39273
40378
|
tags: ['widget', 'page', 'dynamic', 'layout'],
|
|
39274
40379
|
lib: '@praxisui/core',
|
|
@@ -41750,4 +42855,4 @@ function provideHookWhitelist(allowed) {
|
|
|
41750
42855
|
* Generated bundle index. Do not edit.
|
|
41751
42856
|
*/
|
|
41752
42857
|
|
|
41753
|
-
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_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_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, 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, 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, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, 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, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, 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, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, 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, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
42858
|
+
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_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_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, 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, 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, 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, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, 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, 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, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|