@acorex/platform 20.3.0-next.22 → 20.3.0-next.24

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 CHANGED
@@ -1153,20 +1153,262 @@ interface AXPMenuProvider {
1153
1153
  declare const AXP_MENU_PROVIDER: InjectionToken<AXPMenuProvider[]>;
1154
1154
  declare class AXPMenuProviderService {
1155
1155
  private providers;
1156
+ private middlewareRegistry;
1156
1157
  private cache;
1157
1158
  private pendingInserts;
1158
1159
  private pendingRemovals;
1159
1160
  private pendingUpdates;
1160
1161
  private pendingAdditions;
1162
+ /**
1163
+ * Get menu items with middlewares applied (for end-user display)
1164
+ */
1161
1165
  items(): Promise<AXPMenuItem[]>;
1166
+ /**
1167
+ * Get raw menu items WITHOUT middleware applied (for management/editing)
1168
+ * Used by menu management pages to show original items before customization
1169
+ */
1170
+ rawItems(): Promise<AXPMenuItem[]>;
1171
+ /**
1172
+ * Clear the cache to force reload of menu items
1173
+ */
1174
+ clearCache(): void;
1175
+ /**
1176
+ * Apply middlewares in priority order using the enhanced context API
1177
+ */
1178
+ private applyMiddlewares;
1179
+ /**
1180
+ * Create provider context for menu providers
1181
+ */
1162
1182
  private createMenuProviderContext;
1163
1183
  private applyPendingOperations;
1164
1184
  private findItemWithParent;
1165
- clearCache(): void;
1166
1185
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuProviderService, never>;
1167
1186
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuProviderService>;
1168
1187
  }
1169
1188
 
1189
+ /**
1190
+ * Rich context API for manipulating menu items within middleware
1191
+ * Provides helper methods to find, update, remove, and add menu items easily
1192
+ */
1193
+ interface AXPMenuMiddlewareContext {
1194
+ /**
1195
+ * Get all menu items
1196
+ */
1197
+ readonly items: AXPMenuItem[];
1198
+ /**
1199
+ * Find menu item(s) by name or pattern
1200
+ */
1201
+ find(nameOrPattern: string | RegExp): AXPMenuItemFinder;
1202
+ /**
1203
+ * Find menu item by name (exact match)
1204
+ */
1205
+ findByName(name: string): AXPMenuItemFinder;
1206
+ /**
1207
+ * Find menu items by pattern (regex or wildcard)
1208
+ */
1209
+ findByPattern(pattern: string | RegExp): AXPMenuItemFinder[];
1210
+ /**
1211
+ * Add new menu items to root level
1212
+ */
1213
+ add(...items: AXPMenuItem[]): AXPMenuMiddlewareContext;
1214
+ /**
1215
+ * Remove menu items by predicate
1216
+ */
1217
+ remove(predicate: (item: AXPMenuItem) => boolean): AXPMenuMiddlewareContext;
1218
+ /**
1219
+ * Sort all menu items recursively by priority
1220
+ */
1221
+ sort(): AXPMenuMiddlewareContext;
1222
+ /**
1223
+ * Get the final menu items array
1224
+ */
1225
+ toArray(): AXPMenuItem[];
1226
+ }
1227
+ /**
1228
+ * Helper for finding and manipulating a specific menu item
1229
+ */
1230
+ interface AXPMenuItemFinder {
1231
+ /**
1232
+ * Get the found menu item (or undefined)
1233
+ */
1234
+ get(): AXPMenuItem | undefined;
1235
+ /**
1236
+ * Check if menu item exists
1237
+ */
1238
+ exists(): boolean;
1239
+ /**
1240
+ * Update menu item properties
1241
+ */
1242
+ update(updater: Partial<AXPMenuItem> | ((item: AXPMenuItem) => Partial<AXPMenuItem>)): AXPMenuItemFinder;
1243
+ /**
1244
+ * Remove the menu item
1245
+ */
1246
+ remove(): AXPMenuItemFinder;
1247
+ /**
1248
+ * Hide the menu item (removes it from the menu)
1249
+ */
1250
+ hide(): AXPMenuItemFinder;
1251
+ /**
1252
+ * Show the menu item (currently a no-op as items are visible by default)
1253
+ * Note: To truly implement show, we'd need to track removed items
1254
+ */
1255
+ show(): AXPMenuItemFinder;
1256
+ /**
1257
+ * Set priority
1258
+ */
1259
+ setPriority(priority: number): AXPMenuItemFinder;
1260
+ /**
1261
+ * Add children to this menu item
1262
+ */
1263
+ addChildren(...children: AXPMenuItem[]): AXPMenuItemFinder;
1264
+ /**
1265
+ * Remove children by predicate
1266
+ */
1267
+ removeChildren(predicate: (child: AXPMenuItem) => boolean): AXPMenuItemFinder;
1268
+ /**
1269
+ * Move menu item to a different parent
1270
+ */
1271
+ moveTo(parentName: string | null): AXPMenuItemFinder;
1272
+ /**
1273
+ * Insert menu items before this item
1274
+ */
1275
+ insertBefore(...items: AXPMenuItem[]): AXPMenuItemFinder;
1276
+ /**
1277
+ * Insert menu items after this item
1278
+ */
1279
+ insertAfter(...items: AXPMenuItem[]): AXPMenuItemFinder;
1280
+ }
1281
+ /**
1282
+ * Middleware that processes menu items after all providers have executed
1283
+ * Middlewares are executed in order based on their priority (higher priority = earlier execution)
1284
+ */
1285
+ interface AXPMenuMiddleware {
1286
+ /**
1287
+ * Optional priority for execution order (higher = earlier)
1288
+ * Default: 0
1289
+ */
1290
+ readonly priority?: number;
1291
+ /**
1292
+ * Optional name for debugging and identification
1293
+ */
1294
+ readonly name?: string;
1295
+ /**
1296
+ * Process menu items using the rich context API
1297
+ * @param context - The menu middleware context with helper methods
1298
+ * @returns Processed context or void (context is mutable)
1299
+ */
1300
+ process(context: AXPMenuMiddlewareContext): Promise<void | AXPMenuMiddlewareContext>;
1301
+ }
1302
+ /**
1303
+ * Provider definition for registering middleware via multi-provider
1304
+ */
1305
+ interface AXPMenuMiddlewareProvider {
1306
+ /**
1307
+ * The middleware instance
1308
+ */
1309
+ middleware: AXPMenuMiddleware;
1310
+ /**
1311
+ * Optional priority override
1312
+ */
1313
+ priority?: number;
1314
+ }
1315
+ /**
1316
+ * Injection token for menu middlewares (multi-provider)
1317
+ */
1318
+ declare const AXP_MENU_MIDDLEWARE: InjectionToken<AXPMenuMiddleware[]>;
1319
+
1320
+ /**
1321
+ * Creates a rich context for menu manipulation
1322
+ * Similar to entity modifier context pattern
1323
+ */
1324
+ declare function createMenuContext(items: AXPMenuItem[]): AXPMenuMiddlewareContext;
1325
+
1326
+ /**
1327
+ * Central service for managing menu middlewares with priority-based ordering
1328
+ * Similar to token registry pattern used in identifier-management
1329
+ */
1330
+ declare class AXPMenuMiddlewareRegistry {
1331
+ /**
1332
+ * Manually registered middlewares
1333
+ */
1334
+ private readonly manualMiddlewares;
1335
+ /**
1336
+ * Provider-based middlewares (multi-provider injection)
1337
+ */
1338
+ private readonly providerMiddlewares;
1339
+ /**
1340
+ * Manually register a middleware
1341
+ * @param middleware - The middleware to register
1342
+ */
1343
+ register(middleware: AXPMenuMiddleware): void;
1344
+ /**
1345
+ * Unregister a middleware by name
1346
+ * @param name - The name of the middleware to remove
1347
+ */
1348
+ unregister(name: string): void;
1349
+ /**
1350
+ * Get a specific middleware by name
1351
+ * @param name - The middleware name
1352
+ */
1353
+ get(name: string): AXPMenuMiddleware | undefined;
1354
+ /**
1355
+ * Get all middlewares sorted by priority (highest first)
1356
+ * Combines provider-based and manually registered middlewares
1357
+ */
1358
+ list(): AXPMenuMiddleware[];
1359
+ /**
1360
+ * Check if a middleware exists
1361
+ * @param name - The middleware name
1362
+ */
1363
+ exists(name: string): boolean;
1364
+ /**
1365
+ * Clear all manually registered middlewares
1366
+ * Provider-based middlewares are not affected
1367
+ */
1368
+ clear(): void;
1369
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuMiddlewareRegistry, never>;
1370
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuMiddlewareRegistry>;
1371
+ }
1372
+
1373
+ /**
1374
+ * Helper function to provide menu middlewares with proper DI setup
1375
+ * Similar to provideCommandMiddleware pattern
1376
+ *
1377
+ * @example
1378
+ * ```typescript
1379
+ * // In app.config.ts or module providers
1380
+ * export const appConfig: ApplicationConfig = {
1381
+ * providers: [
1382
+ * provideMenuMiddleware([
1383
+ * customizationMiddleware,
1384
+ * securityMiddleware,
1385
+ * loggingMiddleware
1386
+ * ])
1387
+ * ]
1388
+ * };
1389
+ * ```
1390
+ */
1391
+ declare function provideMenuMiddleware(middlewares: AXPMenuMiddleware[]): EnvironmentProviders;
1392
+ /**
1393
+ * Helper to create a class-based middleware with priority
1394
+ *
1395
+ * @example
1396
+ * ```typescript
1397
+ * const myMiddleware = createMenuMiddleware({
1398
+ * name: 'my-middleware',
1399
+ * priority: 100,
1400
+ * process: async (context) => {
1401
+ * context.find('dashboard').setPriority(1);
1402
+ * }
1403
+ * });
1404
+ * ```
1405
+ */
1406
+ declare function createMenuMiddleware(config: {
1407
+ name: string;
1408
+ priority?: number;
1409
+ process: (context: AXPMenuMiddlewareContext) => Promise<void>;
1410
+ }): AXPMenuMiddleware;
1411
+
1170
1412
  declare const AXPMenuService: i0.Type<{
1171
1413
  items: i0.Signal<AXPMenuItem[]>;
1172
1414
  selectedMenuItem: _ngrx_signals.DeepSignal<{
@@ -1634,5 +1876,5 @@ declare class AXMWorkflowErrorHandler implements AXPErrorHandler {
1634
1876
  static ɵprov: i0.ɵɵInjectableDeclaration<AXMWorkflowErrorHandler>;
1635
1877
  }
1636
1878
 
1637
- export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDialogConfirmAction, AXPEntityCommandScope, AXPEntityQueryType, AXPErrorHandlerRegistryService, AXPExportService, AXPFileStorageService, AXPFileStorageStatus, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPGlobalVariableDefinitionService, AXPGlobalVariableEvaluatorScopeProvider, AXPHomePageModule, AXPHomePageService, AXPLockService, AXPLogoComponent, AXPMenuProviderService, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRelationshipCardinality, AXPRelationshipKind, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingService, AXPStickyDirective, AXPToastAction, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_APP_VERSION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_GLOBAL_VARIABLE_DEFINITION_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_MENU_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, ENDS_WITH_OPER, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, STARTS_WITH_OPER, STRING_OPERATORS, configPlatform, createAllQueryView, createQueryView, getEntityInfo, provideDynamicHomePage };
1638
- export type { AXEntityPropertyWidget, AXPAggregate, AXPAppVersion, AXPAppVersionProvider, AXPApplication, AXPCategoryEntity, AXPCommandActionCallback, AXPCommandActionDisplay, AXPCommandActionLook, AXPCommandActionPriority, AXPCommandActionType, AXPCommonModuleConfigs, AXPCurrency, AXPDomToImageOptions, AXPEntity, AXPEntityAction, AXPEntityCommand, AXPEntityDetailListView, AXPEntityMasterCreateLayoutView, AXPEntityMasterLayoutView, AXPEntityMasterListView, AXPEntityMasterSingleLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityProperty, AXPEntityPropertyCreateView, AXPEntityPropertyGroup, AXPEntityPropertyLayoutConfig, AXPEntityPropertyUpdateView, AXPEntityPropertyView, AXPEntityQuery, AXPEntitySectionView, AXPEntityTableColumn, AXPEntityVersionHistory, AXPErrorHandler, AXPFileExtension, AXPFileManyStorageInfo, AXPFileStorageCreateRequest, AXPFileStorageFindRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileType, AXPFileTypeInfoProvider, AXPFilterOperator, AXPGeoLocation, AXPGlobalVariableDefinition, AXPGlobalVariableDefinitionProvider, AXPGlobalVariableDefinitionProviderToken, AXPGroupSearchResult, AXPHomePageDefinition, AXPLanguage, AXPLocaleProfile, AXPLockGetInfoRequest, AXPLockInfo, AXPLockRequest, AXPLockType, AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuItemCommand, AXPMenuItemWithParent, AXPMenuProvider, AXPMenuProviderContext, AXPMenuType, AXPModule, AXPPlatformConfigs, AXPQueryFilter, AXPQuerySort, AXPQueryView, AXPRelatedEntity, AXPRelationship, AXPRootConfigs, AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat, AXPSearchDefinitionProvider, AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchDisplayResultForSave, AXPSearchParentResult, AXPSearchProvider, AXPSearchResult, AXPSettingChangedEvent, AXPSettingDefaultValuesProvider, AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionProvider, AXPSettingDefinitionSection, AXPSettingServiceInterface, AXPSettingValue, AXPSettingValueProvider, AXPTimeZone, AXPUnLockRequest, AXPVersionChange, AXPVersionEntry, AXPVersionStream, CanonicalChange, CanonicalChangeOp, VersionedFileInfo };
1879
+ export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDialogConfirmAction, AXPEntityCommandScope, AXPEntityQueryType, AXPErrorHandlerRegistryService, AXPExportService, AXPFileStorageService, AXPFileStorageStatus, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPGlobalVariableDefinitionService, AXPGlobalVariableEvaluatorScopeProvider, AXPHomePageModule, AXPHomePageService, AXPLockService, AXPLogoComponent, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRelationshipCardinality, AXPRelationshipKind, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingService, AXPStickyDirective, AXPToastAction, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_APP_VERSION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_GLOBAL_VARIABLE_DEFINITION_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, ENDS_WITH_OPER, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, STARTS_WITH_OPER, STRING_OPERATORS, configPlatform, createAllQueryView, createMenuContext, createMenuMiddleware, createQueryView, getEntityInfo, provideDynamicHomePage, provideMenuMiddleware };
1880
+ export type { AXEntityPropertyWidget, AXPAggregate, AXPAppVersion, AXPAppVersionProvider, AXPApplication, AXPCategoryEntity, AXPCommandActionCallback, AXPCommandActionDisplay, AXPCommandActionLook, AXPCommandActionPriority, AXPCommandActionType, AXPCommonModuleConfigs, AXPCurrency, AXPDomToImageOptions, AXPEntity, AXPEntityAction, AXPEntityCommand, AXPEntityDetailListView, AXPEntityMasterCreateLayoutView, AXPEntityMasterLayoutView, AXPEntityMasterListView, AXPEntityMasterSingleLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityProperty, AXPEntityPropertyCreateView, AXPEntityPropertyGroup, AXPEntityPropertyLayoutConfig, AXPEntityPropertyUpdateView, AXPEntityPropertyView, AXPEntityQuery, AXPEntitySectionView, AXPEntityTableColumn, AXPEntityVersionHistory, AXPErrorHandler, AXPFileExtension, AXPFileManyStorageInfo, AXPFileStorageCreateRequest, AXPFileStorageFindRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileType, AXPFileTypeInfoProvider, AXPFilterOperator, AXPGeoLocation, AXPGlobalVariableDefinition, AXPGlobalVariableDefinitionProvider, AXPGlobalVariableDefinitionProviderToken, AXPGroupSearchResult, AXPHomePageDefinition, AXPLanguage, AXPLocaleProfile, AXPLockGetInfoRequest, AXPLockInfo, AXPLockRequest, AXPLockType, AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuItemCommand, AXPMenuItemFinder, AXPMenuItemWithParent, AXPMenuMiddleware, AXPMenuMiddlewareContext, AXPMenuMiddlewareProvider, AXPMenuProvider, AXPMenuProviderContext, AXPMenuType, AXPModule, AXPPlatformConfigs, AXPQueryFilter, AXPQuerySort, AXPQueryView, AXPRelatedEntity, AXPRelationship, AXPRootConfigs, AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat, AXPSearchDefinitionProvider, AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchDisplayResultForSave, AXPSearchParentResult, AXPSearchProvider, AXPSearchResult, AXPSettingChangedEvent, AXPSettingDefaultValuesProvider, AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionProvider, AXPSettingDefinitionSection, AXPSettingServiceInterface, AXPSettingValue, AXPSettingValueProvider, AXPTimeZone, AXPUnLockRequest, AXPVersionChange, AXPVersionEntry, AXPVersionStream, CanonicalChange, CanonicalChangeOp, VersionedFileInfo };