@acorex/platform 21.0.0-next.88 → 21.0.0-next.90
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/fesm2022/acorex-platform-auth.mjs +8 -2
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-VfmZct9H.mjs → acorex-platform-common-common-settings.provider-DilV4dql.mjs} +15 -42
- package/fesm2022/acorex-platform-common-common-settings.provider-DilV4dql.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +3299 -3200
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-contracts.mjs +1 -0
- package/fesm2022/acorex-platform-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +643 -30
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +98 -189
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-RttFwaw9.mjs} +17 -4
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-RttFwaw9.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +125 -26
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +4 -4
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-contracts.mjs +106 -12
- package/fesm2022/acorex-platform-layout-entity-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +512 -155
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +921 -173
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +380 -103
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-D4MOHEpI.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-BvFykMTH.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-D4MOHEpI.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-BvFykMTH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs.map} +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +575 -239
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +232 -25
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-BUwPqwUS.mjs → acorex-platform-themes-shared-settings.provider-UyKdkeyk.mjs} +48 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-UyKdkeyk.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +103 -24
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-auth.d.ts +1 -0
- package/types/acorex-platform-common.d.ts +202 -151
- package/types/acorex-platform-contracts.d.ts +1 -0
- package/types/acorex-platform-core.d.ts +162 -7
- package/types/acorex-platform-layout-builder.d.ts +10 -20
- package/types/acorex-platform-layout-components.d.ts +14 -1
- package/types/acorex-platform-layout-entity-contracts.d.ts +31 -2
- package/types/acorex-platform-layout-entity.d.ts +91 -16
- package/types/acorex-platform-layout-views.d.ts +107 -20
- package/types/acorex-platform-layout-widget-core.d.ts +71 -9
- package/types/acorex-platform-layout-widgets.d.ts +48 -26
- package/types/acorex-platform-themes-default.d.ts +60 -6
- package/types/acorex-platform-themes-shared.d.ts +4 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-VfmZct9H.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-BUwPqwUS.mjs.map +0 -1
|
@@ -841,14 +841,7 @@ async function collectEntityQuickSearchFieldPaths(entity, resolveRelatedDefiniti
|
|
|
841
841
|
}
|
|
842
842
|
//#endregion
|
|
843
843
|
|
|
844
|
-
//#
|
|
845
|
-
//#region ---- Property filter helpers ----
|
|
846
|
-
function isPropertyFilterEnabled(property) {
|
|
847
|
-
const filter = property.options?.filter;
|
|
848
|
-
return !!(filter?.advance?.enabled ||
|
|
849
|
-
filter?.inline?.enabled ||
|
|
850
|
-
filter?.preload?.enabled);
|
|
851
|
-
}
|
|
844
|
+
//#region ---- Related entity helpers ----
|
|
852
845
|
function parseRelatedEntityFullName(fullName) {
|
|
853
846
|
const trimmed = fullName.trim();
|
|
854
847
|
const idx = trimmed.indexOf('.');
|
|
@@ -860,13 +853,24 @@ function parseRelatedEntityFullName(fullName) {
|
|
|
860
853
|
entityName: trimmed.slice(idx + 1),
|
|
861
854
|
};
|
|
862
855
|
}
|
|
856
|
+
function parseDottedFieldPath(fieldPath) {
|
|
857
|
+
const trimmed = fieldPath.trim();
|
|
858
|
+
const dotIndex = trimmed.indexOf('.');
|
|
859
|
+
if (dotIndex <= 0 || dotIndex >= trimmed.length - 1) {
|
|
860
|
+
return null;
|
|
861
|
+
}
|
|
862
|
+
return {
|
|
863
|
+
dataPath: trimmed.slice(0, dotIndex),
|
|
864
|
+
propertyName: trimmed.slice(dotIndex + 1),
|
|
865
|
+
};
|
|
866
|
+
}
|
|
863
867
|
//#endregion
|
|
864
868
|
//#region ---- Merge-detail property discovery ----
|
|
865
869
|
/**
|
|
866
|
-
* Resolves related property names eligible for host list filters:
|
|
870
|
+
* Resolves related property names eligible for host list columns/filters/sorts:
|
|
867
871
|
* host columns under `dataPath`, optional `related.properties` allowlist, minus `excludeProperties`.
|
|
868
872
|
*/
|
|
869
|
-
function
|
|
873
|
+
function collectMergeDetailListPropertyNames(hostEntity, dataPath, relatedEntity) {
|
|
870
874
|
const names = new Set();
|
|
871
875
|
const prefix = `${dataPath}.`;
|
|
872
876
|
if (relatedEntity.properties?.length) {
|
|
@@ -904,6 +908,18 @@ function collectMergeDetailFilterPropertyNames(hostEntity, dataPath, relatedEnti
|
|
|
904
908
|
}
|
|
905
909
|
return names;
|
|
906
910
|
}
|
|
911
|
+
//#endregion
|
|
912
|
+
|
|
913
|
+
//#endregion
|
|
914
|
+
//#region ---- Property filter helpers ----
|
|
915
|
+
function isPropertyFilterEnabled(property) {
|
|
916
|
+
const filter = property.options?.filter;
|
|
917
|
+
return !!(filter?.advance?.enabled ||
|
|
918
|
+
filter?.inline?.enabled ||
|
|
919
|
+
filter?.preload?.enabled);
|
|
920
|
+
}
|
|
921
|
+
//#endregion
|
|
922
|
+
//#region ---- Merge-detail property discovery ----
|
|
907
923
|
function resolveMergedRelatedInlineFilterField(dataPath, relatedEntityDef, property) {
|
|
908
924
|
const columnDataPath = resolveEntityColumnDataPath(relatedEntityDef, property.name);
|
|
909
925
|
if (columnDataPath) {
|
|
@@ -1002,7 +1018,7 @@ async function collectMergeDetailFilterDefinitions(hostEntity, resolveRelatedDef
|
|
|
1002
1018
|
if (!relatedDef) {
|
|
1003
1019
|
continue;
|
|
1004
1020
|
}
|
|
1005
|
-
const propertyNames =
|
|
1021
|
+
const propertyNames = collectMergeDetailListPropertyNames(hostEntity, dataPath, related);
|
|
1006
1022
|
if (propertyNames.size === 0) {
|
|
1007
1023
|
continue;
|
|
1008
1024
|
}
|
|
@@ -1040,6 +1056,84 @@ async function collectEntityListFilterDefinitions(entity, resolveRelatedDefiniti
|
|
|
1040
1056
|
}
|
|
1041
1057
|
//#endregion
|
|
1042
1058
|
|
|
1059
|
+
//#endregion
|
|
1060
|
+
//#region ---- Property sort helpers ----
|
|
1061
|
+
function isPropertySortEnabled(property) {
|
|
1062
|
+
return !!property.options?.sort?.enabled;
|
|
1063
|
+
}
|
|
1064
|
+
function resolveHostColumnTitle(hostEntity, fieldName) {
|
|
1065
|
+
const column = hostEntity.columns?.find((c) => c.name === fieldName);
|
|
1066
|
+
return column?.title;
|
|
1067
|
+
}
|
|
1068
|
+
function collectHostSortableFields(entity) {
|
|
1069
|
+
return (entity.properties ?? [])
|
|
1070
|
+
.filter(isPropertySortEnabled)
|
|
1071
|
+
.map((property) => ({
|
|
1072
|
+
name: property.name,
|
|
1073
|
+
title: resolveHostColumnTitle(entity, property.name) ?? property.title,
|
|
1074
|
+
}));
|
|
1075
|
+
}
|
|
1076
|
+
async function collectMergeDetailSortableFields(hostEntity, resolveRelatedDefinition) {
|
|
1077
|
+
const fields = [];
|
|
1078
|
+
for (const related of hostEntity.relatedEntities ?? []) {
|
|
1079
|
+
if (related.layout?.type !== 'merge-detail') {
|
|
1080
|
+
continue;
|
|
1081
|
+
}
|
|
1082
|
+
const dataPath = related.persistence?.dataPath?.trim();
|
|
1083
|
+
if (!dataPath) {
|
|
1084
|
+
continue;
|
|
1085
|
+
}
|
|
1086
|
+
const parsed = related.entity ? parseRelatedEntityFullName(related.entity) : null;
|
|
1087
|
+
if (!parsed) {
|
|
1088
|
+
continue;
|
|
1089
|
+
}
|
|
1090
|
+
const relatedDef = await resolveRelatedDefinition(parsed.moduleName, parsed.entityName);
|
|
1091
|
+
if (!relatedDef) {
|
|
1092
|
+
continue;
|
|
1093
|
+
}
|
|
1094
|
+
const propertyNames = collectMergeDetailListPropertyNames(hostEntity, dataPath, related);
|
|
1095
|
+
for (const propertyName of propertyNames) {
|
|
1096
|
+
const property = relatedDef.properties?.find((p) => p.name === propertyName);
|
|
1097
|
+
if (!property || !isPropertySortEnabled(property)) {
|
|
1098
|
+
continue;
|
|
1099
|
+
}
|
|
1100
|
+
const queryField = `${dataPath}.${propertyName}`;
|
|
1101
|
+
fields.push({
|
|
1102
|
+
name: queryField,
|
|
1103
|
+
title: resolveHostColumnTitle(hostEntity, queryField) ?? property.title,
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
return fields;
|
|
1108
|
+
}
|
|
1109
|
+
//#endregion
|
|
1110
|
+
//#region ---- Public API ----
|
|
1111
|
+
/**
|
|
1112
|
+
* Builds master-list sortable fields from host properties and merge-detail related entities.
|
|
1113
|
+
* Related sorts use `{dataPath}.{property}` query fields (e.g. `person.firstName`).
|
|
1114
|
+
*/
|
|
1115
|
+
async function collectEntityListSortableFields(entity, resolveRelatedDefinition) {
|
|
1116
|
+
if (!entity) {
|
|
1117
|
+
return [];
|
|
1118
|
+
}
|
|
1119
|
+
const hostFields = collectHostSortableFields(entity);
|
|
1120
|
+
const relatedFields = await collectMergeDetailSortableFields(entity, resolveRelatedDefinition);
|
|
1121
|
+
const seen = new Set();
|
|
1122
|
+
const result = [];
|
|
1123
|
+
for (const field of [...hostFields, ...relatedFields]) {
|
|
1124
|
+
if (seen.has(field.name)) {
|
|
1125
|
+
continue;
|
|
1126
|
+
}
|
|
1127
|
+
seen.add(field.name);
|
|
1128
|
+
result.push(field);
|
|
1129
|
+
}
|
|
1130
|
+
return result;
|
|
1131
|
+
}
|
|
1132
|
+
function isEntityPropertySortEnabled(property) {
|
|
1133
|
+
return property != null && isPropertySortEnabled(property);
|
|
1134
|
+
}
|
|
1135
|
+
//#endregion
|
|
1136
|
+
|
|
1043
1137
|
//#region ---- Workflow record helpers ----
|
|
1044
1138
|
/** Entity query filter field for {@link AXPRecordWorkflowInfo.instanceId}. */
|
|
1045
1139
|
const AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD = 'workflowInfo.instanceId';
|
|
@@ -1110,5 +1204,5 @@ const AXPEntityEventsKeys = {
|
|
|
1110
1204
|
* Generated bundle index. Do not edit.
|
|
1111
1205
|
*/
|
|
1112
1206
|
|
|
1113
|
-
export { AXPEntityCommandScope, AXPEntityDataSourceKeys, AXPEntityEventsKeys, AXPEntityQueryType, AXPEntityType, AXPRelationshipCardinality, AXPRelationshipKind, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, ENTITY_LAYOUT_SINGLE_TITLE_PATH, ENTITY_ROW_POPUP_TITLE_OPTION, ENTITY_ROW_TITLE_TEMPLATE_OPTION, buildAXPRecordWorkflowInfo, buildEntitySearchTitleContext, collectEntityListFilterDefinitions, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectPropertyExposeTargetPaths, collectQuickSearchPathsFromSingleEntityDefinition, createAllQueryView, createQueryView, encodeEntityListFilterContextField, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, getEntityInfo, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, isCardFieldBadgeDisplay, isMeaningfulEntityDisplayTitle, isRowBoundEntityDisplayTemplate, isUnresolvedEntityDisplayTemplate, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDisplayTemplate, normalizeExpressionTemplate, parsePropertyExposeEntries, resolveCardFieldBadgeColor, resolveDefaultMasterListLayout, resolveEnabledMasterListLayouts, resolveEntityColumnDataPath, resolveEntityListFilterContextField, resolveEntityListFilterQueryField, resolveEntityModifyRecordTitleTemplate, resolveEntityPropertyInlineFilterField, resolveEntityRowTitleTemplate, resolvePropertyExposeDisplayTarget, sanitizeResolvedEntityDisplayTitle };
|
|
1207
|
+
export { AXPEntityCommandScope, AXPEntityDataSourceKeys, AXPEntityEventsKeys, AXPEntityQueryType, AXPEntityType, AXPRelationshipCardinality, AXPRelationshipKind, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, ENTITY_LAYOUT_SINGLE_TITLE_PATH, ENTITY_ROW_POPUP_TITLE_OPTION, ENTITY_ROW_TITLE_TEMPLATE_OPTION, buildAXPRecordWorkflowInfo, buildEntitySearchTitleContext, collectEntityListFilterDefinitions, collectEntityListSortableFields, collectEntityQuickSearchFieldPaths, collectMergeDetailListPropertyNames, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectPropertyExposeTargetPaths, collectQuickSearchPathsFromSingleEntityDefinition, createAllQueryView, createQueryView, encodeEntityListFilterContextField, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, getEntityInfo, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, isCardFieldBadgeDisplay, isEntityPropertySortEnabled, isMeaningfulEntityDisplayTitle, isRowBoundEntityDisplayTemplate, isUnresolvedEntityDisplayTemplate, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDisplayTemplate, normalizeExpressionTemplate, parseDottedFieldPath, parsePropertyExposeEntries, parseRelatedEntityFullName, resolveCardFieldBadgeColor, resolveDefaultMasterListLayout, resolveEnabledMasterListLayouts, resolveEntityColumnDataPath, resolveEntityListFilterContextField, resolveEntityListFilterQueryField, resolveEntityModifyRecordTitleTemplate, resolveEntityPropertyInlineFilterField, resolveEntityRowTitleTemplate, resolvePropertyExposeDisplayTarget, sanitizeResolvedEntityDisplayTitle };
|
|
1114
1208
|
//# sourceMappingURL=acorex-platform-layout-entity-contracts.mjs.map
|