@acorex-platform/framework-client 0.0.68 → 0.0.70
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-framework-client-common.mjs +48 -8
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dla4tdzi.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CXziIWed.mjs} +211 -30
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CXziIWed.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CDlY8DOy.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DLgSciUV.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CDlY8DOy.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-DLgSciUV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-B2mxC3ze.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-XZc1xZcD.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-B2mxC3ze.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-XZc1xZcD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-mLLnQemg.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DqfikqLb.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-mLLnQemg.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-DqfikqLb.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-framework-client-common.d.ts +29 -5
- package/types/acorex-platform-framework-client-layout-entity.d.ts +12 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dla4tdzi.mjs.map +0 -1
|
@@ -4,14 +4,14 @@ import { AXToastService } from '@acorex/components/toast';
|
|
|
4
4
|
import * as i3$1 from '@acorex/core/translation';
|
|
5
5
|
import { AXTranslationService, AXTranslationModule, resolveMultiLanguageString, translateSync } from '@acorex/core/translation';
|
|
6
6
|
import * as i4$3 from '@acorex-platform/framework-client/common';
|
|
7
|
-
import { AXPNotFoundError,
|
|
7
|
+
import { AXPNotFoundError, AXPSettingsService, AXPCommonSettings, resolveEntityCreateListBehavior, platformErrorI18nKey, extractRequestErrorInfo, axpNavigateAppPath, AXPFileTypeProviderService, AXPFileStorageService, resolveFileTypeDisplay, resolveEntityRowDisplayTitle, resolveEntityModifyPopupTitle, commandMessageTextForError, resolveStoredImageDisplayUrl, isStoredImageFileId, AXPFilterOperatorMiddlewareService, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, ENTITY_LIST_DEFAULT_INSTANCE_ID, axpNormalizeEntityListInstanceId, axpGetEntityListInstanceIdFromParamMap, axpRedirectToNotFound, CONTAINS_OPER, toExecuteCommandFailureResult, AXPLocalEntityEngine, AXPLocalEntityRealtimeBridge, AXP_LOCAL_ENTITY_DEFAULT_MAX_ITEMS, resolveSearchableText, evaluateEntityDisplayTemplate, AXPCleanNestedFilters, AXPEntityDetailsNavTrailService, axpComposeEntityDetailsNavTrail, axpIsEntityRecordNotFound, coerceAXPSettingRawValueByKind, AXPDefaultMultiLanguageConfigService, withDefaultMultiLanguageOnWidgetNodeTree, axpIsEntityListPath, axpIsEntityDetailsPath, axpParseEntityListRoute, axpParseEntityDetailsRoute, axpSaveEntityListReturnUrl, AXPMenuRouteGuard, AXP_NOT_FOUND_ROUTE, AXP_PROTECTED_ROUTE_GUARDS, AXP_ENTITY_VIEW_ACCESS, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_DEFINITION_LAZY_RESOLVER } from '@acorex-platform/framework-client/common';
|
|
8
8
|
import { AXPWidgetsCatalog, runtimeCommandPayloadData, createRandomUuid, AXPRequestError, runtimeQueryPayloadData, runtimeQueryCollectionData, runtimeQueryFailure, runtimeQuerySuccessObject, runtimeCommandFailure, runtimeCommandSuccessObject, resolveActionLook, listThemeSurfaceClasses, parseRuntimeHexSurface, AXP_THEME_SURFACE_STYLES, AXPWidgetsList, AXPSystemActionType, coerceFilterDisplayText, AXPPlatformScope, flattenQueryFilterUserGroups, AXP_QUERY_QUICK_SEARCH_FIELD, wrapQueryFilterRoot, isPersistableFilterQuery, collectQueryFilterLeaves, isCompleteFilterCondition, resolveFilterQueryIdentityField, extractValue, setSmart, getChangedPaths, isSelectionValueEqual, toAxpGridItemWidgetOptions, runtimeQuerySuccessCollection } from '@acorex-platform/framework-shared/core';
|
|
9
9
|
import { AXPDeviceService, AXPExpressionEvaluatorService, AXPEntityBroadcastService, AXPHookService, AXPDebugService, AXPDataGenerator, AXPContextEvalFactory, ensureRuntimeSurfaceClass, applyFilterArray, createCommandExpressionScope, toExpressionRecord, AXPDistributedEventListenerService, applySortArray, AXHighlightService, AXPColumnWidthService, objectKeyValueTransforms, setupPopupFooterKeyboardShortcuts, AXPContextStore, AXPModuleManifestRegistry, provideAppStartUpTask, AXP_APP_STARTUP_PRIORITY, defaultColumnWidthProvider, AXP_COLUMN_WIDTH_PROVIDER } from '@acorex-platform/framework-client/core';
|
|
10
10
|
import { AXPLayoutBuilderService, AXPDialogOpener, LayoutBuilderModule } from '@acorex-platform/framework-client/layout/builder';
|
|
11
11
|
import * as i0 from '@angular/core';
|
|
12
12
|
import { InjectionToken, inject, Injector, runInInjectionContext, Injectable, signal, output, input, computed, effect, ChangeDetectionStrategy, Component, viewChild, untracked, HostBinding, model, ViewEncapsulation, ElementRef, EnvironmentInjector, NgModule, ChangeDetectorRef, Input, afterNextRender, viewChildren, linkedSignal, DestroyRef, makeEnvironmentProviders } from '@angular/core';
|
|
13
13
|
import { cloneDeep, merge, get, isNil, set, isArray, isString, castArray, has, isPlainObject, orderBy, defaultTo, isEmpty, isEqual, isObjectLike } from 'lodash-es';
|
|
14
|
-
import { Subject, filter, takeUntil,
|
|
14
|
+
import { Subject, combineLatest, map, filter, takeUntil, distinctUntilChanged, fromEvent, auditTime, merge as merge$1 } from 'rxjs';
|
|
15
15
|
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
16
16
|
import { Router, NavigationStart, ActivatedRoute, ROUTES } from '@angular/router';
|
|
17
17
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
@@ -52,6 +52,7 @@ import * as i2 from '@acorex/components/badge';
|
|
|
52
52
|
import { AXBadgeModule } from '@acorex/components/badge';
|
|
53
53
|
import * as i6 from '@acorex/components/dropdown';
|
|
54
54
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
55
|
+
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
55
56
|
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
56
57
|
import { AXLocaleService } from '@acorex/core/locale';
|
|
57
58
|
import { AXPlatform } from '@acorex/core/platform';
|
|
@@ -71,7 +72,6 @@ import { AXTagBoxModule } from '@acorex/components/tag-box';
|
|
|
71
72
|
import { AXValidationModule } from '@acorex/core/validation';
|
|
72
73
|
import { AXLookupComponent } from '@acorex/components/lookup';
|
|
73
74
|
import { AXHighlightTextComponent } from '@acorex/components/highlight';
|
|
74
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
75
75
|
import * as i1$7 from '@acorex/components/data-table';
|
|
76
76
|
import { AXDataTableComponent, AXDataTableModule } from '@acorex/components/data-table';
|
|
77
77
|
import * as i2$1 from '@acorex/components/tabs';
|
|
@@ -2412,6 +2412,138 @@ function sortMergedSections(mainSections, extraSections, mainSectionIds) {
|
|
|
2412
2412
|
return [...beforeSections, ...sortedMiddleBlock, ...afterSections];
|
|
2413
2413
|
}
|
|
2414
2414
|
|
|
2415
|
+
const INDIVIDUAL_SCOPE = 'individual';
|
|
2416
|
+
const VIEW_TYPE = 'view';
|
|
2417
|
+
/**
|
|
2418
|
+
* Permissions of the individual view action on `interfaces.master.list.actions`.
|
|
2419
|
+
* Prefers `default === true`, otherwise the first individual view action.
|
|
2420
|
+
* `null` means the hyperlink stays available: no view action, or no permissions declared.
|
|
2421
|
+
* Match is by type and scope. The command name is not part of the match.
|
|
2422
|
+
*/
|
|
2423
|
+
function resolveIndividualViewPermissions(actions) {
|
|
2424
|
+
const views = (actions ?? []).filter((action) => action.scope === INDIVIDUAL_SCOPE && action.type === VIEW_TYPE);
|
|
2425
|
+
if (views.length === 0) {
|
|
2426
|
+
return null;
|
|
2427
|
+
}
|
|
2428
|
+
const selected = views.find((action) => action.default === true) ?? views[0];
|
|
2429
|
+
const permissions = selected.permissions;
|
|
2430
|
+
if (!permissions || permissions.length === 0) {
|
|
2431
|
+
return null;
|
|
2432
|
+
}
|
|
2433
|
+
return permissions;
|
|
2434
|
+
}
|
|
2435
|
+
/**
|
|
2436
|
+
* Session stamp for cached details-access decisions.
|
|
2437
|
+
* Changes when authorization, application, permissions, or features change.
|
|
2438
|
+
*/
|
|
2439
|
+
function buildEntityDetailsAccessStamp(input) {
|
|
2440
|
+
const features = input.features
|
|
2441
|
+
.map((feature) => `${feature.name}:${String(feature.value ?? '')}`)
|
|
2442
|
+
.join('\n');
|
|
2443
|
+
return `${input.isAuthorized ? '1' : '0'}|${input.applicationName}|${input.permissions.join('\n')}|${features}`;
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
/**
|
|
2447
|
+
* Whether the current session may navigate to an entity details view.
|
|
2448
|
+
* Lookup preview cards stay available. This gates the Open Details action and deep links.
|
|
2449
|
+
*/
|
|
2450
|
+
class AXPEntityDetailsAccessService {
|
|
2451
|
+
constructor() {
|
|
2452
|
+
//#region ----- Services & Dependencies -----
|
|
2453
|
+
this.sessionService = inject(AXPSessionService);
|
|
2454
|
+
this.entityRegistry = inject(AXPEntityDefinitionRegistryService);
|
|
2455
|
+
//#endregion
|
|
2456
|
+
//#region ----- State -----
|
|
2457
|
+
this.accessStamp = '';
|
|
2458
|
+
this.decisions = new Map();
|
|
2459
|
+
}
|
|
2460
|
+
//#endregion
|
|
2461
|
+
//#region ----- Public Methods -----
|
|
2462
|
+
/**
|
|
2463
|
+
* Whether the current session may open the entity details route.
|
|
2464
|
+
* The record id does not change the view-action permission.
|
|
2465
|
+
* Missing entity, missing view action, or an empty permission list stays allowed.
|
|
2466
|
+
*/
|
|
2467
|
+
async canOpen(entity, _id = '0') {
|
|
2468
|
+
this.syncStamp();
|
|
2469
|
+
const cacheKey = entity;
|
|
2470
|
+
const cached = this.decisions.get(cacheKey);
|
|
2471
|
+
if (cached) {
|
|
2472
|
+
return cached;
|
|
2473
|
+
}
|
|
2474
|
+
const pending = this.resolveCanOpen(entity);
|
|
2475
|
+
this.decisions.set(cacheKey, pending);
|
|
2476
|
+
void pending.then(() => undefined, () => {
|
|
2477
|
+
if (this.decisions.get(cacheKey) === pending) {
|
|
2478
|
+
this.decisions.delete(cacheKey);
|
|
2479
|
+
}
|
|
2480
|
+
});
|
|
2481
|
+
return pending;
|
|
2482
|
+
}
|
|
2483
|
+
//#endregion
|
|
2484
|
+
//#region ----- Private Methods -----
|
|
2485
|
+
async resolveCanOpen(entity) {
|
|
2486
|
+
const definition = await this.tryResolveEntity(entity);
|
|
2487
|
+
const permissions = resolveIndividualViewPermissions(definition?.interfaces?.master?.list?.actions);
|
|
2488
|
+
if (!permissions) {
|
|
2489
|
+
return true;
|
|
2490
|
+
}
|
|
2491
|
+
return this.sessionService.authorize(...permissions);
|
|
2492
|
+
}
|
|
2493
|
+
/** Drop cached decisions when application, permissions, or features change. */
|
|
2494
|
+
syncStamp() {
|
|
2495
|
+
const stamp = buildEntityDetailsAccessStamp({
|
|
2496
|
+
isAuthorized: this.sessionService.isAuthorized,
|
|
2497
|
+
applicationName: this.sessionService.application?.name ?? '',
|
|
2498
|
+
permissions: this.sessionService.permissions,
|
|
2499
|
+
features: this.sessionService.features,
|
|
2500
|
+
});
|
|
2501
|
+
if (stamp === this.accessStamp) {
|
|
2502
|
+
return;
|
|
2503
|
+
}
|
|
2504
|
+
this.accessStamp = stamp;
|
|
2505
|
+
this.decisions.clear();
|
|
2506
|
+
}
|
|
2507
|
+
async tryResolveEntity(entityKey) {
|
|
2508
|
+
const separator = entityKey.indexOf('.');
|
|
2509
|
+
if (separator <= 0 || separator >= entityKey.length - 1) {
|
|
2510
|
+
return null;
|
|
2511
|
+
}
|
|
2512
|
+
const moduleName = entityKey.slice(0, separator);
|
|
2513
|
+
const entityName = entityKey.slice(separator + 1);
|
|
2514
|
+
try {
|
|
2515
|
+
return await this.entityRegistry.resolve(moduleName, entityName);
|
|
2516
|
+
}
|
|
2517
|
+
catch (error) {
|
|
2518
|
+
if (error instanceof AXPNotFoundError) {
|
|
2519
|
+
return null;
|
|
2520
|
+
}
|
|
2521
|
+
throw error;
|
|
2522
|
+
}
|
|
2523
|
+
}
|
|
2524
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2525
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, providedIn: 'root' }); }
|
|
2526
|
+
}
|
|
2527
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, decorators: [{
|
|
2528
|
+
type: Injectable,
|
|
2529
|
+
args: [{ providedIn: 'root' }]
|
|
2530
|
+
}] });
|
|
2531
|
+
|
|
2532
|
+
/**
|
|
2533
|
+
* Route for `/{app}/m/{module}/e/{entity}/{id}/view`, matching Entity:OpenDetails.
|
|
2534
|
+
* The id segment is not part of menu matching; callers may pass the real record id.
|
|
2535
|
+
*/
|
|
2536
|
+
function buildEntityDetailsRoute(applicationName, entity, id) {
|
|
2537
|
+
const [moduleName, entityName] = entity.split('.');
|
|
2538
|
+
if (!applicationName || !moduleName || !entityName || !id) {
|
|
2539
|
+
return null;
|
|
2540
|
+
}
|
|
2541
|
+
return {
|
|
2542
|
+
commands: ['/', applicationName, 'm', moduleName, 'e', entityName, id, 'view'],
|
|
2543
|
+
queryParams: { page: entityName },
|
|
2544
|
+
};
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2415
2547
|
function resolveOpenEntityDetailsInput(input = {}) {
|
|
2416
2548
|
const context = resolveEntityActionCommandInput(input);
|
|
2417
2549
|
return {
|
|
@@ -2431,7 +2563,7 @@ class AXPOpenEntityDetailsCommand {
|
|
|
2431
2563
|
//#region ---- Services & Dependencies ----
|
|
2432
2564
|
this.router = inject(Router);
|
|
2433
2565
|
this.sessionService = inject(AXPSessionService);
|
|
2434
|
-
this.
|
|
2566
|
+
this.detailsAccess = inject(AXPEntityDetailsAccessService);
|
|
2435
2567
|
}
|
|
2436
2568
|
//#endregion
|
|
2437
2569
|
//#region ---- Command Execution ----
|
|
@@ -2457,28 +2589,25 @@ class AXPOpenEntityDetailsCommand {
|
|
|
2457
2589
|
},
|
|
2458
2590
|
};
|
|
2459
2591
|
}
|
|
2460
|
-
const
|
|
2461
|
-
if (!
|
|
2592
|
+
const applicationName = this.sessionService.application?.name;
|
|
2593
|
+
if (!applicationName) {
|
|
2462
2594
|
return {
|
|
2463
2595
|
success: false,
|
|
2464
2596
|
message: {
|
|
2465
|
-
text: '
|
|
2597
|
+
text: 'Application is required for opening details view',
|
|
2466
2598
|
},
|
|
2467
2599
|
};
|
|
2468
2600
|
}
|
|
2469
|
-
const
|
|
2470
|
-
if (!
|
|
2601
|
+
const route = buildEntityDetailsRoute(applicationName, entity, String(data.id));
|
|
2602
|
+
if (!route) {
|
|
2471
2603
|
return {
|
|
2472
2604
|
success: false,
|
|
2473
2605
|
message: {
|
|
2474
|
-
text: '
|
|
2606
|
+
text: 'Entity must be in format "ModuleName.EntityName"',
|
|
2475
2607
|
},
|
|
2476
2608
|
};
|
|
2477
2609
|
}
|
|
2478
|
-
|
|
2479
|
-
const extras = { queryParams: { page: entityName } };
|
|
2480
|
-
const url = this.router.serializeUrl(this.router.createUrlTree(commands, extras));
|
|
2481
|
-
if (!(await this.menuRouteAccess.canAccessUrl(url))) {
|
|
2610
|
+
if (!(await this.detailsAccess.canOpen(entity, String(data.id)))) {
|
|
2482
2611
|
return {
|
|
2483
2612
|
success: false,
|
|
2484
2613
|
message: { text: '@general:errors.codes.FORBIDDEN' },
|
|
@@ -2486,7 +2615,7 @@ class AXPOpenEntityDetailsCommand {
|
|
|
2486
2615
|
}
|
|
2487
2616
|
// Explicit segments so IDs containing `/` (and `http:` prefixes) stay one route param.
|
|
2488
2617
|
// Primary page id is the entity name (`main-entity-content-builder`).
|
|
2489
|
-
const navigated = await this.router.navigate(commands,
|
|
2618
|
+
const navigated = await this.router.navigate(route.commands, { queryParams: route.queryParams });
|
|
2490
2619
|
if (!navigated) {
|
|
2491
2620
|
return {
|
|
2492
2621
|
success: false,
|
|
@@ -8124,11 +8253,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
8124
8253
|
}], ctorParameters: () => [], propDecorators: { entity: [{ type: i0.Input, args: [{ isSignal: true, alias: "entity", required: true }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], row: [{ type: i0.Input, args: [{ isSignal: true, alias: "row", required: true }] }], fields: [{ type: i0.Input, args: [{ isSignal: true, alias: "fields", required: false }] }], userStylingRules: [{ type: i0.Input, args: [{ isSignal: true, alias: "userStylingRules", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], elevated: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevated", required: false }] }], disableLookupPopover: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableLookupPopover", required: false }] }], fillHost: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillHost", required: false }] }], extraExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraExpanded", required: false }] }, { type: i0.Output, args: ["extraExpandedChange"] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], showNewBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNewBadge", required: false }] }], showSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSelection", required: false }] }], showClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClose", required: false }] }], primaryActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryActions", required: false }] }], primaryActionLook: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryActionLook", required: false }] }], secondaryActionLoader: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryActionLoader", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], commandClick: [{ type: i0.Output, args: ["commandClick"] }], closeClick: [{ type: i0.Output, args: ["closeClick"] }] } });
|
|
8125
8254
|
|
|
8126
8255
|
class AXPEntityDetailPopoverComponent {
|
|
8256
|
+
//#endregion
|
|
8257
|
+
//#region ----- Lifecycle -----
|
|
8127
8258
|
constructor() {
|
|
8128
8259
|
//#region ----- Services & Dependencies -----
|
|
8129
8260
|
this.commandService = inject(AXPCommandService);
|
|
8130
8261
|
this.queryService = inject(AXPQueryService);
|
|
8131
8262
|
this.cardFieldsResolver = inject(AXPEntityCardFieldsResolver);
|
|
8263
|
+
this.detailsAccess = inject(AXPEntityDetailsAccessService);
|
|
8264
|
+
this.sessionService = inject(AXPSessionService);
|
|
8265
|
+
/** Re-check the Open Details action when application, permissions, or features change. */
|
|
8266
|
+
this.accessRevision = toSignal(combineLatest([
|
|
8267
|
+
this.sessionService.application$,
|
|
8268
|
+
this.sessionService.permissions$,
|
|
8269
|
+
this.sessionService.features$,
|
|
8270
|
+
]).pipe(map(([application, permissions, features]) => {
|
|
8271
|
+
const featureStamp = features
|
|
8272
|
+
.map((feature) => `${feature.name}:${String(feature.value ?? '')}`)
|
|
8273
|
+
.join('\n');
|
|
8274
|
+
return `${this.sessionService.isAuthorized ? '1' : '0'}|${application?.name ?? ''}|${permissions.join('\n')}|${featureStamp}`;
|
|
8275
|
+
})), { initialValue: '' });
|
|
8132
8276
|
//#endregion
|
|
8133
8277
|
//#region ----- Inputs -----
|
|
8134
8278
|
this.entity = input.required(/* @ts-ignore */
|
|
@@ -8147,6 +8291,10 @@ class AXPEntityDetailPopoverComponent {
|
|
|
8147
8291
|
...(ngDevMode ? [{ debugName: "entityData" }] : /* istanbul ignore next */ []));
|
|
8148
8292
|
this.isLoadingDetails = signal(false, /* @ts-ignore */
|
|
8149
8293
|
...(ngDevMode ? [{ debugName: "isLoadingDetails" }] : /* istanbul ignore next */ []));
|
|
8294
|
+
/** View-action permission for the Open Details footer. Hidden until the check allows it. */
|
|
8295
|
+
this.canOpenDetails = signal(false, /* @ts-ignore */
|
|
8296
|
+
...(ngDevMode ? [{ debugName: "canOpenDetails" }] : /* istanbul ignore next */ []));
|
|
8297
|
+
this.accessRequestId = 0;
|
|
8150
8298
|
//#endregion
|
|
8151
8299
|
//#region ----- Computed Properties -----
|
|
8152
8300
|
this.cardLayout = computed(() => {
|
|
@@ -8190,7 +8338,7 @@ class AXPEntityDetailPopoverComponent {
|
|
|
8190
8338
|
/** Same footer slot the master-list card uses for primary row actions. */
|
|
8191
8339
|
this.openDetailsActions = computed(() => {
|
|
8192
8340
|
const definition = this.entityDefinition();
|
|
8193
|
-
if (!definition) {
|
|
8341
|
+
if (!definition || !this.canOpenDetails()) {
|
|
8194
8342
|
return [];
|
|
8195
8343
|
}
|
|
8196
8344
|
return [
|
|
@@ -8205,6 +8353,22 @@ class AXPEntityDetailPopoverComponent {
|
|
|
8205
8353
|
];
|
|
8206
8354
|
}, /* @ts-ignore */
|
|
8207
8355
|
...(ngDevMode ? [{ debugName: "openDetailsActions" }] : /* istanbul ignore next */ []));
|
|
8356
|
+
effect(() => {
|
|
8357
|
+
this.accessRevision();
|
|
8358
|
+
const entity = this.entity();
|
|
8359
|
+
const id = this.entityId();
|
|
8360
|
+
if (!entity || id == null || id === '') {
|
|
8361
|
+
this.accessRequestId++;
|
|
8362
|
+
this.canOpenDetails.set(false);
|
|
8363
|
+
return;
|
|
8364
|
+
}
|
|
8365
|
+
const requestId = ++this.accessRequestId;
|
|
8366
|
+
void this.detailsAccess.canOpen(entity, String(id)).then((allowed) => {
|
|
8367
|
+
if (requestId === this.accessRequestId) {
|
|
8368
|
+
this.canOpenDetails.set(allowed);
|
|
8369
|
+
}
|
|
8370
|
+
});
|
|
8371
|
+
});
|
|
8208
8372
|
}
|
|
8209
8373
|
//#endregion
|
|
8210
8374
|
//#region ----- Event Handlers -----
|
|
@@ -8255,7 +8419,7 @@ class AXPEntityDetailPopoverComponent {
|
|
|
8255
8419
|
}
|
|
8256
8420
|
}
|
|
8257
8421
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8258
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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 }, requestClose: { classPropertyName: "requestClose", publicName: "requestClose", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXP_SELECT_COLUMN_RESOLVE_QUERY, useValue: true }], ngImport: i0, template: "<div class=\"axp-entity-detail-popover\">\n @if (breadcrumb()) {\n <!-- ----- Optional lookup breadcrumb above the shared entity card ----- -->\n <div class=\"text-xs text-neutral-500 mb-2\">{{ breadcrumb() }}</div>\n }\n @if (isLoadingDetails()) {\n <!-- ----- Loading placeholder while Entity:GetDetails is fetched ----- -->\n <div class=\"axp-entity-detail-popover__loading\">\n @if (canClose()) {\n <!-- ----- Dismiss while the lookup card is still loading ----- -->\n <ax-button\n class=\"axp-entity-detail-popover__close ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [iconOnly]=\"true\"\n [attr.title]=\"('@general:actions.close.title' | translate | async)\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async)\"\n (onClick)=\"onClose()\"\n >\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-button>\n }\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"
|
|
8422
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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 }, requestClose: { classPropertyName: "requestClose", publicName: "requestClose", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXP_SELECT_COLUMN_RESOLVE_QUERY, useValue: true }], ngImport: i0, template: "<div class=\"axp-entity-detail-popover\">\n @if (breadcrumb()) {\n <!-- ----- Optional lookup breadcrumb above the shared entity card ----- -->\n <div class=\"text-xs text-neutral-500 mb-2\">{{ breadcrumb() }}</div>\n }\n @if (isLoadingDetails()) {\n <!-- ----- Loading placeholder while Entity:GetDetails is fetched ----- -->\n <div class=\"axp-entity-detail-popover__loading\">\n @if (canClose()) {\n <!-- ----- Dismiss while the lookup card is still loading ----- -->\n <ax-button\n class=\"axp-entity-detail-popover__close ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [iconOnly]=\"true\"\n [attr.title]=\"('@general:actions.close.title' | translate | async)\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async)\"\n (onClick)=\"onClose()\"\n >\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-button>\n }\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"canOpenDetails()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [elevated]=\"true\"\n />\n </div>\n }\n <!-- ----- Same card chrome as the master list; Open Details uses the card footer ----- -->\n @else if (entityDefinition(); as definition) {\n <!--->\n <!-- ----- Entity card when row details have loaded ----- -->\n @if (entityData(); as row) {\n <axp-entity-card\n [entity]=\"definition\"\n [layout]=\"cardLayout()\"\n [row]=\"row\"\n [fields]=\"cardFields()\"\n variant=\"card\"\n [interactive]=\"false\"\n [elevated]=\"true\"\n [showClose]=\"canClose()\"\n primaryActionLook=\"solid\"\n [disableLookupPopover]=\"true\"\n [primaryActions]=\"openDetailsActions()\"\n (commandClick)=\"onCardCommandClick($event)\"\n (closeClick)=\"onClose()\"\n />\n }\n }\n</div>\n", styles: [":host{display:block;border-radius:var(--radius-md, .375rem);width:min(600px,calc(100vw - 2rem));background-color:rgb(var(--ax-sys-color-lightest-surface));box-shadow:0 8px 16px #00000029,0 24px 48px #00000038,0 48px 96px #00000047}.axp-entity-detail-popover__loading{position:relative}.axp-entity-detail-popover__close{position:absolute;z-index:20;inset-block-start:.75rem;inset-inline-end:1rem}.axp-entity-detail-popover-overlay,.axp-entity-detail-popover-overlay.ax-overlay-container,.axp-entity-detail-popover-overlay.ax-overlay-pane,.axp-entity-detail-popover-overlay .ax-overlay-pane,.axp-entity-detail-popover-overlay .overlay-pane{width:min(600px,calc(100vw - 2rem))!important;min-width:min(600px,calc(100vw - 2rem));overflow:visible!important;background:transparent!important;border:none!important;box-shadow:none!important;padding:0!important}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPEntityCardComponent, selector: "axp-entity-card", inputs: ["entity", "layout", "row", "fields", "userStylingRules", "variant", "interactive", "embedded", "elevated", "disableLookupPopover", "fillHost", "extraExpanded", "selected", "showNewBadge", "showSelection", "showClose", "primaryActions", "primaryActionLook", "secondaryActionLoader"], outputs: ["extraExpandedChange", "selectionChange", "commandClick", "closeClick"] }, { kind: "component", type: AXPEntityCardSkeletonComponent, selector: "axp-entity-card-skeleton", inputs: ["fieldCount", "badgeCount", "showFooter", "showHeaderMenu", "showContent", "rowLayout", "showAvatar", "fillHost", "embedded", "elevated"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8259
8423
|
}
|
|
8260
8424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailPopoverComponent, decorators: [{
|
|
8261
8425
|
type: Component,
|
|
@@ -8267,8 +8431,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
8267
8431
|
AXTranslationModule,
|
|
8268
8432
|
AXPEntityCardComponent,
|
|
8269
8433
|
AXPEntityCardSkeletonComponent,
|
|
8270
|
-
], providers: [{ provide: AXP_SELECT_COLUMN_RESOLVE_QUERY, useValue: true }], template: "<div class=\"axp-entity-detail-popover\">\n @if (breadcrumb()) {\n <!-- ----- Optional lookup breadcrumb above the shared entity card ----- -->\n <div class=\"text-xs text-neutral-500 mb-2\">{{ breadcrumb() }}</div>\n }\n @if (isLoadingDetails()) {\n <!-- ----- Loading placeholder while Entity:GetDetails is fetched ----- -->\n <div class=\"axp-entity-detail-popover__loading\">\n @if (canClose()) {\n <!-- ----- Dismiss while the lookup card is still loading ----- -->\n <ax-button\n class=\"axp-entity-detail-popover__close ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [iconOnly]=\"true\"\n [attr.title]=\"('@general:actions.close.title' | translate | async)\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async)\"\n (onClick)=\"onClose()\"\n >\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-button>\n }\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"
|
|
8271
|
-
}], propDecorators: { entity: [{ type: i0.Input, args: [{ isSignal: true, alias: "entity", required: true }] }], entityId: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityId", required: true }] }], requestClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestClose", required: false }] }], breadcrumb: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumb", required: false }] }] } });
|
|
8434
|
+
], providers: [{ provide: AXP_SELECT_COLUMN_RESOLVE_QUERY, useValue: true }], template: "<div class=\"axp-entity-detail-popover\">\n @if (breadcrumb()) {\n <!-- ----- Optional lookup breadcrumb above the shared entity card ----- -->\n <div class=\"text-xs text-neutral-500 mb-2\">{{ breadcrumb() }}</div>\n }\n @if (isLoadingDetails()) {\n <!-- ----- Loading placeholder while Entity:GetDetails is fetched ----- -->\n <div class=\"axp-entity-detail-popover__loading\">\n @if (canClose()) {\n <!-- ----- Dismiss while the lookup card is still loading ----- -->\n <ax-button\n class=\"axp-entity-detail-popover__close ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [iconOnly]=\"true\"\n [attr.title]=\"('@general:actions.close.title' | translate | async)\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async)\"\n (onClick)=\"onClose()\"\n >\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-button>\n }\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"canOpenDetails()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [elevated]=\"true\"\n />\n </div>\n }\n <!-- ----- Same card chrome as the master list; Open Details uses the card footer ----- -->\n @else if (entityDefinition(); as definition) {\n <!--->\n <!-- ----- Entity card when row details have loaded ----- -->\n @if (entityData(); as row) {\n <axp-entity-card\n [entity]=\"definition\"\n [layout]=\"cardLayout()\"\n [row]=\"row\"\n [fields]=\"cardFields()\"\n variant=\"card\"\n [interactive]=\"false\"\n [elevated]=\"true\"\n [showClose]=\"canClose()\"\n primaryActionLook=\"solid\"\n [disableLookupPopover]=\"true\"\n [primaryActions]=\"openDetailsActions()\"\n (commandClick)=\"onCardCommandClick($event)\"\n (closeClick)=\"onClose()\"\n />\n }\n }\n</div>\n", styles: [":host{display:block;border-radius:var(--radius-md, .375rem);width:min(600px,calc(100vw - 2rem));background-color:rgb(var(--ax-sys-color-lightest-surface));box-shadow:0 8px 16px #00000029,0 24px 48px #00000038,0 48px 96px #00000047}.axp-entity-detail-popover__loading{position:relative}.axp-entity-detail-popover__close{position:absolute;z-index:20;inset-block-start:.75rem;inset-inline-end:1rem}.axp-entity-detail-popover-overlay,.axp-entity-detail-popover-overlay.ax-overlay-container,.axp-entity-detail-popover-overlay.ax-overlay-pane,.axp-entity-detail-popover-overlay .ax-overlay-pane,.axp-entity-detail-popover-overlay .overlay-pane{width:min(600px,calc(100vw - 2rem))!important;min-width:min(600px,calc(100vw - 2rem));overflow:visible!important;background:transparent!important;border:none!important;box-shadow:none!important;padding:0!important}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
8435
|
+
}], ctorParameters: () => [], propDecorators: { entity: [{ type: i0.Input, args: [{ isSignal: true, alias: "entity", required: true }] }], entityId: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityId", required: true }] }], requestClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestClose", required: false }] }], breadcrumb: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumb", required: false }] }] } });
|
|
8272
8436
|
|
|
8273
8437
|
class AXPEntityDetailPopoverService {
|
|
8274
8438
|
constructor() {
|
|
@@ -14131,7 +14295,7 @@ class AXMAttachmentsPageComponentProvider {
|
|
|
14131
14295
|
return [
|
|
14132
14296
|
{
|
|
14133
14297
|
key: ATTACHMENTS_PAGE_COMPONENT_KEY,
|
|
14134
|
-
loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-
|
|
14298
|
+
loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-DLgSciUV.mjs').then((m) => m.AXMAttachmentsPageComponent),
|
|
14135
14299
|
},
|
|
14136
14300
|
];
|
|
14137
14301
|
}
|
|
@@ -14668,7 +14832,7 @@ class AXMGalleryPageComponentProvider {
|
|
|
14668
14832
|
return [
|
|
14669
14833
|
{
|
|
14670
14834
|
key: GALLERY_PAGE_COMPONENT_KEY,
|
|
14671
|
-
loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-
|
|
14835
|
+
loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-DqfikqLb.mjs').then((m) => m.AXMGalleryPageComponent),
|
|
14672
14836
|
},
|
|
14673
14837
|
];
|
|
14674
14838
|
}
|
|
@@ -25436,6 +25600,9 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25436
25600
|
return popover?.enabled !== false;
|
|
25437
25601
|
}, /* @ts-ignore */
|
|
25438
25602
|
...(ngDevMode ? [{ debugName: "detailPopoverEnabled" }] : /* istanbul ignore next */ []));
|
|
25603
|
+
/** Cell opens the preview card. Open Details inside the card follows the view permission. */
|
|
25604
|
+
this.linkEnabled = computed(() => this.detailPopoverEnabled(), /* @ts-ignore */
|
|
25605
|
+
...(ngDevMode ? [{ debugName: "linkEnabled" }] : /* istanbul ignore next */ []));
|
|
25439
25606
|
//#endregion
|
|
25440
25607
|
//#region ---- Signals ----
|
|
25441
25608
|
this.isMorePopoverOpen = signal(false, /* @ts-ignore */
|
|
@@ -25633,7 +25800,17 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25633
25800
|
this.entityDetailPopoverService.hide();
|
|
25634
25801
|
this.openPopoverFromRef(this.moreButton());
|
|
25635
25802
|
}
|
|
25803
|
+
onLazySummaryClick(event) {
|
|
25804
|
+
if (!this.linkEnabled()) {
|
|
25805
|
+
return;
|
|
25806
|
+
}
|
|
25807
|
+
event.stopPropagation();
|
|
25808
|
+
this.openLazyPopover();
|
|
25809
|
+
}
|
|
25636
25810
|
openLazyPopover() {
|
|
25811
|
+
if (!this.linkEnabled()) {
|
|
25812
|
+
return;
|
|
25813
|
+
}
|
|
25637
25814
|
this.entityDetailPopoverService.hide();
|
|
25638
25815
|
this.openPopoverFromRef(this.lazyTrigger());
|
|
25639
25816
|
if (!this.isHydratedStrategy()) {
|
|
@@ -25648,7 +25825,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25648
25825
|
}
|
|
25649
25826
|
}
|
|
25650
25827
|
async showItemDetail(item, index, anchor) {
|
|
25651
|
-
if (!this.
|
|
25828
|
+
if (!this.linkEnabled()) {
|
|
25652
25829
|
return;
|
|
25653
25830
|
}
|
|
25654
25831
|
const detailAnchor = this.resolveStableDetailAnchor(anchor);
|
|
@@ -25707,7 +25884,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25707
25884
|
});
|
|
25708
25885
|
}
|
|
25709
25886
|
handleItemClick(index, event) {
|
|
25710
|
-
if (!this.
|
|
25887
|
+
if (!this.linkEnabled()) {
|
|
25711
25888
|
return;
|
|
25712
25889
|
}
|
|
25713
25890
|
const items = this.allItems();
|
|
@@ -25716,7 +25893,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25716
25893
|
}
|
|
25717
25894
|
}
|
|
25718
25895
|
handleResolvedItemClick(index, event) {
|
|
25719
|
-
if (!this.
|
|
25896
|
+
if (!this.linkEnabled()) {
|
|
25720
25897
|
return;
|
|
25721
25898
|
}
|
|
25722
25899
|
const items = this.resolvedPopoverItems();
|
|
@@ -25725,6 +25902,9 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
25725
25902
|
}
|
|
25726
25903
|
}
|
|
25727
25904
|
handlePopoverItemClick(index, _event) {
|
|
25905
|
+
if (!this.linkEnabled()) {
|
|
25906
|
+
return;
|
|
25907
|
+
}
|
|
25728
25908
|
const anchor = this.resolveMorePopoverDetailAnchor();
|
|
25729
25909
|
if (this.isHydratedStrategy()) {
|
|
25730
25910
|
const items = this.allItems();
|
|
@@ -26156,11 +26336,11 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
26156
26336
|
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value) || /^\d+$/.test(value);
|
|
26157
26337
|
}
|
|
26158
26338
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "lazyTrigger", first: true, predicate: ["lazyTrigger"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"
|
|
26339
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "lazyTrigger", first: true, predicate: ["lazyTrigger"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"onLazySummaryClick($event)\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i1$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26160
26340
|
}
|
|
26161
26341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, decorators: [{
|
|
26162
26342
|
type: Component,
|
|
26163
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXLoadingModule, AXPopoverModule], inputs: ['rawValue', 'rowData'], template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"
|
|
26343
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXLoadingModule, AXPopoverModule], inputs: ['rawValue', 'rowData'], template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"onLazySummaryClick($event)\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n" }]
|
|
26164
26344
|
}], ctorParameters: () => [], propDecorators: { moreButton: [{ type: i0.ViewChild, args: ['moreButton', { isSignal: true }] }], lazyTrigger: [{ type: i0.ViewChild, args: ['lazyTrigger', { isSignal: true }] }], morePopover: [{ type: i0.ViewChild, args: ['morePopover', { isSignal: true }] }] } });
|
|
26165
26345
|
|
|
26166
26346
|
var lookupWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
@@ -28822,7 +29002,6 @@ const ENTITY_EXTENDED_WIDGETS = [
|
|
|
28822
29002
|
defaultFilterOperator: AXP_LOOKUP_FILTER_DEFAULT_OPERATOR,
|
|
28823
29003
|
components: {},
|
|
28824
29004
|
options: {
|
|
28825
|
-
look: 'select',
|
|
28826
29005
|
filterMode: true,
|
|
28827
29006
|
},
|
|
28828
29007
|
},
|
|
@@ -32419,6 +32598,7 @@ class AXPEntityModule {
|
|
|
32419
32598
|
AXPWidgetCoreModule,
|
|
32420
32599
|
LayoutBuilderModule] }); }
|
|
32421
32600
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityModule, providers: [
|
|
32601
|
+
{ provide: AXP_ENTITY_VIEW_ACCESS, useExisting: AXPEntityDetailsAccessService },
|
|
32422
32602
|
AXP_ENTITY_DETAILS_VIEW_ADAPTER_LOADER_PROVIDER,
|
|
32423
32603
|
{
|
|
32424
32604
|
provide: AXP_REPEATER_ENTITY_BY_KEY_LOOKUP,
|
|
@@ -32531,7 +32711,7 @@ class AXPEntityModule {
|
|
|
32531
32711
|
},
|
|
32532
32712
|
{
|
|
32533
32713
|
key: 'Entity:Bulk',
|
|
32534
|
-
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-
|
|
32714
|
+
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-XZc1xZcD.mjs').then((c) => c.AXPBulkEntityCommand),
|
|
32535
32715
|
},
|
|
32536
32716
|
{
|
|
32537
32717
|
key: 'Entity:OpenList',
|
|
@@ -32580,6 +32760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
32580
32760
|
exports: [],
|
|
32581
32761
|
declarations: [],
|
|
32582
32762
|
providers: [
|
|
32763
|
+
{ provide: AXP_ENTITY_VIEW_ACCESS, useExisting: AXPEntityDetailsAccessService },
|
|
32583
32764
|
AXP_ENTITY_DETAILS_VIEW_ADAPTER_LOADER_PROVIDER,
|
|
32584
32765
|
{
|
|
32585
32766
|
provide: AXP_REPEATER_ENTITY_BY_KEY_LOOKUP,
|
|
@@ -32692,7 +32873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
32692
32873
|
},
|
|
32693
32874
|
{
|
|
32694
32875
|
key: 'Entity:Bulk',
|
|
32695
|
-
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-
|
|
32876
|
+
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-XZc1xZcD.mjs').then((c) => c.AXPBulkEntityCommand),
|
|
32696
32877
|
},
|
|
32697
32878
|
{
|
|
32698
32879
|
key: 'Entity:OpenList',
|
|
@@ -33018,4 +33199,4 @@ function detectEntityChanges(oldObj, newObj) {
|
|
|
33018
33199
|
*/
|
|
33019
33200
|
|
|
33020
33201
|
export { AXPEntityListViewModelResolver as $, AXPEntityDefinitionRegistryService as A, AXPEntityCategoryWidgetViewComponent as B, AXPEntityCommandTriggerViewModel as C, AXPEntityCreateViewElementViewModel as D, AXPEntityCreateViewModelFactory as E, AXPEntityCreateViewSectionViewModel as F, AXPEntityDataProvider as G, AXPEntityDataProviderImpl as H, AXPEntityDataSelectorRowActionsService as I, AXPEntityDataSelectorService as J, AXPEntityDefinitionProviderWidget as K, AXPEntityDefinitionProviderWidgetEditComponent as L, AXPEntityDeletePerformService as M, AXPEntityDetailListViewModel as N, AXPEntityDetailPopoverComponent as O, AXPEntityDetailPopoverService as P, AXPEntityDetailViewModelFactory as Q, AXPEntityDetailViewModelResolver as R, AXPEntityEventDispatcherService as S, AXPEntityFormBuilderService as T, AXPEntityLifecycleHookKeys as U, AXPEntityListPersistenceModeDefault as V, AXPEntityListTableService as W, AXPEntityListToolbarService as X, AXPEntityListViewCardFieldViewModel as Y, AXPEntityListViewColumnViewModel as Z, AXPEntityListViewModelFactory as _, showOperationResultToast as a, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY as a$, AXPEntityListWidget as a0, AXPEntityListWidgetViewComponent as a1, AXPEntityMasterCreateViewModel as a2, AXPEntityMasterListCardSelectActionName as a3, AXPEntityMasterListViewModel as a4, AXPEntityMasterListViewQueryViewModel as a5, AXPEntityMasterSingleElementViewModel as a6, AXPEntityMasterSingleViewGroupViewModel as a7, AXPEntityMasterSingleViewModel as a8, AXPEntityMasterUpdateElementViewModel as a9, AXPLookupWidgetViewComponent as aA, AXPMiddlewareAbortError as aB, AXPMiddlewareEntityStorageService as aC, AXPMultiSourceDefinitionProviderContext as aD, AXPMultiSourceDefinitionProviderService as aE, AXPMultiSourceFederatedSearchService as aF, AXPMultiSourceSelectorComponent as aG, AXPMultiSourceSelectorService as aH, AXPMultiSourceSelectorWidget as aI, AXPMultiSourceSelectorWidgetColumnComponent as aJ, AXPMultiSourceSelectorWidgetEditComponent as aK, AXPMultiSourceSelectorWidgetViewComponent as aL, AXPMultiSourceType as aM, AXPOpenEntityDetailsCommand as aN, AXPOpenEntityListCommand as aO, AXPRelatedColumnEnrichmentService as aP, AXPRelatedColumnMetadataResolver as aQ, AXPSelectorStructureWidget as aR, AXPSelectorStructureWidgetColumnComponent as aS, AXPSelectorStructureWidgetEditComponent as aT, AXPSelectorStructureWidgetViewComponent as aU, AXPShowFileUploaderPopupCommand as aV, AXPTruncatedBreadcrumbComponent as aW, AXPUpdateEntityCommand as aX, AXPUpdateEntityStatusCommand as aY, AXPViewEntityDetailsCommand as aZ, AXP_APPEARANCE_SECTION_ORDER as a_, AXPEntityMasterUpdateViewModel as aa, AXPEntityMasterUpdateViewModelFactory as ab, AXPEntityMiddlewareSkipContext as ac, AXPEntityModule as ad, AXPEntityPreloadFiltersContainerComponent as ae, AXPEntityPreloadFiltersViewModel as af, AXPEntityPreloadFiltersViewModelResolver as ag, AXPEntityResolver as ah, AXPEntityRuntimeAccessorService as ai, AXPEntityService as aj, AXPEntityStorageService as ak, AXPEntityUpdateViewSectionViewModel as al, AXPFileListComponent as am, AXPFileUploaderLoadFilesQuery as an, AXPFileUploaderSaveFilesCommand as ao, AXPFileUploaderWidget as ap, AXPFileUploaderWidgetColumnComponent as aq, AXPFileUploaderWidgetEditComponent as ar, AXPFileUploaderWidgetService as as, AXPFileUploaderWidgetViewComponent as at, AXPGetEntityDetailsQuery as au, AXPLayoutOrderingConfigService as av, AXPLookupByKeyCacheService as aw, AXPLookupWidget as ax, AXPLookupWidgetColumnComponent as ay, AXPLookupWidgetEditComponent as az, buildSelectedIdsFilter as b, defaultSortPresetsMiddlewareProvider as b$, AXP_CLASSIFICATION_SECTION_ORDER as b0, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS as b1, AXP_CLIENT_LOCAL_PLUGIN_NAME as b2, AXP_DATA_SEEDER_TOKEN as b3, AXP_ENTITY_ACTION_PLUGIN as b4, AXP_ENTITY_CONFIG_TOKEN as b5, AXP_ENTITY_DEFINITION_LOADER as b6, AXP_ENTITY_MIDDLEWARE as b7, AXP_ENTITY_MODIFIER as b8, AXP_ENTITY_STORAGE_MIDDLEWARE as b9, axpShowFileUploaderPopupCommandDefinition as bA, axpUpdateEntityStatusCommandDefinition as bB, buildDataSourceTraceSnapshot as bC, canPersistEntityListState as bD, clientLocalPlugin as bE, cloneLayoutArrays as bF, columnOrderingMiddleware as bG, columnOrderingMiddlewareProvider as bH, columnWidthMiddleware as bI, columnWidthMiddlewareProvider as bJ, committedAttachments as bK, composeEntityMiddlewares as bL, composeEntityStorageMiddlewares as bM, computeEntityAggregates as bN, configureEntityListColumnsSettingsMigrateDrop as bO, configureEntityListColumnsSettingsVersion as bP, createColumnOrderingMiddlewareProvider as bQ, createEntityCardDisplayScope as bR, createEntityCardLogicScope as bS, createEntityMiddlewareContext as bT, createEntityStorageContext as bU, createLayoutOrderingMiddlewareProvider as bV, defaultCardLayoutMiddleware as bW, defaultCardLayoutMiddlewareProvider as bX, defaultMultiLanguageMiddleware as bY, defaultMultiLanguageMiddlewareProvider as bZ, defaultSortPresetsMiddleware as b_, AXP_LOOKUP_FILTER_DEFAULT_OPERATOR as ba, AXP_MULTI_SOURCE_DEFINITION_PROVIDER as bb, DEFAULT_COLUMN_ORDER as bc, DEFAULT_PAIR_SPAN_RULES as bd, DEFAULT_PROPERTY_ORDER as be, DEFAULT_SECTION_ORDER as bf, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE as bg, ENTITY_LIST_LAYOUT_META as bh, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY as bi, ENTITY_MASTER_LIST_TRACE_NS as bj, EntityBuilder as bk, EntityDataAccessor as bl, GALLERY_PAGE_COMPONENT_KEY as bm, TREE_CHILDREN_QUERY_TAKE as bn, actionExists as bo, applyDataSourcePagingWithoutLoad as bp, attachmentFieldCount as bq, attachmentNeedsHydration as br, attachmentsPlugin as bs, attachmentsSemanticallyEqual as bt, axpBuildEntityListPageContextSnapshot as bu, axpCreateEntityAiToolInputDefaults as bv, axpCreateEntityCommandDefinition as bw, axpDeleteEntityCommandDefinition as bx, axpOpenEntityListCommandDefinition as by, axpRunEntityListPageContextAction as bz, ATTACHMENTS_PAGE_COMPONENT_KEY as c, provideLocalEntityCatalog as c$, detectEntityChanges as c0, dispatchEntityModifiedSideEffects as c1, ensureHierarchicalRootFilter as c2, ensureLayoutPropertyView as c3, ensureLayoutSection as c4, ensureListActions as c5, entityCreateBridgeMiddleware as c6, entityDeleteBridgeMiddleware as c7, entityGetOneBridgeMiddleware as c8, entityListInstanceCurrentViewPath as c9, hasFileUploaderTitleOrDescriptionFields as cA, hydrateAttachmentFieldToFileList as cB, isAXPMiddlewareAbortError as cC, isAttachmentFieldPresentOnRow as cD, isAttachmentListEntry as cE, isAttachmentStorageRef as cF, isCategoryEntity as cG, isCategoryFilter as cH, isFileListItem as cI, isFileUploaderEditDialogAuto as cJ, isLegacyEntityDataSelectorOptions as cK, layoutOrderingMiddlewareFactory as cL, layoutOrderingMiddlewareProvider as cM, mapEntityStorageErrorToCommandResult as cN, mapLegacyEntityDataSelectorOptions as cO, mergeEntityListViewAndPersistedFilters as cP, normalizeEntityCardHeaderDisplayValue as cQ, normalizeEntityDataSelectorColumnSpecs as cR, normalizeEntityDataSelectorOptions as cS, normalizeEntityFieldToFileList as cT, normalizeEntityListPersistenceMode as cU, normalizeListPaging as cV, prefetchClientLocalRelated as cW, provideEntity as cX, provideEntityMiddlewareBridge as cY, provideEntityRealtimeHandlers as cZ, provideEntityStorageMiddlewareBridge as c_, entityListInstanceFilterPath as ca, entityListStylingRulesPath as cb, entityQueryBridgeMiddleware as cc, entityStorageCreateBridgeMiddleware as cd, entityStorageDeleteBridgeMiddleware as ce, entityStorageGetOneBridgeMiddleware as cf, entityStorageQueryBridgeMiddleware as cg, entityStorageUpdateBridgeMiddleware as ch, entityUpdateBridgeMiddleware as ci, eventDispatchMiddleware as cj, filterEntityMiddlewares as ck, filterEntityStorageMiddlewares as cl, filterSortEntityRows as cm, filterTouchesParentKey as cn, findEntityListRowDataInTree as co, fingerprintAttachmentItem as cp, fingerprintAttachments as cq, fireEntityLifecycleHook as cr, formatLookupItemDisplay as cs, formatLookupItemDisplayAsync as ct, galleryPlugin as cu, getDataSourcePageIndex as cv, getEntityListColumnsSettingsMigrateDrop as cw, getEntityListColumnsSettingsVersion as cx, getEntityListRowId as cy, getMasterInterfacePropertySortKey as cz, AXMEntityCrudService as d, readPersistedEntityListInstanceCurrentView as d0, readPersistedEntityListInstanceFilters as d1, readPersistedEntityListStylingRules as d2, resetPagingForTreeChildrenLoad as d3, resolveAttachmentFieldPath as d4, resolveEntityCardBadgeColorValue as d5, resolveEntityCardHeaderValue as d6, resolveEntityMasterFieldStylingClass as d7, resolveEntityMasterRecordStylingClass as d8, resolveEntityMasterStylingClass as d9, resolveEntityPluginDetailPageOrder as da, resolveFileUploaderEditDialog as db, resolveFileUploaderEntityScope as dc, resolveLookupDisplayField as dd, resolveLookupDisplayTemplate as de, resolveLookupEntityCacheKey as df, resolveLookupEntityKey as dg, resolveMasterInterfacePropertyOrder as dh, restoreEntityListExpandedRows as di, runEntityMiddlewarePipeline as dj, runEntityQuery as dk, runEntityStorageMiddlewarePipeline as dl, searchResultDescriptionMiddleware as dm, searchResultDescriptionMiddlewareProvider as dn, shouldLoadEntityListStateFromStorage as dp, shouldResetEntityListStateOnRouteEntry as dq, traceEntityMasterList as dr, AXMEntityCrudServiceImpl as e, AXPCategoryTreeService as f, AXPClientLocalPluginModule as g, AXPCreateEntityCommand as h, AXPDataSeederService as i, AXPDeleteEntityCommand as j, AXPDomainQueryEntityDefinitionLoader as k, AXPEditFileUploaderCommand as l, AXPEntityBulkPatchPerformService as m, newBulkExecutionId as n, AXPEntityCardComponent as o, persistedAttachments as p, AXPEntityCardFieldsResolver as q, resolveBulkFailureBody as r, settleAfterLoadingDialog as s, AXPEntityCardSelectActionName as t, AXPEntityCardSkeletonComponent as u, AXPEntityCategoryTreeSelectorComponent as v, watchBulkProgress as w, AXPEntityCategoryWidget as x, AXPEntityCategoryWidgetColumnComponent as y, AXPEntityCategoryWidgetEditComponent as z };
|
|
33021
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-
|
|
33202
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CXziIWed.mjs.map
|