@acorex-platform/framework-client 0.0.30 → 0.0.32

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.
Files changed (60) hide show
  1. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs → acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs} +23 -2
  2. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-framework-client-common.mjs +673 -110
  4. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-core.mjs +76 -7
  6. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +3 -6
  8. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +469 -73
  10. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CJemNxCu.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Bu8LLCVa.mjs} +3321 -2163
  12. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Bu8LLCVa.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DQXGk8nF.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-EU1dgVH_.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DQXGk8nF.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-EU1dgVH_.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DSLUUXfQ.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-DNBhGkO8.mjs} +43 -15
  16. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-DNBhGkO8.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-B3__csKW.mjs} +3 -3
  18. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-B3__csKW.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-uf51NO5m.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DtNSVjeF.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-uf51NO5m.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-DtNSVjeF.mjs.map} +1 -1
  21. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +37 -6
  23. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +148 -130
  25. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs} +3 -3
  27. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-D3pnOGmB.mjs} +3 -3
  29. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-D3pnOGmB.mjs.map} +1 -1
  30. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1127 -717
  31. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-realtime.mjs +70 -5
  33. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-runtime.mjs +121 -6
  35. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs} +51 -12
  37. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +770 -679
  39. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  40. package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs → acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs} +76 -1
  41. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +309 -29
  43. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  44. package/package.json +7 -7
  45. package/types/acorex-platform-framework-client-common.d.ts +137 -9
  46. package/types/acorex-platform-framework-client-core.d.ts +4 -1
  47. package/types/acorex-platform-framework-client-layout-components.d.ts +139 -20
  48. package/types/acorex-platform-framework-client-layout-entity.d.ts +515 -252
  49. package/types/acorex-platform-framework-client-layout-views.d.ts +48 -0
  50. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +2 -2
  51. package/types/acorex-platform-framework-client-layout-widgets.d.ts +130 -80
  52. package/types/acorex-platform-framework-client-realtime.d.ts +39 -2
  53. package/types/acorex-platform-framework-client-runtime.d.ts +56 -5
  54. package/types/acorex-platform-framework-client-themes-default.d.ts +144 -14
  55. package/types/acorex-platform-framework-client-themes-shared.d.ts +36 -3
  56. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CJemNxCu.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-DSLUUXfQ.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs.map +0 -1
@@ -23,6 +23,22 @@ interface AXPRealtimeInboxRefreshPayload {
23
23
  /** Optional hint so clients can apply deletes/archives without a fetch. */
24
24
  op?: 'created' | 'updated' | 'deleted' | 'archived';
25
25
  }
