@acorex/platform 20.7.9 → 20.7.10
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/common/index.d.ts +18 -1
- package/core/index.d.ts +13 -7
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +20 -11
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +2 -2
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +79 -43
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-repeater-widget-column.component-fcCirNxz.mjs → acorex-platform-layout-widgets-repeater-widget-column.component-DnhR00cH.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DnhR00cH.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +115 -136
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DzWjSMSK.mjs → acorex-platform-themes-default-entity-master-list-view.component-HBr-ZTSt.mjs} +20 -5
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-HBr-ZTSt.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +2 -2
- package/layout/entity/index.d.ts +26 -3
- package/layout/widgets/index.d.ts +6 -1
- package/package.json +9 -9
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-fcCirNxz.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DzWjSMSK.mjs.map +0 -1
|
@@ -1353,31 +1353,16 @@ function sortMergedSections(mainSections, extraSections, mainSectionIds) {
|
|
|
1353
1353
|
return entityOrderDiff;
|
|
1354
1354
|
return (a.order ?? 0) - (b.order ?? 0);
|
|
1355
1355
|
});
|
|
1356
|
-
// Build index map for main sections to preserve original order when no explicit order is specified
|
|
1357
|
-
const mainSectionIndexMap = new Map();
|
|
1358
|
-
mainSections.forEach((s, idx) => mainSectionIndexMap.set(s.id, idx));
|
|
1359
1356
|
// Middle block: main sections + middle-only sections
|
|
1360
|
-
// Sort by
|
|
1361
|
-
|
|
1362
|
-
const
|
|
1363
|
-
|
|
1364
|
-
const
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
return a.order - b.order;
|
|
1368
|
-
}
|
|
1369
|
-
// If neither has order, preserve original array position for main sections
|
|
1370
|
-
if (!aHasOrder && !bHasOrder) {
|
|
1371
|
-
const aIdx = mainSectionIndexMap.get(a.id) ?? Infinity;
|
|
1372
|
-
const bIdx = mainSectionIndexMap.get(b.id) ?? Infinity;
|
|
1373
|
-
return aIdx - bIdx;
|
|
1374
|
-
}
|
|
1375
|
-
// If only one has order, the one with order comes first (explicit ordering takes precedence)
|
|
1376
|
-
if (aHasOrder)
|
|
1377
|
-
return -1;
|
|
1378
|
-
return 1;
|
|
1357
|
+
// Sort by order (undefined order is treated as 0)
|
|
1358
|
+
const middleBlock = [...mainSections, ...middleSections];
|
|
1359
|
+
const sortedMiddleBlock = middleBlock.sort((a, b) => {
|
|
1360
|
+
// Treat undefined order as 0 for sorting
|
|
1361
|
+
const aOrder = a.order ?? 0;
|
|
1362
|
+
const bOrder = b.order ?? 0;
|
|
1363
|
+
return aOrder - bOrder;
|
|
1379
1364
|
});
|
|
1380
|
-
return [...beforeSections, ...
|
|
1365
|
+
return [...beforeSections, ...sortedMiddleBlock, ...afterSections];
|
|
1381
1366
|
}
|
|
1382
1367
|
|
|
1383
1368
|
class AXPCreateEntityCommand {
|
|
@@ -2058,7 +2043,7 @@ class AXPEntityDetailPopoverComponent {
|
|
|
2058
2043
|
return importantProperties;
|
|
2059
2044
|
}
|
|
2060
2045
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPEntityDetailPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2061
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPEntityDetailPopoverComponent, isStandalone: true, selector: "axp-entity-detail-popover", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null }, entityId: { classPropertyName: "entityId", publicName: "entityId", isSignal: true, isRequired: true, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "detailPopover", first: true, predicate: ["detailPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-popover [openOn]=\"'manual'\" #detailPopover (openChange)=\"onDetailPopoverOpenChange($event)\">\n <div class=\"ax-lightest-surface ax-border ax-rounded-lg ax-shadow-lg ax-p-4 ax-min-w-[400px]\">\n <div class=\"ax-mb-4 ax-border-b ax-pb-2\">\n <h3 class=\"ax-text-base ax-font-semibold ax-text-on-lightest-surface\">\n @if (entityDetails()?.entityData?.[textField()]) {\n {{ entityDetails()?.entityData[textField()] }}\n } @else {\n {{ item()?.[textField()] }}\n }\n </h3>\n @if (breadcrumb()) {\n <div class=\"ax-text-xs ax-text-neutral-500 ax-mt-1\">{{ breadcrumb() }}</div>\n }\n </div>\n @if (isLoadingDetails()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-py-8\">\n <ax-loading>Loading details...</ax-loading>\n </div>\n } @else if (entityDetails()) {\n <div class=\"ax-space-y-3 ax-mb-4\">\n <!-- Important Entity Data -->\n @if (entityDetails()?.entityData) {\n <axp-widgets-container [context]=\"entityDetails()?.entityData\">\n <div class=\"ax-space-y-2\">\n @for (item of getEntityPropertiesWithWidgets(); track item.name) {\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <span class=\"ax-text-sm ax-font-medium\">{{ item.title | translate | async }}:</span>\n <div class=\"ax-flex-1 ax-ml-2 ax-max-w-48\">\n <ng-container axp-widget-renderer [node]=\"item.node\" [mode]=\"'view'\"></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n }\n </div>\n <div class=\"ax-flex ax-gap-2 ax-justify-end ax-sm\">\n <ax-button [color]=\"'primary'\" [look]=\"'solid'\" text=\"Open Details\" (click)=\"navigateToDetails()\"> </ax-button>\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2046
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPEntityDetailPopoverComponent, isStandalone: true, selector: "axp-entity-detail-popover", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null }, entityId: { classPropertyName: "entityId", publicName: "entityId", isSignal: true, isRequired: true, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "detailPopover", first: true, predicate: ["detailPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-popover [openOn]=\"'manual'\" #detailPopover (openChange)=\"onDetailPopoverOpenChange($event)\">\n <div class=\"ax-lightest-surface ax-border ax-rounded-lg ax-shadow-lg ax-p-4 ax-min-w-[400px]\">\n <div class=\"ax-mb-4 ax-border-b ax-pb-2\">\n <h3 class=\"ax-text-base ax-font-semibold ax-text-on-lightest-surface\">\n @if (entityDetails()?.entityData?.[textField()]) {\n {{ entityDetails()?.entityData[textField()] }}\n } @else {\n {{ item()?.[textField()] }}\n }\n </h3>\n @if (breadcrumb()) {\n <div class=\"ax-text-xs ax-text-neutral-500 ax-mt-1\">{{ breadcrumb() }}</div>\n }\n </div>\n @if (isLoadingDetails()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-py-8\">\n <ax-loading>Loading details...</ax-loading>\n </div>\n } @else if (entityDetails()) {\n <div class=\"ax-space-y-3 ax-mb-4\">\n <!-- Important Entity Data -->\n @if (entityDetails()?.entityData) {\n <axp-widgets-container [context]=\"entityDetails()?.entityData\">\n <div class=\"ax-space-y-2\">\n @for (item of getEntityPropertiesWithWidgets(); track item.name) {\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <span class=\"ax-text-sm ax-font-medium\">{{ item.title | translate | async }}:</span>\n <div class=\"ax-flex-1 ax-ml-2 ax-max-w-48\">\n <ng-container axp-widget-renderer [node]=\"item.node\" [mode]=\"'view'\"></ng-container>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n }\n </div>\n <div class=\"ax-flex ax-gap-2 ax-justify-end ax-sm\">\n <ax-button [color]=\"'primary'\" [look]=\"'solid'\" text=\"Open Details\" (click)=\"navigateToDetails()\"> </ax-button>\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "forceDisableActionSheetStyle", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2062
2047
|
}
|
|
2063
2048
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPEntityDetailPopoverComponent, decorators: [{
|
|
2064
2049
|
type: Component,
|
|
@@ -2906,6 +2891,12 @@ class AXPEntityMasterListViewModel {
|
|
|
2906
2891
|
key: 'id',
|
|
2907
2892
|
});
|
|
2908
2893
|
this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : []));
|
|
2894
|
+
/**
|
|
2895
|
+
* Selected category from the category sidebar (left panel).
|
|
2896
|
+
* Used to set default category when creating new entities via command.
|
|
2897
|
+
* Structure: { id: string; title: string } or null when "All Items" is selected.
|
|
2898
|
+
*/
|
|
2899
|
+
this.selectedCategory = signal(null, ...(ngDevMode ? [{ debugName: "selectedCategory" }] : []));
|
|
2909
2900
|
this.parentKey = computed(() => {
|
|
2910
2901
|
return this.entityDef.parentKey;
|
|
2911
2902
|
}, ...(ngDevMode ? [{ debugName: "parentKey" }] : []));
|
|
@@ -3176,6 +3167,13 @@ class AXPEntityMasterListViewModel {
|
|
|
3176
3167
|
clearSelection() {
|
|
3177
3168
|
this.selectedItems.set([]);
|
|
3178
3169
|
}
|
|
3170
|
+
/**
|
|
3171
|
+
* Sets the selected category from the category sidebar.
|
|
3172
|
+
* Call with null to clear (e.g. when "All Items" is selected).
|
|
3173
|
+
*/
|
|
3174
|
+
setSelectedCategory(category) {
|
|
3175
|
+
this.selectedCategory.set(category);
|
|
3176
|
+
}
|
|
3179
3177
|
async getPrimaryActions() {
|
|
3180
3178
|
const scope = {};
|
|
3181
3179
|
const actions = await Promise.all(this.allActions()
|
|
@@ -3339,6 +3337,8 @@ class AXPEntityMasterListViewModel {
|
|
|
3339
3337
|
});
|
|
3340
3338
|
const command = commandName.split('&')[0];
|
|
3341
3339
|
const options = await this.evaluateExpressions(action?.options, data);
|
|
3340
|
+
const baseData = action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data;
|
|
3341
|
+
const commandData = this.mergeDefaultCategoryForCreate(command, baseData);
|
|
3342
3342
|
if (this.workflow.exists(command)) {
|
|
3343
3343
|
await this.workflow.execute(command, {
|
|
3344
3344
|
entity: getEntityInfo(this.entityDef).source,
|
|
@@ -3349,7 +3349,7 @@ class AXPEntityMasterListViewModel {
|
|
|
3349
3349
|
parentKey: this.entityDef.parentKey,
|
|
3350
3350
|
source: `${this.entityDef.module}.${this.entityDef.name}`,
|
|
3351
3351
|
},
|
|
3352
|
-
data:
|
|
3352
|
+
data: commandData,
|
|
3353
3353
|
options: options,
|
|
3354
3354
|
metadata: action?.metadata,
|
|
3355
3355
|
});
|
|
@@ -3357,7 +3357,7 @@ class AXPEntityMasterListViewModel {
|
|
|
3357
3357
|
else {
|
|
3358
3358
|
const commandOptions = {
|
|
3359
3359
|
__context__: {
|
|
3360
|
-
data:
|
|
3360
|
+
data: commandData,
|
|
3361
3361
|
entity: getEntityInfo(this.entityDef).source,
|
|
3362
3362
|
entityInfo: {
|
|
3363
3363
|
name: this.entityDef.name,
|
|
@@ -3385,6 +3385,41 @@ class AXPEntityMasterListViewModel {
|
|
|
3385
3385
|
// });
|
|
3386
3386
|
}
|
|
3387
3387
|
}
|
|
3388
|
+
/**
|
|
3389
|
+
* Merges default category from selected category in sidebar when executing create command.
|
|
3390
|
+
* For Entity:Create and create-entity, if entity has category plugin and a category is selected,
|
|
3391
|
+
* pre-fills categoryIds and categories for the create form.
|
|
3392
|
+
*/
|
|
3393
|
+
mergeDefaultCategoryForCreate(command, baseData) {
|
|
3394
|
+
const isCreateCommand = command === 'Entity:Create' || command === 'create-entity';
|
|
3395
|
+
if (!isCreateCommand) {
|
|
3396
|
+
return baseData;
|
|
3397
|
+
}
|
|
3398
|
+
const categoryExt = this.entityDef.extensions?.category;
|
|
3399
|
+
if (!categoryExt) {
|
|
3400
|
+
return baseData;
|
|
3401
|
+
}
|
|
3402
|
+
const selectedCat = this.selectedCategory();
|
|
3403
|
+
if (!selectedCat) {
|
|
3404
|
+
return baseData;
|
|
3405
|
+
}
|
|
3406
|
+
const propName = categoryExt.propertyName || 'categoryIds';
|
|
3407
|
+
const valueField = categoryExt.valueField ?? 'id';
|
|
3408
|
+
const textField = categoryExt.textField ?? 'title';
|
|
3409
|
+
const idVal = selectedCat[valueField] ?? selectedCat.id;
|
|
3410
|
+
const titleVal = selectedCat[textField] ?? selectedCat.title;
|
|
3411
|
+
const defaultCategoryData = {
|
|
3412
|
+
[propName]: [idVal],
|
|
3413
|
+
categories: [{ [valueField]: idVal, [textField]: titleVal }],
|
|
3414
|
+
};
|
|
3415
|
+
if (baseData == null || (Array.isArray(baseData) && baseData.length === 0)) {
|
|
3416
|
+
return defaultCategoryData;
|
|
3417
|
+
}
|
|
3418
|
+
if (typeof baseData === 'object' && !Array.isArray(baseData)) {
|
|
3419
|
+
return { ...baseData, ...defaultCategoryData };
|
|
3420
|
+
}
|
|
3421
|
+
return baseData;
|
|
3422
|
+
}
|
|
3388
3423
|
async execute(command) {
|
|
3389
3424
|
switch (command?.name) {
|
|
3390
3425
|
case 'navigate':
|
|
@@ -5001,7 +5036,8 @@ class AXPPageListConverter extends AXPBaseRelatedEntityConverter {
|
|
|
5001
5036
|
};
|
|
5002
5037
|
// Don't evaluate actions here - keep expression strings for lazy evaluation at execution time
|
|
5003
5038
|
// This ensures actions use the latest context data when executed
|
|
5004
|
-
const actions = relatedEntity?.actions ?? [];
|
|
5039
|
+
// const actions = relatedEntity?.actions ?? [];
|
|
5040
|
+
const actions = await evaluateExpressions(relatedEntity?.actions ?? []);
|
|
5005
5041
|
const filters = await Promise.all(relatedEntity.conditions?.map(async (c) => {
|
|
5006
5042
|
const value = await evaluateExpressions(c.value);
|
|
5007
5043
|
return {
|
|
@@ -5225,7 +5261,7 @@ class AXPTabListConverter extends AXPBaseRelatedEntityConverter {
|
|
|
5225
5261
|
}) ?? []);
|
|
5226
5262
|
// Don't evaluate actions here - keep expression strings for lazy evaluation at execution time
|
|
5227
5263
|
// This ensures actions use the latest context data when executed
|
|
5228
|
-
const actions = relatedEntity.actions;
|
|
5264
|
+
const actions = await evaluateExpressions(relatedEntity.actions);
|
|
5229
5265
|
return {
|
|
5230
5266
|
id: entityDef?.name ?? '',
|
|
5231
5267
|
title: relatedEntity.title ?? entityDef?.title ?? '',
|
|
@@ -6158,12 +6194,12 @@ const columnWidthMiddlewareProvider = {
|
|
|
6158
6194
|
* Default order for common sections
|
|
6159
6195
|
*/
|
|
6160
6196
|
const DEFAULT_SECTION_ORDER = {
|
|
6161
|
-
'basic-info':
|
|
6197
|
+
'basic-info': -100,
|
|
6162
6198
|
classification: 20,
|
|
6163
|
-
appearance:
|
|
6164
|
-
settings: 100,
|
|
6199
|
+
appearance: 90,
|
|
6165
6200
|
advanced: 110,
|
|
6166
6201
|
metadata: 120,
|
|
6202
|
+
settings: 200,
|
|
6167
6203
|
};
|
|
6168
6204
|
/**
|
|
6169
6205
|
* Default order for common properties
|
|
@@ -12522,7 +12558,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
12522
12558
|
return get(item, this.displayField()) ?? '';
|
|
12523
12559
|
}
|
|
12524
12560
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPLookupWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12525
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-gap-1 ax-items-center\">\n @if (visibleItems().length > 0) {\n @for (item of visibleItems(); track $index) {\n <span class=\"ax-cursor-pointer hover:ax-text-primary hover:ax-underline\" (click)=\"handleItemClick($index)\">\n {{ getDisplayText(item) }}\n </span>\n @if ($index < visibleItems().length - 1) { <span class=\"ax-text-muted\">\u2022</span>\n }\n }\n } @else {\n <span class=\"ax-text-muted\">---</span>\n }\n\n @if (hasMoreItems()) {\n <span\n class=\"ax-absolute ax-flex ax-items-center ax-end-0 ax-px-1 ax-cursor-pointer ax-h-full hover:ax-primary-lighter\"\n (click)=\"showMoreItems()\" #moreButton>\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n</div>\n\n<!-- More Items Popover -->\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onMorePopoverOpenChange($event)\">\n <div class=\"ax-lightest-surface ax-border ax-rounded-lg ax-shadow-lg ax-p-4 ax-min-w-[280px]\">\n <div class=\"ax-mb-4 ax-border-b ax-pb-2\">\n <h3 class=\"ax-text-base ax-font-semibold\">All {{ allItems().length }} Items</h3>\n </div>\n <div class=\"ax-max-h-64 ax-flex ax-flex-col ax-gap-3\">\n @for (item of allItems(); track $index) {\n <span class=\"ax-cursor-pointer hover:ax-text-primary hover:ax-underline\" (click)=\"showItemDetail(item, $index)\">\n {{ getDisplayText(item) }}\n </span>\n }\n </div>\n </div>\n</ax-popover>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12561
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-gap-1 ax-items-center\">\n @if (visibleItems().length > 0) {\n @for (item of visibleItems(); track $index) {\n <span class=\"ax-cursor-pointer hover:ax-text-primary hover:ax-underline\" (click)=\"handleItemClick($index)\">\n {{ getDisplayText(item) }}\n </span>\n @if ($index < visibleItems().length - 1) { <span class=\"ax-text-muted\">\u2022</span>\n }\n }\n } @else {\n <span class=\"ax-text-muted\">---</span>\n }\n\n @if (hasMoreItems()) {\n <span\n class=\"ax-absolute ax-flex ax-items-center ax-end-0 ax-px-1 ax-cursor-pointer ax-h-full hover:ax-primary-lighter\"\n (click)=\"showMoreItems()\" #moreButton>\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n</div>\n\n<!-- More Items Popover -->\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onMorePopoverOpenChange($event)\">\n <div class=\"ax-lightest-surface ax-border ax-rounded-lg ax-shadow-lg ax-p-4 ax-min-w-[280px]\">\n <div class=\"ax-mb-4 ax-border-b ax-pb-2\">\n <h3 class=\"ax-text-base ax-font-semibold\">All {{ allItems().length }} Items</h3>\n </div>\n <div class=\"ax-max-h-64 ax-flex ax-flex-col ax-gap-3\">\n @for (item of allItems(); track $index) {\n <span class=\"ax-cursor-pointer hover:ax-text-primary hover:ax-underline\" (click)=\"showItemDetail(item, $index)\">\n {{ getDisplayText(item) }}\n </span>\n }\n </div>\n </div>\n</ax-popover>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "forceDisableActionSheetStyle", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12526
12562
|
}
|
|
12527
12563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPLookupWidgetColumnComponent, decorators: [{
|
|
12528
12564
|
type: Component,
|
|
@@ -14357,11 +14393,11 @@ class AXPEntityModule {
|
|
|
14357
14393
|
useClass: AXPEntitiesListDataSourceDefinition,
|
|
14358
14394
|
multi: true,
|
|
14359
14395
|
},
|
|
14360
|
-
|
|
14361
|
-
|
|
14362
|
-
|
|
14363
|
-
|
|
14364
|
-
|
|
14396
|
+
{
|
|
14397
|
+
provide: AXP_ENTITY_MODIFIER,
|
|
14398
|
+
useValue: layoutOrderingMiddlewareProvider,
|
|
14399
|
+
multi: true,
|
|
14400
|
+
},
|
|
14365
14401
|
provideCommandSetups([
|
|
14366
14402
|
{
|
|
14367
14403
|
key: 'Entity:OpenDetails',
|
|
@@ -14530,11 +14566,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
14530
14566
|
useClass: AXPEntitiesListDataSourceDefinition,
|
|
14531
14567
|
multi: true,
|
|
14532
14568
|
},
|
|
14533
|
-
|
|
14534
|
-
|
|
14535
|
-
|
|
14536
|
-
|
|
14537
|
-
|
|
14569
|
+
{
|
|
14570
|
+
provide: AXP_ENTITY_MODIFIER,
|
|
14571
|
+
useValue: layoutOrderingMiddlewareProvider,
|
|
14572
|
+
multi: true,
|
|
14573
|
+
},
|
|
14538
14574
|
provideCommandSetups([
|
|
14539
14575
|
{
|
|
14540
14576
|
key: 'Entity:OpenDetails',
|
|
@@ -14698,7 +14734,7 @@ function entityMasterCrudActions(options) {
|
|
|
14698
14734
|
create: true,
|
|
14699
14735
|
delete: true,
|
|
14700
14736
|
view: true,
|
|
14701
|
-
edit:
|
|
14737
|
+
edit: false,
|
|
14702
14738
|
...options,
|
|
14703
14739
|
};
|
|
14704
14740
|
const actions = [];
|