@acorex/platform 20.4.2 → 20.5.0-next.0

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
@@ -1268,7 +1268,7 @@ interface AXPMenuItemFinder {
1268
1268
  /**
1269
1269
  * Move menu item to a different parent
1270
1270
  */
1271
- moveTo(parentName: string | null): AXPMenuItemFinder;
1271
+ moveTo(parentName: string | null | undefined): AXPMenuItemFinder;
1272
1272
  /**
1273
1273
  * Insert menu items before this item
1274
1274
  */
package/core/index.d.ts CHANGED
@@ -1,84 +1,10 @@
1
- import * as _ngrx_signals from '@ngrx/signals';
2
1
  import * as i0 from '@angular/core';
3
2
  import { Type, InjectionToken, OnInit, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges, ViewContainerRef, OnDestroy, PipeTransform } from '@angular/core';
4
3
  import { AXStyleColorType, AXDataSource, AXDataSourceSortOption, AXDataSourceFilterOption, AXDataSourceQuery, AXDataSourceCallbackResult } from '@acorex/cdk/common';
4
+ import * as _ngrx_signals from '@ngrx/signals';
5
5
  import { Observable } from 'rxjs';
6
6
  import { NavigationExtras } from '@angular/router';
7
7
 
8
- type AXPContextState = 'initiated' | 'restored' | 'changed' | 'patch';
9
- type AXPContextData = {
10
- [key: string]: any;
11
- };
12
- declare class AXPContextChangeEvent {
13
- oldValue?: any;
14
- newValue?: any;
15
- path?: string;
16
- state: AXPContextState;
17
- data: any;
18
- }
19
- declare const AXPContextStore: i0.Type<{
20
- data: i0.Signal<AXPContextData>;
21
- state: i0.Signal<AXPContextState>;
22
- initialSnapshot: i0.Signal<{}>;
23
- previousSnapshot: i0.Signal<{}>;
24
- lastChange: _ngrx_signals.DeepSignal<AXPContextChangeEvent>;
25
- isChanged: i0.Signal<boolean>;
26
- isReset: i0.Signal<boolean>;
27
- isInitiated: i0.Signal<boolean>;
28
- isEmpty: i0.Signal<boolean>;
29
- isDirty: i0.Signal<boolean>;
30
- snapshot: i0.Signal<AXPContextData>;
31
- initial: i0.Signal<{}>;
32
- previous: i0.Signal<{}>;
33
- changeEvent: i0.Signal<AXPContextChangeEvent>;
34
- update: (path: string, value: any) => void;
35
- patch: (context: {}) => void;
36
- reset: () => void;
37
- set: (initialData: any) => void;
38
- getValue: (path: string) => any;
39
- } & _ngrx_signals.StateSource<{
40
- data: AXPContextData;
41
- state: AXPContextState;
42
- initialSnapshot: {};
43
- previousSnapshot: {};
44
- lastChange: AXPContextChangeEvent;
45
- }>>;
46
-
47
- declare class AXPDataGenerator {
48
- static uuid(): string;
49
- static number(max: number): number;
50
- static number(min: number, max: number): number;
51
- static date(): Date;
52
- static date(start: Date): Date;
53
- static date(start: Date, end: Date): Date;
54
- static array<T>(length: number | undefined, generator: () => T): T[];
55
- static pick<T>(items: T[]): T;
56
- static pick<T>(items: T[], count: number): T[];
57
- static string(length?: number): string;
58
- static boolean(): boolean;
59
- static item<T>(array?: T[]): T | undefined;
60
- static color(format?: 'hsl' | 'rgb' | 'hex'): string;
61
- private static hslToRgb;
62
- static alphanumeric(length?: number): string;
63
- static alphabet(length?: number): string;
64
- static phone(): string;
65
- static firstName(): string;
66
- static lastName(): string;
67
- static email(): string;
68
- static email(firstName: string, lastName: string): string;
69
- static country(): string;
70
- static city(): string;
71
- static state(): string;
72
- static address(): string;
73
- }
74
-
75
- type AXPValueTransformerFunction = (value: any) => any;
76
- type AXPValueTransformerFunctions = {
77
- getter?: AXPValueTransformerFunction;
78
- setter?: AXPValueTransformerFunction;
79
- };
80
- declare function objectKeyValueTransforms(keyName: string): AXPValueTransformerFunctions;
81
-
82
8
  /**
83
9
  * Additional suggested generic actions for future consideration:
84
10
  *
@@ -1382,6 +1308,231 @@ interface AXPMiddlewareErrorResponse {
1382
1308
  };
1383
1309
  }
1384
1310
 
1311
+ interface AXPActivityLogChange {
1312
+ type: AXPSystemActionType;
1313
+ description: string;
1314
+ }
1315
+ interface AXPActivityLog {
1316
+ id: string;
1317
+ title: string;
1318
+ date: Date;
1319
+ user: AXPApplicationUserReference;
1320
+ reference: AXPEntityReference;
1321
+ changeType: AXPSystemActionType.Create | AXPSystemActionType.Update | AXPSystemActionType.Delete;
1322
+ data: any;
1323
+ changes: AXPActivityLogChange[];
1324
+ }
1325
+
1326
+ declare abstract class AXPActivityLogProvider {
1327
+ abstract getHistory(refId: string, refType: string, options?: {
1328
+ from?: Date;
1329
+ to?: Date;
1330
+ limit?: number;
1331
+ offset?: number;
1332
+ }): Promise<AXPActivityLog[]>;
1333
+ abstract getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;
1334
+ }
1335
+
1336
+ declare const AXP_ACTIVITY_LOG_PROVIDER: InjectionToken<AXPActivityLogProvider[]>;
1337
+ declare class AXPActivityLogService {
1338
+ private providers;
1339
+ getHistory(refId: string, refType: string, options?: {
1340
+ from?: Date;
1341
+ to?: Date;
1342
+ limit?: number;
1343
+ offset?: number;
1344
+ }): Promise<AXPActivityLog[]>;
1345
+ getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;
1346
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPActivityLogService, never>;
1347
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPActivityLogService>;
1348
+ }
1349
+
1350
+ /**
1351
+ * Represents a color palette with a unique identifier and collection of colors
1352
+ */
1353
+ interface AXPColorPalette {
1354
+ /**
1355
+ * Unique identifier for the palette
1356
+ * @example 'material-design', 'brand-colors', 'pastel-theme'
1357
+ */
1358
+ name: string;
1359
+ /**
1360
+ * Display title for the palette
1361
+ * @example 'Material Design', 'Brand Colors', 'Pastel Theme'
1362
+ */
1363
+ title: string;
1364
+ /**
1365
+ * Array of color codes in any valid CSS color format
1366
+ * @example ['#FF6B6B', '#4ECDC4', 'rgb(255, 107, 107)']
1367
+ */
1368
+ colors: string[];
1369
+ /**
1370
+ * Optional description of the palette
1371
+ */
1372
+ description?: string;
1373
+ /**
1374
+ * Optional category for grouping palettes
1375
+ * @example 'brand', 'material', 'theme', 'custom'
1376
+ */
1377
+ category?: string;
1378
+ }
1379
+ /**
1380
+ * Options for filtering color palettes
1381
+ */
1382
+ interface AXPColorPaletteFilterOptions {
1383
+ category?: string;
1384
+ search?: string;
1385
+ }
1386
+
1387
+ /**
1388
+ * Abstract class for color palette providers
1389
+ * Implement this to provide palettes from different sources (system, app, module, etc.)
1390
+ */
1391
+ declare abstract class AXPColorPaletteProvider {
1392
+ /**
1393
+ * Unique name for this provider (e.g., 'system', 'app', 'module')
1394
+ */
1395
+ abstract name: string;
1396
+ /**
1397
+ * Provide color palettes from this source
1398
+ * @returns Promise of palettes
1399
+ */
1400
+ abstract provide(): Promise<AXPColorPalette[]>;
1401
+ }
1402
+ /**
1403
+ * Injection token for color palette providers
1404
+ * Use this to register multiple palette providers
1405
+ */
1406
+ declare const AXP_COLOR_PALETTE_PROVIDER: InjectionToken<AXPColorPaletteProvider[]>;
1407
+
1408
+ /**
1409
+ * Service for managing color palettes from multiple providers
1410
+ * Aggregates palettes from all registered providers
1411
+ */
1412
+ declare class AXPColorPaletteService {
1413
+ private providers;
1414
+ private cache;
1415
+ /**
1416
+ * Get all palettes from all providers
1417
+ * @param options Filter options
1418
+ * @returns Promise of palettes
1419
+ */
1420
+ getPalettes(options?: AXPColorPaletteFilterOptions): Promise<AXPColorPalette[]>;
1421
+ /**
1422
+ * Get a palette by name
1423
+ * @param name The unique name of the palette
1424
+ * @returns Promise of palette or undefined if not found
1425
+ */
1426
+ getPalette(name: string): Promise<AXPColorPalette | undefined>;
1427
+ /**
1428
+ * Get palettes by category
1429
+ * @param category The category to filter by
1430
+ * @returns Promise of palettes in the specified category
1431
+ */
1432
+ getByCategory(category: string): Promise<AXPColorPalette[]>;
1433
+ /**
1434
+ * Check if a palette exists
1435
+ * @param name The unique name of the palette
1436
+ * @returns Promise of true if the palette exists
1437
+ */
1438
+ has(name: string): Promise<boolean>;
1439
+ /**
1440
+ * Reload palettes from all providers
1441
+ */
1442
+ reload(): Promise<void>;
1443
+ /**
1444
+ * Load palettes from all providers
1445
+ */
1446
+ private loadPalettes;
1447
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPColorPaletteService, never>;
1448
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPColorPaletteService>;
1449
+ }
1450
+
1451
+ /**
1452
+ * Default system color palette provider
1453
+ * Provides built-in color palettes
1454
+ */
1455
+ declare class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {
1456
+ name: string;
1457
+ provide(): Promise<AXPColorPalette[]>;
1458
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDefaultColorPalettesProvider, never>;
1459
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDefaultColorPalettesProvider>;
1460
+ }
1461
+
1462
+ type AXPContextState = 'initiated' | 'restored' | 'changed' | 'patch';
1463
+ type AXPContextData = {
1464
+ [key: string]: any;
1465
+ };
1466
+ declare class AXPContextChangeEvent {
1467
+ oldValue?: any;
1468
+ newValue?: any;
1469
+ path?: string;
1470
+ state: AXPContextState;
1471
+ data: any;
1472
+ }
1473
+ declare const AXPContextStore: i0.Type<{
1474
+ data: i0.Signal<AXPContextData>;
1475
+ state: i0.Signal<AXPContextState>;
1476
+ initialSnapshot: i0.Signal<{}>;
1477
+ previousSnapshot: i0.Signal<{}>;
1478
+ lastChange: _ngrx_signals.DeepSignal<AXPContextChangeEvent>;
1479
+ isChanged: i0.Signal<boolean>;
1480
+ isReset: i0.Signal<boolean>;
1481
+ isInitiated: i0.Signal<boolean>;
1482
+ isEmpty: i0.Signal<boolean>;
1483
+ isDirty: i0.Signal<boolean>;
1484
+ snapshot: i0.Signal<AXPContextData>;
1485
+ initial: i0.Signal<{}>;
1486
+ previous: i0.Signal<{}>;
1487
+ changeEvent: i0.Signal<AXPContextChangeEvent>;
1488
+ update: (path: string, value: any) => void;
1489
+ patch: (context: {}) => void;
1490
+ reset: () => void;
1491
+ set: (initialData: any) => void;
1492
+ getValue: (path: string) => any;
1493
+ } & _ngrx_signals.StateSource<{
1494
+ data: AXPContextData;
1495
+ state: AXPContextState;
1496
+ initialSnapshot: {};
1497
+ previousSnapshot: {};
1498
+ lastChange: AXPContextChangeEvent;
1499
+ }>>;
1500
+
1501
+ declare class AXPDataGenerator {
1502
+ static uuid(): string;
1503
+ static number(max: number): number;
1504
+ static number(min: number, max: number): number;
1505
+ static date(): Date;
1506
+ static date(start: Date): Date;
1507
+ static date(start: Date, end: Date): Date;
1508
+ static array<T>(length: number | undefined, generator: () => T): T[];
1509
+ static pick<T>(items: T[]): T;
1510
+ static pick<T>(items: T[], count: number): T[];
1511
+ static string(length?: number): string;
1512
+ static boolean(): boolean;
1513
+ static item<T>(array?: T[]): T | undefined;
1514
+ static color(format?: 'hsl' | 'rgb' | 'hex'): string;
1515
+ private static hslToRgb;
1516
+ static alphanumeric(length?: number): string;
1517
+ static alphabet(length?: number): string;
1518
+ static phone(): string;
1519
+ static firstName(): string;
1520
+ static lastName(): string;
1521
+ static email(): string;
1522
+ static email(firstName: string, lastName: string): string;
1523
+ static country(): string;
1524
+ static city(): string;
1525
+ static state(): string;
1526
+ static address(): string;
1527
+ }
1528
+
1529
+ type AXPValueTransformerFunction = (value: any) => any;
1530
+ type AXPValueTransformerFunctions = {
1531
+ getter?: AXPValueTransformerFunction;
1532
+ setter?: AXPValueTransformerFunction;
1533
+ };
1534
+ declare function objectKeyValueTransforms(keyName: string): AXPValueTransformerFunctions;
1535
+
1385
1536
  interface AXPDataSourceDataFieldDefinition {
1386
1537
  name: string;
1387
1538
  title: string;
@@ -1467,6 +1618,60 @@ declare class AXPContentCheckerDirective {
1467
1618
  static ɵdir: i0.ɵɵDirectiveDeclaration<AXPContentCheckerDirective, "[axp-content-checker]", ["checker"], {}, {}, never, never, true, never>;
1468
1619
  }
1469
1620
 
1621
+ type AXPDistributedEventListenerProviderToken<T> = AXPDistributedEventListenerProvider<T> | Promise<AXPDistributedEventListenerProvider<T>>;
1622
+ declare const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER: InjectionToken<AXPDistributedEventListenerProviderToken<any>[]>;
1623
+ interface AXPDistributedEventListenerProvider<TInput = any, TOutput = void> {
1624
+ key: string;
1625
+ execute(data: TInput): Promise<TOutput> | TOutput;
1626
+ priority?: number;
1627
+ }
1628
+
1629
+ declare class AXPDistributedEventListenerService {
1630
+ private readonly listenerProviders;
1631
+ private readonly injector;
1632
+ /** Cache for listeners by key. */
1633
+ private listenersByKey;
1634
+ /** Flag to track if providers have been loaded */
1635
+ private providersLoaded;
1636
+ /**
1637
+ * Dispatches an event to all registered listeners for the given key.
1638
+ * @param key The event key.
1639
+ * @param data The event data to pass to listeners.
1640
+ */
1641
+ dispatch(key: string, data?: any): Promise<void>;
1642
+ /**
1643
+ * Dispatch with async response (first matching provider, with retry/timeout)
1644
+ */
1645
+ dispatchAsync<T, R>(key: string, data: T, options?: {
1646
+ timeout: number;
1647
+ retries: number;
1648
+ retryDelay: number;
1649
+ }): Promise<R>;
1650
+ /**
1651
+ * Resolve all providers (handle both direct provider and Promise<provider>)
1652
+ */
1653
+ private resolveProviders;
1654
+ /**
1655
+ * Returns all listeners for a specific event key.
1656
+ * @param key The event key.
1657
+ * @returns Array of listeners for the key.
1658
+ */
1659
+ getListeners(key: string): Promise<AXPDistributedEventListenerProvider<any>[]>;
1660
+ /**
1661
+ * Returns all registered event keys.
1662
+ * @returns Array of all event keys that have listeners.
1663
+ */
1664
+ getRegisteredKeys(): Promise<string[]>;
1665
+ /**
1666
+ * Ensures that all providers have been loaded and cached.
1667
+ */
1668
+ private ensureProvidersLoaded;
1669
+ /** Clears the listeners cache and forces reload on next access. */
1670
+ clearListenersCache(): void;
1671
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDistributedEventListenerService, never>;
1672
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDistributedEventListenerService>;
1673
+ }
1674
+
1470
1675
  declare class AXPBroadcastEventService implements OnDestroy {
1471
1676
  private channel;
1472
1677
  private eventSubjects;
@@ -1547,6 +1752,29 @@ declare class AXPExpressionEvaluatorScopeProviderService {
1547
1752
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPExpressionEvaluatorScopeProviderService>;
1548
1753
  }
1549
1754
 
1755
+ declare class AXPHookService {
1756
+ private readonly listenerProviders;
1757
+ private readonly injector;
1758
+ /**
1759
+ * Resolve all providers (handle both direct providers and Promise<provider>)
1760
+ */
1761
+ private resolveProviders;
1762
+ /**
1763
+ * Fire sync hooks (fire-and-forget).
1764
+ * All providers with the given key will be executed.
1765
+ * Execution is not awaited.
1766
+ */
1767
+ fire<T>(key: string, data: T): void;
1768
+ /**
1769
+ * Run async hooks sequentially (waterfall).
1770
+ * The output of each hook is passed as input to the next hook.
1771
+ * Returns the final merged data after all hooks are executed.
1772
+ */
1773
+ runAsync<T>(key: string, initialData: T): Promise<T>;
1774
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPHookService, never>;
1775
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPHookService>;
1776
+ }
1777
+
1550
1778
  interface AXPStartUpTask {
1551
1779
  name: string;
1552
1780
  statusText: string;
@@ -1564,6 +1792,106 @@ declare class AXPAppStartUpService {
1564
1792
  }
1565
1793
  declare const AXPAppStartUpProvider: i0.EnvironmentProviders;
1566
1794
 
1795
+ /**
1796
+ * Represents a tag with text, color, and metadata
1797
+ */
1798
+ interface AXPTag {
1799
+ id?: string;
1800
+ title: string;
1801
+ color: string;
1802
+ description?: string;
1803
+ scope?: 'system' | 'tenant' | 'user';
1804
+ }
1805
+ /**
1806
+ * Options for filtering tags
1807
+ */
1808
+ interface AXPTagFilterOptions {
1809
+ scope?: ('system' | 'tenant' | 'user')[];
1810
+ search?: string;
1811
+ }
1812
+
1813
+ /**
1814
+ * Abstract class for tag providers
1815
+ * Implement this to provide tags from different sources (system, tenant, user, etc.)
1816
+ */
1817
+ declare abstract class AXPTagProvider {
1818
+ /**
1819
+ * Unique name for this provider (e.g., 'system', 'tenant', 'user')
1820
+ */
1821
+ abstract name: string;
1822
+ /**
1823
+ * Provide tags from this source
1824
+ * @returns Promise of tags
1825
+ */
1826
+ abstract provide(): Promise<AXPTag[]>;
1827
+ /**
1828
+ * Create a new tag (optional - not all providers support creation)
1829
+ * @param tag Tag to create
1830
+ * @returns Created tag with id
1831
+ */
1832
+ create?(tag: Omit<AXPTag, 'id'>): Promise<AXPTag>;
1833
+ /**
1834
+ * Update an existing tag (optional)
1835
+ * @param tag Tag to update
1836
+ * @returns Updated tag
1837
+ */
1838
+ update?(tag: AXPTag): Promise<AXPTag>;
1839
+ /**
1840
+ * Delete a tag (optional)
1841
+ * @param id Tag id to delete
1842
+ */
1843
+ delete?(id: string): Promise<void>;
1844
+ }
1845
+ /**
1846
+ * Injection token for tag providers
1847
+ * Use this to register multiple tag providers
1848
+ */
1849
+ declare const AXP_TAG_PROVIDER: InjectionToken<AXPTagProvider[]>;
1850
+
1851
+ /**
1852
+ * Service for managing tags from multiple providers
1853
+ * Aggregates tags from all registered providers
1854
+ */
1855
+ declare class AXPTagService {
1856
+ private providers;
1857
+ private cache;
1858
+ /**
1859
+ * Get all tags from all providers
1860
+ * @param options Filter options
1861
+ * @returns Promise of tags
1862
+ */
1863
+ getTags(options?: AXPTagFilterOptions): Promise<AXPTag[]>;
1864
+ /**
1865
+ * Create a new tag using the appropriate provider
1866
+ * @param tag Tag to create
1867
+ * @param providerName Provider to use (defaults to first writable provider)
1868
+ * @returns Created tag
1869
+ */
1870
+ createTag(tag: Omit<AXPTag, 'id'>, providerName?: string): Promise<AXPTag>;
1871
+ /**
1872
+ * Update an existing tag
1873
+ * @param tag Tag to update
1874
+ * @returns Updated tag
1875
+ */
1876
+ updateTag(tag: AXPTag): Promise<AXPTag>;
1877
+ /**
1878
+ * Delete a tag
1879
+ * @param tagId Tag id to delete
1880
+ * @param scope Tag scope
1881
+ */
1882
+ deleteTag(tagId: string, scope: string): Promise<void>;
1883
+ /**
1884
+ * Reload tags from all providers
1885
+ */
1886
+ reload(): Promise<void>;
1887
+ /**
1888
+ * Load tags from all providers
1889
+ */
1890
+ private loadTags;
1891
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTagService, never>;
1892
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTagService>;
1893
+ }
1894
+
1567
1895
  declare class AXPCountdownPipe implements PipeTransform {
1568
1896
  private calendarService;
1569
1897
  private countdownSignal;
@@ -1647,121 +1975,5 @@ declare class AXHighlightService {
1647
1975
 
1648
1976
  declare function extractTextFromHtml(value: string): string;
1649
1977
 
1650
- interface AXPActivityLogChange {
1651
- type: AXPSystemActionType;
1652
- description: string;
1653
- }
1654
- interface AXPActivityLog {
1655
- id: string;
1656
- title: string;
1657
- date: Date;
1658
- user: AXPApplicationUserReference;
1659
- reference: AXPEntityReference;
1660
- changeType: AXPSystemActionType.Create | AXPSystemActionType.Update | AXPSystemActionType.Delete;
1661
- data: any;
1662
- changes: AXPActivityLogChange[];
1663
- }
1664
-
1665
- declare abstract class AXPActivityLogProvider {
1666
- abstract getHistory(refId: string, refType: string, options?: {
1667
- from?: Date;
1668
- to?: Date;
1669
- limit?: number;
1670
- offset?: number;
1671
- }): Promise<AXPActivityLog[]>;
1672
- abstract getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;
1673
- }
1674
-
1675
- declare const AXP_ACTIVITY_LOG_PROVIDER: InjectionToken<AXPActivityLogProvider[]>;
1676
- declare class AXPActivityLogService {
1677
- private providers;
1678
- getHistory(refId: string, refType: string, options?: {
1679
- from?: Date;
1680
- to?: Date;
1681
- limit?: number;
1682
- offset?: number;
1683
- }): Promise<AXPActivityLog[]>;
1684
- getHistoryByIds(refId: string, refType: string, ids: string[]): Promise<AXPActivityLog[]>;
1685
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPActivityLogService, never>;
1686
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPActivityLogService>;
1687
- }
1688
-
1689
- type AXPDistributedEventListenerProviderToken<T> = AXPDistributedEventListenerProvider<T> | Promise<AXPDistributedEventListenerProvider<T>>;
1690
- declare const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER: InjectionToken<AXPDistributedEventListenerProviderToken<any>[]>;
1691
- interface AXPDistributedEventListenerProvider<TInput = any, TOutput = void> {
1692
- key: string;
1693
- execute(data: TInput): Promise<TOutput> | TOutput;
1694
- priority?: number;
1695
- }
1696
-
1697
- declare class AXPDistributedEventListenerService {
1698
- private readonly listenerProviders;
1699
- private readonly injector;
1700
- /** Cache for listeners by key. */
1701
- private listenersByKey;
1702
- /** Flag to track if providers have been loaded */
1703
- private providersLoaded;
1704
- /**
1705
- * Dispatches an event to all registered listeners for the given key.
1706
- * @param key The event key.
1707
- * @param data The event data to pass to listeners.
1708
- */
1709
- dispatch(key: string, data?: any): Promise<void>;
1710
- /**
1711
- * Dispatch with async response (first matching provider, with retry/timeout)
1712
- */
1713
- dispatchAsync<T, R>(key: string, data: T, options?: {
1714
- timeout: number;
1715
- retries: number;
1716
- retryDelay: number;
1717
- }): Promise<R>;
1718
- /**
1719
- * Resolve all providers (handle both direct provider and Promise<provider>)
1720
- */
1721
- private resolveProviders;
1722
- /**
1723
- * Returns all listeners for a specific event key.
1724
- * @param key The event key.
1725
- * @returns Array of listeners for the key.
1726
- */
1727
- getListeners(key: string): Promise<AXPDistributedEventListenerProvider<any>[]>;
1728
- /**
1729
- * Returns all registered event keys.
1730
- * @returns Array of all event keys that have listeners.
1731
- */
1732
- getRegisteredKeys(): Promise<string[]>;
1733
- /**
1734
- * Ensures that all providers have been loaded and cached.
1735
- */
1736
- private ensureProvidersLoaded;
1737
- /** Clears the listeners cache and forces reload on next access. */
1738
- clearListenersCache(): void;
1739
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPDistributedEventListenerService, never>;
1740
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPDistributedEventListenerService>;
1741
- }
1742
-
1743
- declare class AXPHookService {
1744
- private readonly listenerProviders;
1745
- private readonly injector;
1746
- /**
1747
- * Resolve all providers (handle both direct providers and Promise<provider>)
1748
- */
1749
- private resolveProviders;
1750
- /**
1751
- * Fire sync hooks (fire-and-forget).
1752
- * All providers with the given key will be executed.
1753
- * Execution is not awaited.
1754
- */
1755
- fire<T>(key: string, data: T): void;
1756
- /**
1757
- * Run async hooks sequentially (waterfall).
1758
- * The output of each hook is passed as input to the next hook.
1759
- * Returns the final merged data after all hooks are executed.
1760
- */
1761
- runAsync<T>(key: string, initialData: T): Promise<T>;
1762
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPHookService, never>;
1763
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPHookService>;
1764
- }
1765
-
1766
- export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPComponentLogoConfig, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPGridLayoutDirective, AXPHookService, AXPImageUrlLogoConfig, AXPPlatformScope, AXPSystemActionType, AXPSystemActions, AXP_ACTIVITY_LOG_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, objectKeyValueTransforms, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart };
1767
- export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPColumnQuery, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataType, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterDefinition, AXPFilterLogic, AXPFilterOperation, AXPFilterQuery, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers };
1978
+ export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPComponentLogoConfig, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPGridLayoutDirective, AXPHookService, AXPImageUrlLogoConfig, AXPPlatformScope, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_TAG_PROVIDER, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, objectKeyValueTransforms, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart };
1979
+ export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataType, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterDefinition, AXPFilterLogic, AXPFilterOperation, AXPFilterQuery, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers };
@@ -1434,8 +1434,8 @@ function createMenuItemFinder(rootItems, targetName) {
1434
1434
  oldParent.items.splice(oldIndex, 1);
1435
1435
  }
1436
1436
  // Add to new parent
1437
- if (parentName === null) {
1438
- // Move to root
1437
+ if (!parentName || parentName === '') {
1438
+ // Move to root (handles null, undefined, and empty string)
1439
1439
  rootItems.push(item);
1440
1440
  }
1441
1441
  else {