26
+ interface AXPRealtimeBackgroundJobTrayRefreshPayload {
27
+ jobId?: string;
28
+ /**
29
+ * Hint for client tray sync.
30
+ * Prefer applying locally; full list fetch only when the job is missing (e.g. `created`).
31
+ */
32
+ op?: 'created' | 'updated' | 'completed' | 'failed' | 'cancelled' | 'dismissed';
33
+ status?: string;
34
+ progress?: number;
35
+ statusText?: string;
36
+ currentStep?: string;
37
+ supportsProgress?: boolean;
38
+ keepInTrayAfterComplete?: boolean;
39
+ completedAt?: string;
40
+ trayDismissedAt?: string;
41
+ }
26
42
  interface AXPRealtimeConversationMessagePayload {
27
43
  conversationId: string;
28
44
  messageId: string;
@@ -49,6 +65,16 @@ interface AXPRealtimeConversationCallPayload {
49
65
  /** Optional call correlation id shared across invite → accept. */
50
66
  callId?: string;
51
67
  }
68
+ interface AXPRealtimeBulkProgressPayload {
69
+ executionId: string;
70
+ entity: string;
71
+ name: string;
72
+ current: number;
73
+ total: number;
74
+ succeeded: number;
75
+ failed: number;
76
+ status: 'running' | 'completed';
77
+ }
52
78
  interface AXPRealtimeEntityMutationPayload {
53
79
  entityName: string;
54
80
  operation: 'created' | 'updated' | 'deleted';
@@ -101,10 +127,12 @@ interface AXPRealtimeTopicHandlerRegistration {
101
127
  }
102
128
 
103
129
  declare const AXP_REALTIME_TOPIC_INBOX_REFRESH = "inbox.refresh";
130
+ declare const AXP_REALTIME_TOPIC_BACKGROUND_JOB_TRAY_REFRESH = "background-job.tray.refresh";
104
131
  declare const AXP_REALTIME_TOPIC_CONVERSATION_MESSAGE = "conversation.message";
105
132
  declare const AXP_REALTIME_TOPIC_CONVERSATION_TYPING = "conversation.typing";
106
133
  declare const AXP_REALTIME_TOPIC_CONVERSATION_CALL = "conversation.call";
107
134
  declare const AXP_REALTIME_TOPIC_ENTITY_MUTATION = "entity.mutation";
135
+ declare const AXP_REALTIME_TOPIC_BULK_PROGRESS = "runtime.bulk.progress";
108
136
  declare const AXP_REALTIME_TOPIC_USER_PRESENCE = "user.presence";
109
137
  declare const AXP_REALTIME_SOCKET_EVENT = "realtime";
110
138
  declare const AXP_REALTIME_SUBSCRIBE_CONVERSATION = "subscribe.conversation";
@@ -155,8 +183,11 @@ declare class AXPRealtimeConnectionService extends AXPRealtimeConnectionPort imp
155
183
  private readonly config;
156
184
  private readonly session;
157
185
  private readonly dispatcher;
186
+ private readonly bulkProgress;
187
+ private readonly document;
158
188
  private socket;
159
189
  private statusSub;
190
+ private wakeListenersBound;
160
191
  private readonly joinedConversations;
161
192
  private readonly connectionStatusSubject;
162
193
  /** Latest Socket.IO connection state for feature modules (e.g. chat). */
@@ -178,6 +209,12 @@ declare class AXPRealtimeConnectionService extends AXPRealtimeConnectionPort imp
178
209
  unsubscribePresence(userIds: readonly string[]): void;
179
210
  leavePresence(): Promise<void>;
180
211
  setPresence(status: 'online' | 'away' | 'busy', source?: 'auto' | 'manual'): Promise<AXPRealtimeUserPresenceSnapshotItem | undefined>;
212
+ private registerBulkProgressHandler;
213
+ private bindWakeListeners;
214
+ private unbindWakeListeners;
215
+ private readonly onVisibilityResume;
216
+ private readonly onNetworkResume;
217
+ private resumeIfAuthorized;
181
218
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPRealtimeConnectionService, [{ optional: true; }]>;
182
219
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPRealtimeConnectionService>;
183
220
  }
@@ -273,5 +310,5 @@ declare class AXPUserPresenceIdleService {
273
310
  /** Idle without input before automatic Away. Keep in sync with server `AXP_USER_PRESENCE_IDLE_MS`. */
274
311
  declare const AXP_USER_PRESENCE_IDLE_MS: number;
275
312
 
276
- export { AXPRealtimeConnectionPort, AXPRealtimeConnectionService, AXPRealtimeDispatcherService, AXPUserPresenceIdleService, AXPUserPresenceService, AXP_REALTIME_CONFIG, AXP_REALTIME_EMIT_TYPING, AXP_REALTIME_PRESENCE_LEAVE, AXP_REALTIME_PRESENCE_SET, AXP_REALTIME_SOCKET_EVENT, AXP_REALTIME_SUBSCRIBE_CONVERSATION, AXP_REALTIME_SUBSCRIBE_PRESENCE, AXP_REALTIME_TOPIC_CONVERSATION_CALL, AXP_REALTIME_TOPIC_CONVERSATION_MESSAGE, AXP_REALTIME_TOPIC_CONVERSATION_TYPING, AXP_REALTIME_TOPIC_ENTITY_MUTATION, AXP_REALTIME_TOPIC_HANDLER, AXP_REALTIME_TOPIC_INBOX_REFRESH, AXP_REALTIME_TOPIC_USER_PRESENCE, AXP_REALTIME_UNSUBSCRIBE_CONVERSATION, AXP_REALTIME_UNSUBSCRIBE_PRESENCE, AXP_USER_PRESENCE_IDLE_MS, isWatchablePresenceUserId, parseUserPresencePayload, presenceDurationBucket, provideRealtime, resolveRealtimeSocketUrl };
277
- export type { AXPPresenceDurationBucket, AXPProvideRealtimeOptions, AXPRealtimeAudience, AXPRealtimeConfig, AXPRealtimeConnectionStatus, AXPRealtimeConversationCallAction, AXPRealtimeConversationCallMedia, AXPRealtimeConversationCallPayload, AXPRealtimeConversationMessagePayload, AXPRealtimeConversationTypingPayload, AXPRealtimeEntityMutationPayload, AXPRealtimeEnvelope, AXPRealtimeInboxRefreshPayload, AXPRealtimePresenceSetResult, AXPRealtimePresenceSubscribeResult, AXPRealtimeTopicHandler, AXPRealtimeTopicHandlerRegistration, AXPRealtimeUserPresencePayload, AXPRealtimeUserPresenceSnapshotItem, AXPRealtimeUserPresenceSource, AXPRealtimeUserPresenceStatus, AXPUserPresence, AXPUserPresenceSetInput, AXPUserPresenceSource, AXPUserPresenceStatus };
313
+ export { AXPRealtimeConnectionPort, AXPRealtimeConnectionService, AXPRealtimeDispatcherService, AXPUserPresenceIdleService, AXPUserPresenceService, AXP_REALTIME_CONFIG, AXP_REALTIME_EMIT_TYPING, AXP_REALTIME_PRESENCE_LEAVE, AXP_REALTIME_PRESENCE_SET, AXP_REALTIME_SOCKET_EVENT, AXP_REALTIME_SUBSCRIBE_CONVERSATION, AXP_REALTIME_SUBSCRIBE_PRESENCE, AXP_REALTIME_TOPIC_BACKGROUND_JOB_TRAY_REFRESH, AXP_REALTIME_TOPIC_BULK_PROGRESS, AXP_REALTIME_TOPIC_CONVERSATION_CALL, AXP_REALTIME_TOPIC_CONVERSATION_MESSAGE, AXP_REALTIME_TOPIC_CONVERSATION_TYPING, AXP_REALTIME_TOPIC_ENTITY_MUTATION, AXP_REALTIME_TOPIC_HANDLER, AXP_REALTIME_TOPIC_INBOX_REFRESH, AXP_REALTIME_TOPIC_USER_PRESENCE, AXP_REALTIME_UNSUBSCRIBE_CONVERSATION, AXP_REALTIME_UNSUBSCRIBE_PRESENCE, AXP_USER_PRESENCE_IDLE_MS, isWatchablePresenceUserId, parseUserPresencePayload, presenceDurationBucket, provideRealtime, resolveRealtimeSocketUrl };
314
+ export type { AXPPresenceDurationBucket, AXPProvideRealtimeOptions, AXPRealtimeAudience, AXPRealtimeBackgroundJobTrayRefreshPayload, AXPRealtimeBulkProgressPayload, AXPRealtimeConfig, AXPRealtimeConnectionStatus, AXPRealtimeConversationCallAction, AXPRealtimeConversationCallMedia, AXPRealtimeConversationCallPayload, AXPRealtimeConversationMessagePayload, AXPRealtimeConversationTypingPayload, AXPRealtimeEntityMutationPayload, AXPRealtimeEnvelope, AXPRealtimeInboxRefreshPayload, AXPRealtimePresenceSetResult, AXPRealtimePresenceSubscribeResult, AXPRealtimeTopicHandler, AXPRealtimeTopicHandlerRegistration, AXPRealtimeUserPresencePayload, AXPRealtimeUserPresenceSnapshotItem, AXPRealtimeUserPresenceSource, AXPRealtimeUserPresenceStatus, AXPUserPresence, AXPUserPresenceSetInput, AXPUserPresenceSource, AXPUserPresenceStatus };
@@ -1,7 +1,8 @@
1
- import { AXPBulkCommandRequest, AXPCommandExecuteResultPromise, AXPBulkCommandResultData, AXPCommandExecuteOptions, AXPCommandMiddleware, AXPCommand, AXPQueryMiddleware, AXPQuery, AXPQueryExecuteOptions, AXPViewProvider } from '@acorex-platform/framework-shared/runtime';
1
+ import { AXPBulkCommandRequest, AXPCommandExecuteResultPromise, AXPBulkCommandResultData, AXPBulkCommandProgress, AXPCommandExecuteOptions, AXPCommandMiddleware, AXPCommand, AXPQueryMiddleware, AXPQuery, AXPQueryExecuteOptions, AXPViewProvider } from '@acorex-platform/framework-shared/runtime';
2
2
  export { AXPCommandExecuteOptions, AXPCommandMiddleware, AXPCommandMiddlewareContext, AXPQueryExecuteOptions, AXPQueryMiddleware, AXPQueryMiddlewareContext, AXPQuerySnapshotOption, composeCommandMiddlewares, composeQueryMiddlewares } from '@acorex-platform/framework-shared/runtime';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, EnvironmentProviders, Type, Provider } from '@angular/core';
5
+ import { Observable } from 'rxjs';
5
6
  import { AXPRuntimeCommandResult, AXPRuntimeQueryResult, AXPViewDefinition, AXPMetaData } from '@acorex-platform/framework-shared/core';
6
7
  import { AXComponent } from '@acorex/cdk/common';
7
8
 
@@ -20,6 +21,35 @@ declare class AXPBulkCommandService {
20
21
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPBulkCommandService>;
21
22
  }
22
23
 
24
+ interface AXPBulkProgressWatchOptions {
25
+ /**
26
+ * `true` — poll GET /progress (socket down).
27
+ * `false` / omitted — socket only; never call GET /progress.
28
+ */
29
+ poll?: boolean;
30
+ /** Poll interval when `poll` is enabled. Default 250ms. */
31
+ intervalMs?: number;
32
+ }
33
+ /**
34
+ * Actor-only progress bus for in-flight bulk commands.
35
+ *
36
+ * Prefer realtime (`runtime.bulk.progress` → {@link notify}).
37
+ * GET /progress only when the caller sets `poll: true` (socket down).
38
+ */
39
+ declare class AXPBulkProgressChannel {
40
+ private readonly hooks;
41
+ private readonly zone;
42
+ private readonly subject;
43
+ /** Called by the realtime topic handler when a socket tick arrives. */
44
+ notify(progress: AXPBulkCommandProgress): void;
45
+ watch(executionId: string, options?: AXPBulkProgressWatchOptions): Observable<AXPBulkCommandProgress>;
46
+ private emit;
47
+ private clearPoll;
48
+ private pollOnce;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBulkProgressChannel, never>;
50
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBulkProgressChannel>;
51
+ }
52
+
23
53
  type AXPCommandExecutionStage = 'before' | 'after';
24
54
  interface AXPCommandExecutionEvent<TInput = unknown, TResult = unknown> {
25
55
  executionId: string;
@@ -364,13 +394,15 @@ declare class AXPRuntimeModule {
364
394
  *
365
395
  * Host apps that only consume the client lib and call a different API stack should
366
396
  * register {@link provideExternalRuntimeQueryTransport},
367
- * {@link provideExternalRuntimeCommandTransport}, and
368
- * {@link provideExternalRuntimeBulkTransport}
397
+ * {@link provideExternalRuntimeCommandTransport},
398
+ * {@link provideExternalRuntimeBulkTransport} for {@link AXPRuntimeRemoteHookKeys.CommandExecuteBulk},
399
+ * and {@link provideBulkProgressPollTransport} for {@link AXPRuntimeRemoteHookKeys.CommandBulkProgress}
369
400
  * (see `RUNTIME_REMOTE_BULK_TRANSPORT.md`).
370
401
  */
371
402
  declare const AXPRuntimeRemoteHookKeys: {
372
403
  readonly CommandExecute: "runtime.command.execute";
373
404
  readonly CommandExecuteBulk: "runtime.command.execute-bulk";
405
+ readonly CommandBulkProgress: "runtime.command.bulk-progress";
374
406
  readonly QueryExecute: "runtime.query.execute";
375
407
  };
376
408
  interface AXPRuntimeCommandExecuteHookPayload {
@@ -388,6 +420,12 @@ interface AXPRuntimeCommandExecuteBulkHookPayload {
388
420
  handled?: boolean;
389
421
  result?: AXPRuntimeCommandResult<AXPBulkCommandResultData> | null;
390
422
  }
423
+ interface AXPRuntimeCommandBulkProgressHookPayload {
424
+ executionId: string;
425
+ /** Set by a provider when it handled the remote call. */
426
+ handled?: boolean;
427
+ progress?: AXPBulkCommandProgress | null;
428
+ }
391
429
  interface AXPRuntimeQueryExecuteHookPayload {
392
430
  name: string;
393
431
  input: unknown;
@@ -548,5 +586,18 @@ interface AXPExternalRuntimeQueryTransportOptions {
548
586
  */
549
587
  declare function provideExternalRuntimeQueryTransport(transport: AXPExternalRuntimeQueryTransport, options?: AXPExternalRuntimeQueryTransportOptions): Provider[];
550
588
 
551
- export { AXPBulkCommandService, AXPCommandEventsService, AXPCommandExecutor, AXPCommandRegistry, AXPCommandService, AXPPolicyEngineContext, AXPPolicyEngineDirective, AXPPolicyEngineRegistry, AXPPolicyEngineService, AXPQueryEventsService, AXPQueryExecutor, AXPQueryRegistry, AXPQueryService, AXPRuntimeModule, AXPRuntimeRemoteHookKeys, AXPRuntimeTransportHookKeys, AXPRuntimeTransportService, AXPViewExecutor, AXPViewRegistry, AXPViewService, AXP_COMMAND_EXTENSION, AXP_COMMAND_MIDDLEWARE_SETUP, AXP_COMMAND_SETUP, AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, AXP_POLICY_EXTENSION, AXP_QUERY_EXTENSION, AXP_QUERY_MIDDLEWARE_SETUP, AXP_QUERY_SETUP, AXP_VIEW_EXTENSION, AXP_VIEW_SETUP, composePolicyEngineMiddlewares, composeViewMiddlewares, provideCommand, provideCommandMiddleware, provideCommandSetups, provideExternalRuntimeBulkTransport, provideExternalRuntimeCommandTransport, provideExternalRuntimeQueryTransport, providePolicySetups, provideQueryMiddleware, provideQuerySetups, provideViewSetup, provideViewSetups };
552
- export type { AXPCommandExecutionEvent, AXPCommandExecutionStage, AXPCommandExtension, AXPExternalRuntimeBulkTransport, AXPExternalRuntimeBulkTransportOptions, AXPExternalRuntimeCommandTransport, AXPExternalRuntimeCommandTransportOptions, AXPExternalRuntimeQueryTransport, AXPExternalRuntimeQueryTransportOptions, AXPPolicy, AXPPolicyEngineMiddleware, AXPPolicyExtension, AXPQueryExecutionEvent, AXPQueryExecutionStage, AXPQueryExtension, AXPRuntimeCommandExecuteBulkHookPayload, AXPRuntimeCommandExecuteHookPayload, AXPRuntimeQueryExecuteHookPayload, AXPRuntimeTransportExecuteHookPayload, AXPViewExtension, AXPViewMiddleware };
589
+ type AXPBulkProgressPollTransport = (executionId: string) => Promise<AXPBulkCommandProgress | null | undefined>;
590
+ interface AXPBulkProgressPollTransportOptions {
591
+ /** Hook waterfall order (ascending). Default `-100` so this runs before connectivity. */
592
+ priority?: number;
593
+ }
594
+ /** Replace the default {@link AXPBulkProgressChannel} (e.g. SSE or a host-specific bus). */
595
+ declare function provideBulkProgressChannel(factory: () => AXPBulkProgressChannel): Provider[];
596
+ /**
597
+ * Registers a poll transport for hosts that have a progress HTTP API but no realtime.
598
+ * Same pattern as {@link provideExternalRuntimeBulkTransport}.
599
+ */
600
+ declare function provideBulkProgressPollTransport(transport: AXPBulkProgressPollTransport, options?: AXPBulkProgressPollTransportOptions): Provider[];
601
+
602
+ export { AXPBulkCommandService, AXPBulkProgressChannel, AXPCommandEventsService, AXPCommandExecutor, AXPCommandRegistry, AXPCommandService, AXPPolicyEngineContext, AXPPolicyEngineDirective, AXPPolicyEngineRegistry, AXPPolicyEngineService, AXPQueryEventsService, AXPQueryExecutor, AXPQueryRegistry, AXPQueryService, AXPRuntimeModule, AXPRuntimeRemoteHookKeys, AXPRuntimeTransportHookKeys, AXPRuntimeTransportService, AXPViewExecutor, AXPViewRegistry, AXPViewService, AXP_COMMAND_EXTENSION, AXP_COMMAND_MIDDLEWARE_SETUP, AXP_COMMAND_SETUP, AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, AXP_POLICY_EXTENSION, AXP_QUERY_EXTENSION, AXP_QUERY_MIDDLEWARE_SETUP, AXP_QUERY_SETUP, AXP_VIEW_EXTENSION, AXP_VIEW_SETUP, composePolicyEngineMiddlewares, composeViewMiddlewares, provideBulkProgressChannel, provideBulkProgressPollTransport, provideCommand, provideCommandMiddleware, provideCommandSetups, provideExternalRuntimeBulkTransport, provideExternalRuntimeCommandTransport, provideExternalRuntimeQueryTransport, providePolicySetups, provideQueryMiddleware, provideQuerySetups, provideViewSetup, provideViewSetups };
603
+ export type { AXPBulkProgressPollTransport, AXPBulkProgressPollTransportOptions, AXPBulkProgressWatchOptions, AXPCommandExecutionEvent, AXPCommandExecutionStage, AXPCommandExtension, AXPExternalRuntimeBulkTransport, AXPExternalRuntimeBulkTransportOptions, AXPExternalRuntimeCommandTransport, AXPExternalRuntimeCommandTransportOptions, AXPExternalRuntimeQueryTransport, AXPExternalRuntimeQueryTransportOptions, AXPPolicy, AXPPolicyEngineMiddleware, AXPPolicyExtension, AXPQueryExecutionEvent, AXPQueryExecutionStage, AXPQueryExtension, AXPRuntimeCommandBulkProgressHookPayload, AXPRuntimeCommandExecuteBulkHookPayload, AXPRuntimeCommandExecuteHookPayload, AXPRuntimeQueryExecuteHookPayload, AXPRuntimeTransportExecuteHookPayload, AXPViewExtension, AXPViewMiddleware };
@@ -1,3 +1,5 @@
1
+ import * as _acorex_platform_framework_shared_entity from '@acorex-platform/framework-shared/entity';
2
+ import { AXPEntityMasterListDisplayMode } from '@acorex-platform/framework-shared/entity';
1
3
  import * as _ngrx_signals from '@ngrx/signals';
2
4
  import * as _angular_core from '@angular/core';
3
5
  import { AfterViewInit, OnDestroy, Signal } from '@angular/core';
@@ -6,13 +8,14 @@ import { AXPMenuVerticalMode } from '@acorex-platform/framework-client/themes/sh
6
8
  import { AXValueChangedEvent } from '@acorex/cdk/common';
7
9
  import { AXActionSheetService } from '@acorex/components/action-sheet';
8
10
  import { AXDataTableComponent, AXRowCommandItem, AXDataTableRowDbClick, AXRowCommandItemClickEvent, AXDataTableRowCssClassResolver, AXDataTableCellCssClassResolver, onColumnSizeChangedEvent, AXColumnsOrderChangedEvent } from '@acorex/components/data-table';
11
+ import { AXPopoverComponent } from '@acorex/components/popover';
9
12
  import { AXUnsubscriber } from '@acorex/core/utils';
10
13
  import { AXPDeviceService } from '@acorex-platform/framework-client/core';
11
- import { AXPEntityCommandTriggerViewModel, AXPEntityDetailListViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewSortPropViewModel } from '@acorex-platform/framework-client/layout/entity';
14
+ import { AXPEntityCommandTriggerViewModel, AXPEntityDetailListViewModel, AXPEntityCardListHost, AXPEntityCardSecondaryActionItem, AXPEntityMasterListViewModel, AXPEntityMasterListViewSortPropViewModel } from '@acorex-platform/framework-client/layout/entity';
12
15
  import { AXPBreadcrumbItem, AXPActionMenuItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';
13
16
  import { AXPlatform } from '@acorex/core/platform';
14
17
  import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
15
- import { AXDataPagerChangedEvent, AXDataPagerMode } from '@acorex/components/data-pager';
18
+ import { AXDataPagerChangedEvent } from '@acorex/components/data-pager';
16
19
  import * as _acorex_platform_framework_client_common from '@acorex-platform/framework-client/common';
17
20
  import { AXPTabNavigationService, AXPTabPreviewService, AXPTabDescriptor, AXPTabTitleParts, AXPMenuItem, AXPSettingsService, AXPMenuVisibilityService } from '@acorex-platform/framework-client/common';
18
21
  import { AXContextMenuItemsClickEvent } from '@acorex/components/menu';
@@ -43,6 +46,9 @@ declare class AXPEntityDetailListViewComponent {
43
46
  sideMenuCompactWidth: _angular_core.Signal<number>;
44
47
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
45
48
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
49
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
50
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
51
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
46
52
  isPrinting: _angular_core.Signal<boolean>;
47
53
  isDarkMode: _angular_core.Signal<boolean>;
48
54
  isLightMode: _angular_core.Signal<boolean>;
@@ -54,6 +60,12 @@ declare class AXPEntityDetailListViewComponent {
54
60
  isMenuHorizontal: _angular_core.Signal<boolean>;
55
61
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
56
62
  sideMenuDrawerWidth: _angular_core.Signal<number>;
63
+ menuDarkEnabled: _angular_core.Signal<boolean>;
64
+ menuBrandEnabled: _angular_core.Signal<boolean>;
65
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
66
+ headerBrandEnabled: _angular_core.Signal<boolean>;
67
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
68
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
57
69
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
58
70
  openSideMenu: () => void;
59
71
  closeSideMenu: () => void;
@@ -83,6 +95,9 @@ declare class AXPEntityDetailListViewComponent {
83
95
  sideMenuCompactWidth: number;
84
96
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
85
97
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
98
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
99
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
100
+ mainFooterFullWidth: boolean;
86
101
  isPrinting: boolean;
87
102
  }>;
88
103
  protected deviceService: AXPDeviceService;
@@ -91,6 +106,13 @@ declare class AXPEntityDetailListViewComponent {
91
106
  vm: AXPEntityDetailListViewModel;
92
107
  protected focusedRow: any;
93
108
  grid: AXDataTableComponent;
109
+ protected listDisplayModePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
110
+ protected showListDisplayModeControl: _angular_core.Signal<boolean>;
111
+ protected listDisplayMode: _angular_core.Signal<_acorex_platform_framework_shared_entity.AXPEntityMasterListLayoutType>;
112
+ protected hasTableListDisplayOption: _angular_core.Signal<boolean>;
113
+ protected hasCardListDisplayOption: _angular_core.Signal<boolean>;
114
+ protected hasRowListDisplayOption: _angular_core.Signal<boolean>;
115
+ protected listDisplayModeButtonIcon: _angular_core.Signal<"fa-light fa-table" | "fa-light fa-grip-lines" | "fa-light fa-grid-2">;
94
116
  constructor(actionSheetService: AXActionSheetService, unsubscriber: AXUnsubscriber);
95
117
  private readonly destroyed;
96
118
  handleChangeSearchValue(e: AXValueChangedEvent): void;
@@ -103,6 +125,7 @@ declare class AXPEntityDetailListViewComponent {
103
125
  protected getDropdownRowItems: (rowData: unknown) => Promise<AXRowCommandItem[]>;
104
126
  protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
105
127
  protected handleRowCommandClick(e: AXRowCommandItemClickEvent): Promise<void>;
128
+ protected setListDisplayMode(mode: AXPEntityMasterListDisplayMode): void;
106
129
  private refreshToolbarActions;
107
130
  protected destroy(): void;
108
131
  ngOnDestroy(): void;
@@ -111,48 +134,68 @@ declare class AXPEntityDetailListViewComponent {
111
134
  }
112
135
 
113
136
  declare class AXPEntityMasterListCardListComponent {
114
- protected readonly deviceService: AXPDeviceService;
115
- vm: _angular_core.InputSignal<AXPEntityMasterListViewModel>;
116
- pageChanged: _angular_core.OutputEmitterRef<AXDataPagerChangedEvent>;
117
- protected pagerDisplayMode: _angular_core.Signal<AXDataPagerMode>;
137
+ vm: _angular_core.InputSignal<AXPEntityCardListHost>;
118
138
  protected items: _angular_core.WritableSignal<Record<string, unknown>[]>;
119
139
  protected loading: _angular_core.WritableSignal<boolean>;
120
- protected highlightedRowId: _angular_core.WritableSignal<string | number | null>;
140
+ protected loadingMore: _angular_core.WritableSignal<boolean>;
141
+ protected hasMore: _angular_core.WritableSignal<boolean>;
121
142
  protected totalCount: _angular_core.WritableSignal<number>;
122
- protected pageIndex: _angular_core.WritableSignal<number>;
143
+ protected highlightedRowId: _angular_core.WritableSignal<string | number | null>;
123
144
  protected pageSize: _angular_core.WritableSignal<number>;
124
145
  protected showSelection: _angular_core.Signal<boolean>;
125
146
  protected rowKey: _angular_core.Signal<string>;
147
+ protected isRowLayout: _angular_core.Signal<boolean>;
148
+ protected canLoadMore: _angular_core.Signal<boolean>;
149
+ protected loadedCount: _angular_core.Signal<number>;
150
+ protected showListStatus: _angular_core.Signal<boolean>;
126
151
  protected skeletonCount: _angular_core.Signal<number>;
152
+ protected readonly loadMoreSkeletonPlaceholders: number[];
153
+ protected showSkeletonAvatar: _angular_core.Signal<boolean>;
127
154
  protected skeletonFieldCount: _angular_core.Signal<number>;
128
155
  protected skeletonBadgeCount: _angular_core.Signal<number>;
129
156
  protected skeletonShowFooter: _angular_core.Signal<boolean>;
130
157
  protected skeletonPlaceholders: _angular_core.Signal<number[]>;
158
+ protected loadSecondaryActions: (row: Record<string, unknown>) => Promise<AXPEntityCardSecondaryActionItem[]>;
159
+ /** True while load-more is fetching the next chunk; ignore replace-on-changed. */
160
+ private appending;
161
+ private readonly cardGrid;
162
+ private readonly expandedRowIds;
163
+ private readonly columnCount;
131
164
  constructor();
132
- reload(resetPagination?: boolean): Promise<void>;
165
+ reload(_resetPagination?: boolean): Promise<void>;
133
166
  /** Marks a card with the same post-create highlight used by the data table. */
134
167
  highlightCardById(rowId: string | number): void;
135
168
  clearCardHighlight(): void;
136
169
  protected isRowHighlighted(row: Record<string, unknown>): boolean;
137
- /** Syncs visible items from the shared data source without triggering a load. */
170
+ /** Replaces the accumulated list with the current data-source page (no fetch). */
138
171
  syncFromDataSource(): void;
139
172
  /** Lightweight snapshot for entity list layout diagnostics. */
140
173
  getTraceSnapshot(): {
141
174
  itemCount: number;
142
175
  loading: boolean;
176
+ loadingMore: boolean;
177
+ hasMore: boolean;
143
178
  pageIndex: number;
144
179
  pageSize: number;
145
180
  };
181
+ protected isCardExpanded(row: Record<string, unknown>): boolean;
182
+ protected onCardExtraExpanded(index: number, expanded: boolean): void;
183
+ private rowId;
184
+ private visualRowIndexes;
185
+ private cardHosts;
186
+ private realignExpandedRows;
146
187
  protected trackRow(index: number, row: Record<string, unknown> | undefined): string | number;
147
188
  protected isRowSelected(row: Record<string, unknown>): boolean;
148
189
  protected onRowSelectionChange(row: Record<string, unknown>, selected: boolean): void;
149
190
  protected onCommandClick(name: string, row: Record<string, unknown>): Promise<void>;
150
- protected onPageChanged(event: AXDataPagerChangedEvent): void;
151
- private syncItemsFromDataSource;
152
- private syncPagingFromDataSource;
191
+ protected onInfiniteScrollReached(): void;
192
+ private loadMore;
193
+ private loadPage;
194
+ private applyPageFromDataSource;
195
+ private resolvePageSize;
153
196
  private waitForDataSourceLoad;
154
197
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMasterListCardListComponent, never>;
155
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityMasterListCardListComponent, "axp-entity-master-list-card-list", never, { "vm": { "alias": "vm"; "required": true; "isSignal": true; }; }, { "pageChanged": "pageChanged"; }, never, never, true, never>;
198
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityMasterListCardListComponent, "axp-entity-master-list-card-list", never, { "vm": { "alias": "vm"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
156
199
  }
157
200
 
158
201
  declare class AXPEntityMasterListDataTableComponent {
@@ -203,6 +246,9 @@ declare class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponen
203
246
  sideMenuCompactWidth: _angular_core.Signal<number>;
204
247
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
205
248
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
249
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
250
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
251
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
206
252
  isPrinting: _angular_core.Signal<boolean>;
207
253
  isDarkMode: _angular_core.Signal<boolean>;
208
254
  isLightMode: _angular_core.Signal<boolean>;
@@ -214,6 +260,12 @@ declare class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponen
214
260
  isMenuHorizontal: _angular_core.Signal<boolean>;
215
261
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
216
262
  sideMenuDrawerWidth: _angular_core.Signal<number>;
263
+ menuDarkEnabled: _angular_core.Signal<boolean>;
264
+ menuBrandEnabled: _angular_core.Signal<boolean>;
265
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
266
+ headerBrandEnabled: _angular_core.Signal<boolean>;
267
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
268
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
217
269
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
218
270
  openSideMenu: () => void;
219
271
  closeSideMenu: () => void;
@@ -243,6 +295,9 @@ declare class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponen
243
295
  sideMenuCompactWidth: number;
244
296
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
245
297
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
298
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
299
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
300
+ mainFooterFullWidth: boolean;
246
301
  isPrinting: boolean;
247
302
  }>;
248
303
  protected searchBarShown: _angular_core.WritableSignal<boolean>;
@@ -338,6 +393,9 @@ declare class AXPRootLayoutHeaderComponent {
338
393
  sideMenuCompactWidth: _angular_core.Signal<number>;
339
394
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
340
395
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
396
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
397
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
398
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
341
399
  isPrinting: _angular_core.Signal<boolean>;
342
400
  isDarkMode: _angular_core.Signal<boolean>;
343
401
  isLightMode: _angular_core.Signal<boolean>;
@@ -349,6 +407,12 @@ declare class AXPRootLayoutHeaderComponent {
349
407
  isMenuHorizontal: _angular_core.Signal<boolean>;
350
408
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
351
409
  sideMenuDrawerWidth: _angular_core.Signal<number>;
410
+ menuDarkEnabled: _angular_core.Signal<boolean>;
411
+ menuBrandEnabled: _angular_core.Signal<boolean>;
412
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
413
+ headerBrandEnabled: _angular_core.Signal<boolean>;
414
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
415
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
352
416
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
353
417
  openSideMenu: () => void;
354
418
  closeSideMenu: () => void;
@@ -378,9 +442,15 @@ declare class AXPRootLayoutHeaderComponent {
378
442
  sideMenuCompactWidth: number;
379
443
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
380
444
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
445
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
446
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
447
+ mainFooterFullWidth: boolean;
381
448
  isPrinting: boolean;
382
449
  }>;
383
450
  protected readonly tabNavigation: AXPTabNavigationService;
451
+ protected readonly hostClass: _angular_core.Signal<"w-full flex min-w-0 items-center gap-2 h-14 px-2 shrink-0 border-b border-default bg-lightest dark:darker-surface axp-header-simple" | "w-full flex min-w-0 items-center gap-2 h-14 px-2 shrink-0 border-b border-default primary-surface ax-light axp-header-brand">;
452
+ protected readonly headerButtonColor: _angular_core.Signal<"primary" | "default">;
453
+ protected readonly headerButtonLook: _angular_core.Signal<"default" | "blank">;
384
454
  constructor();
385
455
  protected toggleSideMenu(): void;
386
456
  protected handleLogoClick(): void;
@@ -397,6 +467,7 @@ declare class AXPRouteTabBarComponent implements AfterViewInit, OnDestroy {
397
467
  #private;
398
468
  protected readonly tabNavigation: AXPTabNavigationService;
399
469
  protected readonly tabPreviewService: AXPTabPreviewService;
470
+ private readonly themeStore;
400
471
  private readonly translateService;
401
472
  private readonly host;
402
473
  private readonly tabStrip;
@@ -407,6 +478,7 @@ declare class AXPRouteTabBarComponent implements AfterViewInit, OnDestroy {
407
478
  private readonly stripWidthPx;
408
479
  protected readonly isTabDragging: _angular_core.WritableSignal<boolean>;
409
480
  protected readonly inHeader: _angular_core.WritableSignal<boolean>;
481
+ protected readonly simpleHeaderTabs: _angular_core.Signal<boolean>;
410
482
  protected readonly tabTitleTooltipOpenAfterMs = 500;
411
483
  private stripResizeObserver?;
412
484
  protected readonly layout: _angular_core.Signal<AXPRouteTabBarLayout>;
@@ -490,6 +562,9 @@ declare class AXPRootLayoutMenuComponent {
490
562
  sideMenuCompactWidth: Signal<number>;
491
563
  menuVerticalMode: Signal<AXPMenuVerticalMode>;
492
564
  menuOrientation: Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
565
+ menuAppearance: Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
566
+ headerAppearance: Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
567
+ mainFooterFullWidth: Signal<boolean>;
493
568
  isPrinting: Signal<boolean>;
494
569
  isDarkMode: Signal<boolean>;
495
570
  isLightMode: Signal<boolean>;
@@ -501,6 +576,12 @@ declare class AXPRootLayoutMenuComponent {
501
576
  isMenuHorizontal: Signal<boolean>;
502
577
  effectiveMenuVerticalMode: Signal<AXPMenuVerticalMode>;
503
578
  sideMenuDrawerWidth: Signal<number>;
579
+ menuDarkEnabled: Signal<boolean>;
580
+ menuBrandEnabled: Signal<boolean>;
581
+ effectiveMainFooterFullWidth: Signal<boolean>;
582
+ headerBrandEnabled: Signal<boolean>;
583
+ headerButtonColor: Signal<"default" | "primary">;
584
+ headerButtonLook: Signal<"default" | "blank">;
504
585
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
505
586
  openSideMenu: () => void;
506
587
  closeSideMenu: () => void;
@@ -530,6 +611,9 @@ declare class AXPRootLayoutMenuComponent {
530
611
  sideMenuCompactWidth: number;
531
612
  menuVerticalMode: AXPMenuVerticalMode;
532
613
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
614
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
615
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
616
+ mainFooterFullWidth: boolean;
533
617
  isPrinting: boolean;
534
618
  }>;
535
619
  private readonly sessionService;
@@ -622,6 +706,9 @@ declare class AXPRootHorizontalLayoutComponent {
622
706
  sideMenuCompactWidth: _angular_core.Signal<number>;
623
707
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
624
708
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
709
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
710
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
711
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
625
712
  isPrinting: _angular_core.Signal<boolean>;
626
713
  isDarkMode: _angular_core.Signal<boolean>;
627
714
  isLightMode: _angular_core.Signal<boolean>;
@@ -633,6 +720,12 @@ declare class AXPRootHorizontalLayoutComponent {
633
720
  isMenuHorizontal: _angular_core.Signal<boolean>;
634
721
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
635
722
  sideMenuDrawerWidth: _angular_core.Signal<number>;
723
+ menuDarkEnabled: _angular_core.Signal<boolean>;
724
+ menuBrandEnabled: _angular_core.Signal<boolean>;
725
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
726
+ headerBrandEnabled: _angular_core.Signal<boolean>;
727
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
728
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
636
729
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
637
730
  openSideMenu: () => void;
638
731
  closeSideMenu: () => void;
@@ -662,6 +755,9 @@ declare class AXPRootHorizontalLayoutComponent {
662
755
  sideMenuCompactWidth: number;
663
756
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
664
757
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
758
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
759
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
760
+ mainFooterFullWidth: boolean;
665
761
  isPrinting: boolean;
666
762
  }>;
667
763
  protected handleCollapsedChange(value: boolean): void;
@@ -690,6 +786,9 @@ declare class AXPRootLayoutComponent {
690
786
  sideMenuCompactWidth: _angular_core.Signal<number>;
691
787
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
692
788
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
789
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
790
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
791
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
693
792
  isPrinting: _angular_core.Signal<boolean>;
694
793
  isDarkMode: _angular_core.Signal<boolean>;
695
794
  isLightMode: _angular_core.Signal<boolean>;
@@ -701,6 +800,12 @@ declare class AXPRootLayoutComponent {
701
800
  isMenuHorizontal: _angular_core.Signal<boolean>;
702
801
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
703
802
  sideMenuDrawerWidth: _angular_core.Signal<number>;
803
+ menuDarkEnabled: _angular_core.Signal<boolean>;
804
+ menuBrandEnabled: _angular_core.Signal<boolean>;
805
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
806
+ headerBrandEnabled: _angular_core.Signal<boolean>;
807
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
808
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
704
809
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
705
810
  openSideMenu: () => void;
706
811
  closeSideMenu: () => void;
@@ -730,6 +835,9 @@ declare class AXPRootLayoutComponent {
730
835
  sideMenuCompactWidth: number;
731
836
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
732
837
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
838
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
839
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
840
+ mainFooterFullWidth: boolean;
733
841
  isPrinting: boolean;
734
842
  }>;
735
843
  protected menuStore: {
@@ -791,6 +899,9 @@ declare class AXPRootVerticalLayoutComponent {
791
899
  sideMenuCompactWidth: _angular_core.Signal<number>;
792
900
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
793
901
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
902
+ menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
903
+ headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
904
+ mainFooterFullWidth: _angular_core.Signal<boolean>;
794
905
  isPrinting: _angular_core.Signal<boolean>;
795
906
  isDarkMode: _angular_core.Signal<boolean>;
796
907
  isLightMode: _angular_core.Signal<boolean>;
@@ -802,6 +913,12 @@ declare class AXPRootVerticalLayoutComponent {
802
913
  isMenuHorizontal: _angular_core.Signal<boolean>;
803
914
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
804
915
  sideMenuDrawerWidth: _angular_core.Signal<number>;
916
+ menuDarkEnabled: _angular_core.Signal<boolean>;
917
+ menuBrandEnabled: _angular_core.Signal<boolean>;
918
+ effectiveMainFooterFullWidth: _angular_core.Signal<boolean>;
919
+ headerBrandEnabled: _angular_core.Signal<boolean>;
920
+ headerButtonColor: _angular_core.Signal<"default" | "primary">;
921
+ headerButtonLook: _angular_core.Signal<"default" | "blank">;
805
922
  changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
806
923
  openSideMenu: () => void;
807
924
  closeSideMenu: () => void;
@@ -831,12 +948,25 @@ declare class AXPRootVerticalLayoutComponent {
831
948
  sideMenuCompactWidth: number;
832
949
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
833
950
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
951
+ menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
952
+ headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
953
+ mainFooterFullWidth: boolean;
834
954
  isPrinting: boolean;
835
955
  }>;
836
956
  protected deviceService: AXPDeviceService;
837
957
  protected router: Router;
838
958
  /** Recreates the drawer when switching overlay ↔ push to reset internal layout sizing. */
839
959
  protected readonly sideMenuDrawerKey: _angular_core.Signal<"overlay" | "push">;
960
+ /** Logo / profile divider: white on dark menus, black on light menus. */
961
+ protected readonly sideMenuDividerBorderClass: _angular_core.Signal<"border-white/7" | "border-black/7">;
962
+ /** Brand-light menu surface: primary in light app mode, primary-darkest in dark app mode. */
963
+ protected readonly sideMenuBrandLightSurfaceClass: _angular_core.Signal<"primary-surface" | "ax-dark primary-darkest-surface">;
964
+ /** Header chrome for dark / light / brand-light / brand-dark menu appearances. */
965
+ protected readonly sideMenuHeaderClass: _angular_core.Signal<string>;
966
+ /** Body chrome for dark / light / brand-light / brand-dark menu appearances. */
967
+ protected readonly sideMenuSurfaceClass: _angular_core.Signal<string>;
968
+ /** White scrollbar thumb on dark menu surfaces. */
969
+ protected readonly sideMenuScrollUsesLightThumb: _angular_core.Signal<boolean>;
840
970
  constructor();
841
971
  protected handleResizingEnded(e: AXValueChangedEvent<number>): void;
842
972
  protected handleBackdropClick(): void;