@acorex/platform 21.0.0-next.8 → 21.0.0-next.83
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/contracts/README.md +3 -0
- package/fesm2022/acorex-platform-auth.mjs +201 -81
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs +177 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +4490 -880
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-contracts.mjs +38 -0
- package/fesm2022/acorex-platform-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-core.mjs +2612 -667
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +557 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1255 -209
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +6486 -1915
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +612 -287
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-CwG6n_Yb.mjs +376 -0
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-CwG6n_Yb.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component--IeMZLIr.mjs +100 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component--IeMZLIr.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +22502 -9964
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +1360 -338
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2226 -524
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +18742 -16715
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +391 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs} +21 -28
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs +48 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs +42 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +2337 -94
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs} +52 -33
- package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +793 -612
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +997 -274
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +41 -35
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +40 -19
- package/types/acorex-platform-common.d.ts +3673 -0
- package/types/acorex-platform-contracts.d.ts +940 -0
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +1029 -170
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +262 -55
- package/types/acorex-platform-layout-components.d.ts +3329 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/types/acorex-platform-layout-entity.d.ts +4512 -0
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +334 -91
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +438 -162
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1152 -507
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +571 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +268 -11
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +30 -2
- package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +436 -748
- package/common/index.d.ts +0 -2470
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs +0 -135
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D3qZa5fM.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D3qZa5fM.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs +0 -31
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs +0 -25
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Dz0cylyQ.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Dz0cylyQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1670
- package/layout/entity/index.d.ts +0 -2294
- package/runtime/index.d.ts +0 -307
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -0,0 +1,3673 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, Signal, Injector, ErrorHandler, ModuleWithProviders, EventEmitter, ElementRef, Renderer2, NgZone, ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import { AXDataSourceOperator, AXStyleColorType, AXDataSourceFilterOption } from '@acorex/cdk/common';
|
|
4
|
+
import * as i3 from '@acorex/components/popup';
|
|
5
|
+
import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
|
|
6
|
+
import * as i1 from '@acorex/platform/core';
|
|
7
|
+
import { AXPValueTransformerFunctions, AXPMultiLanguageString, AXPOptionsData, AXPExpression, AXPFilterDefinition, AXPMetaData, AXPSystemActionType, AXPValidationRules, AXPGridLayoutOptions, AXPUserReference, AXPExecuteCommand, AXPKeyboardShortcutHelpEntry, AXPLogoConfig, AXPFileListItem, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPNavigateActionCommand, AXPKeyboardShortcut, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService, AXPApplicationUserReference, AXPEntityReference, AXPPlatformScopeKey, AXPWidgetTriggers, AXPPlatformScope } from '@acorex/platform/core';
|
|
8
|
+
import { AXPWidgetTypesMap, AXPWidgetNode, AXPWidgetProperty } from '@acorex/platform/layout/widget-core';
|
|
9
|
+
import * as i4 from '@acorex/core/date-time';
|
|
10
|
+
import { AXCalendarService } from '@acorex/core/date-time';
|
|
11
|
+
import * as _angular_router from '@angular/router';
|
|
12
|
+
import { Route, Routes, UrlTree, Router, RedirectCommand, ActivatedRouteSnapshot, CanActivateFn, CanDeactivateFn, NavigationExtras } from '@angular/router';
|
|
13
|
+
import * as i2 from '@acorex/platform/workflow';
|
|
14
|
+
import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
|
|
15
|
+
import * as i5 from '@acorex/components/toast';
|
|
16
|
+
import { AXPFileStorageCreateRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileStorageFindRequest, AXPFileManyStorageInfo, AXPMetaDataDefinition } from '@acorex/platform/contracts';
|
|
17
|
+
import * as rxjs from 'rxjs';
|
|
18
|
+
import { Subject } from 'rxjs';
|
|
19
|
+
import * as _ngrx_signals from '@ngrx/signals';
|
|
20
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
21
|
+
import { AXFormatService } from '@acorex/core/format';
|
|
22
|
+
import { AXLocaleProfile } from '@acorex/core/locale';
|
|
23
|
+
|
|
24
|
+
/** Platform common datasource registry names. */
|
|
25
|
+
declare const AXPPlatformCommonDataSourceKeys: {
|
|
26
|
+
readonly MenuItems: "platform-menu-items";
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** JSON data primitive for the specialist final deliverable. */
|
|
30
|
+
type AXPAgentOutputKind = 'string' | 'object' | 'array';
|
|
31
|
+
/** When `kind` is `object`, controls how the parsed value maps into chat transcript segments. */
|
|
32
|
+
type AXPOutputTranscriptSegmentId = 'text' | 'node' | 'followUp' | 'file';
|
|
33
|
+
/**
|
|
34
|
+
* Minimal JSON-Schema-like object for native provider hints and local validation.
|
|
35
|
+
*/
|
|
36
|
+
interface AXPJsonSchemaLike {
|
|
37
|
+
type?: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
|
|
38
|
+
properties?: Record<string, AXPJsonSchemaLike>;
|
|
39
|
+
items?: AXPJsonSchemaLike | AXPJsonSchemaLike[];
|
|
40
|
+
required?: string[];
|
|
41
|
+
enum?: unknown[];
|
|
42
|
+
additionalProperties?: boolean | AXPJsonSchemaLike;
|
|
43
|
+
description?: string;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
/** Provider-native structured output hint (OpenAI `response_format`, Gemini `responseMimeType`). */
|
|
47
|
+
type AXPAgentResponseFormat = {
|
|
48
|
+
type: 'text';
|
|
49
|
+
} | {
|
|
50
|
+
type: 'json_object';
|
|
51
|
+
} | {
|
|
52
|
+
type: 'json_schema';
|
|
53
|
+
schema: AXPJsonSchemaLike;
|
|
54
|
+
name?: string;
|
|
55
|
+
strict?: boolean;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Catalog row contract for specialist final output (separate from domain `systemPrompt`).
|
|
59
|
+
* Field paths align with agent/assist entity `outputContract` JSON.
|
|
60
|
+
*/
|
|
61
|
+
interface AXPAgentOutputContract {
|
|
62
|
+
kind: AXPAgentOutputKind;
|
|
63
|
+
/**
|
|
64
|
+
* When `kind` is `object`: `text` = generic JSON object as text; `node` = inner widget node in chat;
|
|
65
|
+
* `followUp` = `{"type":"followUp","content":[...]}` envelope.
|
|
66
|
+
*/
|
|
67
|
+
transcriptSegment?: AXPOutputTranscriptSegmentId;
|
|
68
|
+
instruction?: string;
|
|
69
|
+
schemaSummary?: string;
|
|
70
|
+
schema?: AXPJsonSchemaLike;
|
|
71
|
+
schemaName?: string;
|
|
72
|
+
schemaStrict?: boolean;
|
|
73
|
+
validationCommandName?: string;
|
|
74
|
+
structuredRetries?: number;
|
|
75
|
+
providerResponseFormat?: AXPAgentResponseFormat;
|
|
76
|
+
}
|
|
77
|
+
/** Default structured retry count when `structuredRetries` is omitted on structured kinds. */
|
|
78
|
+
declare const AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES = 2;
|
|
79
|
+
/**
|
|
80
|
+
* Registered preset for an output-contract transcript segment.
|
|
81
|
+
* Modules register via {@link AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER}.
|
|
82
|
+
*/
|
|
83
|
+
interface AXPOutputContractTranscriptSegmentDefinition {
|
|
84
|
+
/** Segment id (`text`, `node`, `followUp`). */
|
|
85
|
+
name: AXPOutputTranscriptSegmentId;
|
|
86
|
+
/** i18n key or display title for admin UI selects. */
|
|
87
|
+
title: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
/** Contract kinds this segment applies to (defaults to `object` only). */
|
|
90
|
+
applicableKinds?: AXPAgentOutputKind[];
|
|
91
|
+
/** Default `outputContract` field values when this segment is chosen. */
|
|
92
|
+
contract: AXPAgentOutputContract;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
type AXPOutputContractTranscriptSegmentProviderToken = AXPOutputContractTranscriptSegmentProvider | Promise<AXPOutputContractTranscriptSegmentProvider>;
|
|
96
|
+
/**
|
|
97
|
+
* Registers one or more transcript-segment presets for agent/assist `outputContract`.
|
|
98
|
+
* Use with `multi: true` in module providers.
|
|
99
|
+
*/
|
|
100
|
+
interface AXPOutputContractTranscriptSegmentProvider {
|
|
101
|
+
provide(): AXPOutputContractTranscriptSegmentDefinition[] | Promise<AXPOutputContractTranscriptSegmentDefinition[]>;
|
|
102
|
+
}
|
|
103
|
+
declare const AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER: InjectionToken<AXPOutputContractTranscriptSegmentProviderToken[]>;
|
|
104
|
+
|
|
105
|
+
declare class AXPOutputContractTranscriptSegmentService {
|
|
106
|
+
private readonly segmentProviders;
|
|
107
|
+
private definitionsByName;
|
|
108
|
+
private loadPromise;
|
|
109
|
+
/** All registered transcript segment definitions (deduped by `name`). */
|
|
110
|
+
getAll(): Promise<AXPOutputContractTranscriptSegmentDefinition[]>;
|
|
111
|
+
/** Lookup by segment id (`text`, `node`, `followUp`). */
|
|
112
|
+
get(name: AXPOutputTranscriptSegmentId): Promise<AXPOutputContractTranscriptSegmentDefinition | undefined>;
|
|
113
|
+
/** Default `outputContract` for a segment, or `undefined` when not registered. */
|
|
114
|
+
getContractPreset(name: AXPOutputTranscriptSegmentId): Promise<AXPAgentOutputContract | undefined>;
|
|
115
|
+
/** Clears the in-memory registry (e.g. after hot reload in dev). */
|
|
116
|
+
clearCache(): void;
|
|
117
|
+
private ensureLoaded;
|
|
118
|
+
private loadDefinitions;
|
|
119
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPOutputContractTranscriptSegmentService, never>;
|
|
120
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPOutputContractTranscriptSegmentService>;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
interface AXPAppVersion {
|
|
124
|
+
version: string;
|
|
125
|
+
build: number;
|
|
126
|
+
date: Date;
|
|
127
|
+
}
|
|
128
|
+
interface AXPAppVersionProvider {
|
|
129
|
+
provider(): Promise<AXPAppVersion>;
|
|
130
|
+
}
|
|
131
|
+
declare const AXP_APP_VERSION_PROVIDER: InjectionToken<AXPAppVersionProvider>;
|
|
132
|
+
declare class AXPAppVersionService {
|
|
133
|
+
private provider;
|
|
134
|
+
getAppVersion(): Promise<AXPAppVersion>;
|
|
135
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPAppVersionService, never>;
|
|
136
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPAppVersionService>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface AXEntityPropertyWidget {
|
|
140
|
+
type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
|
|
141
|
+
path?: string;
|
|
142
|
+
id?: string;
|
|
143
|
+
children?: AXEntityPropertyWidget[];
|
|
144
|
+
mode: 'view' | 'edit';
|
|
145
|
+
options?: Record<string, any>;
|
|
146
|
+
triggers?: {
|
|
147
|
+
event: string;
|
|
148
|
+
action: string;
|
|
149
|
+
disabled?: boolean;
|
|
150
|
+
}[];
|
|
151
|
+
valueTransforms?: AXPValueTransformerFunctions;
|
|
152
|
+
}
|
|
153
|
+
declare enum AXPRelationshipKind {
|
|
154
|
+
Association = 0,
|
|
155
|
+
Composition = 1,
|
|
156
|
+
Aggregation = 2
|
|
157
|
+
}
|
|
158
|
+
declare enum AXPRelationshipCardinality {
|
|
159
|
+
OneToOne = 0,
|
|
160
|
+
OneToMany = 1,
|
|
161
|
+
ManyToMany = 2
|
|
162
|
+
}
|
|
163
|
+
interface AXPRelationship {
|
|
164
|
+
id: string;
|
|
165
|
+
from: string;
|
|
166
|
+
to: string;
|
|
167
|
+
kind: AXPRelationshipKind;
|
|
168
|
+
cardinality: AXPRelationshipCardinality;
|
|
169
|
+
}
|
|
170
|
+
declare enum AXPEntityCommandScope {
|
|
171
|
+
TypeLevel = "typeLevel",
|
|
172
|
+
Selected = "selected",
|
|
173
|
+
Individual = "individual",
|
|
174
|
+
Section = "section"
|
|
175
|
+
}
|
|
176
|
+
declare enum AXPEntityQueryType {
|
|
177
|
+
Single = "single",
|
|
178
|
+
List = "list"
|
|
179
|
+
}
|
|
180
|
+
interface AXPEntityPropertyLayoutConfig extends AXPGridLayoutOptions {
|
|
181
|
+
label?: {
|
|
182
|
+
visible?: boolean;
|
|
183
|
+
};
|
|
184
|
+
order?: number;
|
|
185
|
+
visible?: boolean | AXPExpression;
|
|
186
|
+
}
|
|
187
|
+
interface AXPEntityPropertyGroup {
|
|
188
|
+
id: string;
|
|
189
|
+
title: string;
|
|
190
|
+
description?: string;
|
|
191
|
+
permissions?: string[];
|
|
192
|
+
icon?: string;
|
|
193
|
+
}
|
|
194
|
+
interface AXPEntityPropertyView {
|
|
195
|
+
name: string;
|
|
196
|
+
dataPath?: string;
|
|
197
|
+
permissions?: string[];
|
|
198
|
+
layout?: AXPEntityPropertyLayoutConfig;
|
|
199
|
+
}
|
|
200
|
+
interface AXPEntityPropertyUpdateView extends AXPEntityPropertyView {
|
|
201
|
+
}
|
|
202
|
+
interface AXPEntityPropertyCreateView extends AXPEntityPropertyView {
|
|
203
|
+
defaultValue?: any;
|
|
204
|
+
}
|
|
205
|
+
interface AXPEntitySectionView {
|
|
206
|
+
id: string;
|
|
207
|
+
order?: number;
|
|
208
|
+
collapsed?: boolean;
|
|
209
|
+
layout?: AXPEntityPropertyLayoutConfig;
|
|
210
|
+
}
|
|
211
|
+
interface AXPEntityProperty {
|
|
212
|
+
name: string;
|
|
213
|
+
title: string;
|
|
214
|
+
description?: string;
|
|
215
|
+
groupId?: string;
|
|
216
|
+
schema: {
|
|
217
|
+
dataType: string;
|
|
218
|
+
nullable?: boolean;
|
|
219
|
+
readonly?: boolean | string;
|
|
220
|
+
visible?: boolean | string;
|
|
221
|
+
defaultValue?: any | string | ((context: any | null) => any);
|
|
222
|
+
unique?: {
|
|
223
|
+
enabled: boolean;
|
|
224
|
+
};
|
|
225
|
+
interface?: Partial<AXEntityPropertyWidget>;
|
|
226
|
+
};
|
|
227
|
+
options?: {
|
|
228
|
+
filter?: {
|
|
229
|
+
advance?: {
|
|
230
|
+
enabled?: boolean;
|
|
231
|
+
widgetType?: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];
|
|
232
|
+
};
|
|
233
|
+
inline?: {
|
|
234
|
+
enabled?: boolean;
|
|
235
|
+
};
|
|
236
|
+
preload?: {
|
|
237
|
+
enabled?: boolean;
|
|
238
|
+
required?: boolean;
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
sort?: {
|
|
242
|
+
enabled?: boolean;
|
|
243
|
+
};
|
|
244
|
+
};
|
|
245
|
+
validations?: AXPValidationRules;
|
|
246
|
+
}
|
|
247
|
+
/** Logical alignment for table column header/cell (respects RTL). */
|
|
248
|
+
type AXPColumnContentAlign = 'start' | 'center' | 'end';
|
|
249
|
+
/**
|
|
250
|
+
* Column alignment: shorthand applies to both header and cell;
|
|
251
|
+
* object form sets each side independently (omitted keys default to start).
|
|
252
|
+
*/
|
|
253
|
+
type AXPColumnAlign = AXPColumnContentAlign | {
|
|
254
|
+
header?: AXPColumnContentAlign;
|
|
255
|
+
cell?: AXPColumnContentAlign;
|
|
256
|
+
};
|
|
257
|
+
/** Shared field definition for list layouts (table columns, card fields, etc.). */
|
|
258
|
+
interface AXPEntityDisplayField {
|
|
259
|
+
name: string;
|
|
260
|
+
title?: string;
|
|
261
|
+
showAs?: {
|
|
262
|
+
type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
|
|
263
|
+
options?: Record<string, any>;
|
|
264
|
+
};
|
|
265
|
+
options?: {
|
|
266
|
+
/** When string, evaluate against parent detail context (e.g. related list). */
|
|
267
|
+
visible?: boolean | string;
|
|
268
|
+
/** Optional dataPath override for field binding. */
|
|
269
|
+
dataPath?: string;
|
|
270
|
+
[name: string]: any;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** Card layout field presentation in master list card view. */
|
|
274
|
+
type AXPCardFieldDisplay = 'simple' | 'badge';
|
|
275
|
+
/** Badge color: semantic token or per-row expression (`{{ context.eval(...) }}`). */
|
|
276
|
+
type AXPCardBadgeColor = AXStyleColorType | AXPExpression;
|
|
277
|
+
interface AXPCardBadgeDisplayOptions {
|
|
278
|
+
/** Semantic color or expression evaluated against row context. */
|
|
279
|
+
color?: AXPCardBadgeColor;
|
|
280
|
+
}
|
|
281
|
+
interface AXPCardBadgeDisplay {
|
|
282
|
+
type: 'badge';
|
|
283
|
+
options?: AXPCardBadgeDisplayOptions;
|
|
284
|
+
}
|
|
285
|
+
/** Shorthand (`badge` / `simple`) or structured badge config with optional per-row color. */
|
|
286
|
+
type AXPCardFieldDisplayConfig = AXPCardFieldDisplay | AXPCardBadgeDisplay;
|
|
287
|
+
/** Card layout field in master list view. */
|
|
288
|
+
type AXPCardField = AXPEntityDisplayField & {
|
|
289
|
+
layout?: AXPEntityPropertyLayoutConfig;
|
|
290
|
+
/**
|
|
291
|
+
* Field presentation. Default: `simple` (card body).
|
|
292
|
+
* Use `badge` or `{ type: 'badge', options: { color } }` for header chips beside title.
|
|
293
|
+
*/
|
|
294
|
+
display?: AXPCardFieldDisplayConfig;
|
|
295
|
+
/**
|
|
296
|
+
* Badge color when presentation is badge-shaped.
|
|
297
|
+
* Prefer `display: { type: 'badge', options: { color } }` for new definitions.
|
|
298
|
+
* Omit for status fields — color is resolved from the status definition per row.
|
|
299
|
+
*/
|
|
300
|
+
badgeColor?: AXPCardBadgeColor;
|
|
301
|
+
};
|
|
302
|
+
/** Whether the card field is shown as a header badge (not in the card body). */
|
|
303
|
+
declare function isCardFieldBadgeDisplay(display: AXPCardFieldDisplayConfig | undefined): display is 'badge' | AXPCardBadgeDisplay;
|
|
304
|
+
/** Resolves static badge color config from {@link AXPCardField.display} and legacy {@link AXPCardField.badgeColor}. */
|
|
305
|
+
declare function resolveCardFieldBadgeColor(field: Pick<AXPCardField, 'display' | 'badgeColor'>): AXPCardBadgeColor | undefined;
|
|
306
|
+
interface AXPEntityTableColumn extends AXPEntityDisplayField {
|
|
307
|
+
options?: AXPEntityDisplayField['options'] & {
|
|
308
|
+
/** Initial column width (overrides widget column width when set). */
|
|
309
|
+
width?: string;
|
|
310
|
+
/** Header/cell alignment (shorthand or per-side). */
|
|
311
|
+
align?: AXPColumnAlign;
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
interface AXPEntityCommand {
|
|
315
|
+
execute: string | Function;
|
|
316
|
+
permissions?: string[];
|
|
317
|
+
}
|
|
318
|
+
interface AXPEntityQuery {
|
|
319
|
+
execute: string | Function;
|
|
320
|
+
type: AXPEntityQueryType;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
type AXPCommandActionType = AXPSystemActionType;
|
|
324
|
+
interface AXPCommandActionLook {
|
|
325
|
+
color: AXStyleColorType;
|
|
326
|
+
icon: string;
|
|
327
|
+
}
|
|
328
|
+
type AXPCommandActionPriority = 'primary' | 'secondary';
|
|
329
|
+
type AXPCommandActionCallback = string | {
|
|
330
|
+
name: string;
|
|
331
|
+
options?: {
|
|
332
|
+
decoration?: {
|
|
333
|
+
header?: {
|
|
334
|
+
title?: string;
|
|
335
|
+
};
|
|
336
|
+
};
|
|
337
|
+
process?: {
|
|
338
|
+
data?: any;
|
|
339
|
+
[name: string]: any;
|
|
340
|
+
};
|
|
341
|
+
layout?: {
|
|
342
|
+
size?: AXPopupSizeType;
|
|
343
|
+
};
|
|
344
|
+
[name: string]: any;
|
|
345
|
+
};
|
|
346
|
+
metadata?: AXPMetaData;
|
|
347
|
+
};
|
|
348
|
+
interface AXPCommandActionDisplay extends Partial<AXPCommandActionLook> {
|
|
349
|
+
name?: string;
|
|
350
|
+
command: AXPCommandActionCallback;
|
|
351
|
+
title: string;
|
|
352
|
+
type: AXPSystemActionType | string;
|
|
353
|
+
priority: 'primary' | 'secondary' | 'none';
|
|
354
|
+
separated?: boolean;
|
|
355
|
+
permissions?: string[];
|
|
356
|
+
hidden?: boolean | string;
|
|
357
|
+
disabled?: boolean | string;
|
|
358
|
+
default?: boolean;
|
|
359
|
+
order?: number;
|
|
360
|
+
/**
|
|
361
|
+
* Keyboard chords for this action (e.g. `'ctrl+shift+a'`).
|
|
362
|
+
* Pass `[]` to disable shortcuts. When omitted, platform defaults may apply for known commands.
|
|
363
|
+
*/
|
|
364
|
+
shortcuts?: string[];
|
|
365
|
+
}
|
|
366
|
+
interface AXPEntityAction extends AXPCommandActionDisplay {
|
|
367
|
+
scope: AXPEntityCommandScope;
|
|
368
|
+
/** Child actions for dropdown submenu */
|
|
369
|
+
items?: AXPEntityAction[];
|
|
370
|
+
}
|
|
371
|
+
interface AXPEntity {
|
|
372
|
+
plugins?: {
|
|
373
|
+
name: string;
|
|
374
|
+
options?: AXPOptionsData;
|
|
375
|
+
}[];
|
|
376
|
+
/**
|
|
377
|
+
* High-level rules: when expression evaluates true, apply actions to the given targets
|
|
378
|
+
* (property/section/action). Reduces repetition of the same condition across many properties.
|
|
379
|
+
* Evaluation context: form data, user, entity; precedence vs property-level visible/readonly
|
|
380
|
+
* must be defined where rules are applied.
|
|
381
|
+
*/
|
|
382
|
+
rules?: Array<{
|
|
383
|
+
name: string;
|
|
384
|
+
expression: AXPExpression;
|
|
385
|
+
actions: Array<{
|
|
386
|
+
target: {
|
|
387
|
+
type: 'property' | 'section' | 'action';
|
|
388
|
+
name: string;
|
|
389
|
+
};
|
|
390
|
+
values: AXPOptionsData;
|
|
391
|
+
}>;
|
|
392
|
+
}>;
|
|
393
|
+
module: string;
|
|
394
|
+
name: string;
|
|
395
|
+
icon?: string;
|
|
396
|
+
parentKey?: string;
|
|
397
|
+
category?: AXPCategoryEntity;
|
|
398
|
+
title: string;
|
|
399
|
+
formats: {
|
|
400
|
+
individual: string;
|
|
401
|
+
plural: string;
|
|
402
|
+
lookup?: string;
|
|
403
|
+
displayName?: string;
|
|
404
|
+
searchResult?: {
|
|
405
|
+
title: string;
|
|
406
|
+
description?: string;
|
|
407
|
+
};
|
|
408
|
+
};
|
|
409
|
+
relatedEntities?: AXPRelatedEntity[];
|
|
410
|
+
pages?: AXPEntityPage[];
|
|
411
|
+
groups?: AXPEntityPropertyGroup[];
|
|
412
|
+
properties: AXPEntityProperty[];
|
|
413
|
+
columns?: AXPEntityTableColumn[];
|
|
414
|
+
commands?: {
|
|
415
|
+
create?: AXPEntityCommand | undefined;
|
|
416
|
+
update?: AXPEntityCommand | undefined;
|
|
417
|
+
delete?: AXPEntityCommand | undefined;
|
|
418
|
+
[name: string]: AXPEntityCommand | undefined;
|
|
419
|
+
};
|
|
420
|
+
queries?: {
|
|
421
|
+
byKey?: AXPEntityQuery;
|
|
422
|
+
list?: AXPEntityQuery;
|
|
423
|
+
lookup?: AXPEntityQuery;
|
|
424
|
+
history?: AXPEntityQuery;
|
|
425
|
+
comments?: AXPEntityQuery;
|
|
426
|
+
[name: string]: AXPEntityQuery | undefined;
|
|
427
|
+
};
|
|
428
|
+
validations?: AXPValidationRules;
|
|
429
|
+
interfaces?: {
|
|
430
|
+
master?: {
|
|
431
|
+
single?: AXPEntityMasterSingleLayoutView;
|
|
432
|
+
list?: AXPEntityMasterListView;
|
|
433
|
+
create?: AXPEntityMasterCreateLayoutView;
|
|
434
|
+
update?: AXPEntityMasterUpdateLayoutView;
|
|
435
|
+
};
|
|
436
|
+
detail?: {
|
|
437
|
+
list?: AXPEntityDetailListView;
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
declare function getEntityInfo(entity: AXPEntity): {
|
|
442
|
+
source: string;
|
|
443
|
+
module: {
|
|
444
|
+
route: string;
|
|
445
|
+
};
|
|
446
|
+
entity: {
|
|
447
|
+
route: string;
|
|
448
|
+
};
|
|
449
|
+
};
|
|
450
|
+
declare function createQueryView(name: string, title: string, fixed: boolean, params?: {
|
|
451
|
+
columns?: string[];
|
|
452
|
+
conditions?: any[];
|
|
453
|
+
sorts?: AXPQuerySort[];
|
|
454
|
+
}): AXPQueryView;
|
|
455
|
+
declare function createAllQueryView(params?: {
|
|
456
|
+
columns?: string[];
|
|
457
|
+
conditions?: AXPQueryFilter[];
|
|
458
|
+
sorts?: AXPQuerySort[];
|
|
459
|
+
} | undefined): AXPQueryView;
|
|
460
|
+
interface AXPRelatedEntity {
|
|
461
|
+
entity: string;
|
|
462
|
+
title?: string;
|
|
463
|
+
icon?: string;
|
|
464
|
+
columns?: string[] | AXPEntityTableColumn[];
|
|
465
|
+
properties?: string[];
|
|
466
|
+
excludeProperties?: string[];
|
|
467
|
+
layout?: {
|
|
468
|
+
type: 'tab-detail' | 'tab-list' | 'page-detail' | 'page-list' | 'merge-detail';
|
|
469
|
+
order?: number;
|
|
470
|
+
position?: 'before' | 'after' | 'middle';
|
|
471
|
+
};
|
|
472
|
+
conditions?: AXPQueryFilter[];
|
|
473
|
+
customFilterDefinitions?: Partial<AXPFilterDefinition>[];
|
|
474
|
+
hidden?: boolean | AXPExpression;
|
|
475
|
+
actions?: AXPEntityAction[];
|
|
476
|
+
/**
|
|
477
|
+
* Controls inclusion on the host entity master **create** / **update** form.
|
|
478
|
+
* Defaults depend on layout:
|
|
479
|
+
* - **merge-detail**: omitted flags behave as **true** (opt-out with `false`).
|
|
480
|
+
* - **tab-list** / **page-list**: omitted flags behave as **false** (opt-in with `true`).
|
|
481
|
+
*/
|
|
482
|
+
appearOn?: {
|
|
483
|
+
/** Include on host create form (see defaults above per layout type). */
|
|
484
|
+
create?: boolean;
|
|
485
|
+
/** Include on host update form (see defaults above per layout type). */
|
|
486
|
+
update?: boolean;
|
|
487
|
+
};
|
|
488
|
+
/**
|
|
489
|
+
* Relationship-level persistence strategy for merge-detail data.
|
|
490
|
+
* Defaults:
|
|
491
|
+
* - strategy: 'embedded'
|
|
492
|
+
* - idField: last segment of dataPath + 'Id' (or 'relatedId' when dataPath is missing)
|
|
493
|
+
* - map: undefined (pass-through)
|
|
494
|
+
* - hydrate: 'eager' (applies to getOne only in mock)
|
|
495
|
+
* - cascade.delete: 'none'
|
|
496
|
+
*/
|
|
497
|
+
persistence?: {
|
|
498
|
+
strategy?: 'embedded' | 'referenced';
|
|
499
|
+
idField?: string;
|
|
500
|
+
dataPath?: string;
|
|
501
|
+
map?: Record<string, string>;
|
|
502
|
+
hydrate?: 'eager' | 'lazy';
|
|
503
|
+
cascade?: {
|
|
504
|
+
delete?: 'none' | 'orphans' | 'all';
|
|
505
|
+
};
|
|
506
|
+
foreignKeyField?: string;
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
interface AXPEntityPage {
|
|
510
|
+
/**
|
|
511
|
+
* Key to identify the component in the page component registry
|
|
512
|
+
*/
|
|
513
|
+
componentKey: string;
|
|
514
|
+
/**
|
|
515
|
+
* Property name to render when the page component displays an entity field (e.g. 'questions', 'attachments').
|
|
516
|
+
* Passed to the page component as pageConfig.field.
|
|
517
|
+
*/
|
|
518
|
+
field?: string;
|
|
519
|
+
/**
|
|
520
|
+
* Title of the page (displayed in navigation)
|
|
521
|
+
*/
|
|
522
|
+
title?: AXPMultiLanguageString;
|
|
523
|
+
/**
|
|
524
|
+
* Icon for the page (displayed in navigation)
|
|
525
|
+
*/
|
|
526
|
+
icon?: string;
|
|
527
|
+
/**
|
|
528
|
+
* Description of the page
|
|
529
|
+
*/
|
|
530
|
+
description?: AXPMultiLanguageString;
|
|
531
|
+
/**
|
|
532
|
+
* Layout configuration for page positioning
|
|
533
|
+
*/
|
|
534
|
+
layout?: {
|
|
535
|
+
/**
|
|
536
|
+
* Order of the page (lower numbers appear first)
|
|
537
|
+
*/
|
|
538
|
+
order?: number;
|
|
539
|
+
/**
|
|
540
|
+
* Position relative to the main page
|
|
541
|
+
*/
|
|
542
|
+
position?: 'before' | 'after' | 'middle';
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Visibility condition (boolean or expression string)
|
|
546
|
+
*/
|
|
547
|
+
hidden?: boolean | string;
|
|
548
|
+
/**
|
|
549
|
+
* Permissions required to view this page
|
|
550
|
+
*/
|
|
551
|
+
permissions?: string[];
|
|
552
|
+
/**
|
|
553
|
+
* Controls inclusion on the host entity master **create** / **update** form wizard.
|
|
554
|
+
* Omitted flags behave as **false** (opt-in with `true`), same as `tab-list` / `page-list` related entities.
|
|
555
|
+
*/
|
|
556
|
+
appearOn?: {
|
|
557
|
+
/** Include as a wizard step on host create form. */
|
|
558
|
+
create?: boolean;
|
|
559
|
+
/** Include as a wizard step on host update form. */
|
|
560
|
+
update?: boolean;
|
|
561
|
+
};
|
|
562
|
+
options?: Record<string, any>;
|
|
563
|
+
}
|
|
564
|
+
interface AXPCategoryEntity {
|
|
565
|
+
entity: string;
|
|
566
|
+
title?: string;
|
|
567
|
+
textField?: string;
|
|
568
|
+
valueField?: string;
|
|
569
|
+
conditions?: AXPQueryFilter[];
|
|
570
|
+
applyConditions?: AXPQueryFilter[];
|
|
571
|
+
}
|
|
572
|
+
interface AXPEntityVersionHistory {
|
|
573
|
+
enabled?: boolean;
|
|
574
|
+
showInList?: boolean;
|
|
575
|
+
showInDetail?: boolean;
|
|
576
|
+
}
|
|
577
|
+
interface AXPAggregate {
|
|
578
|
+
id: string;
|
|
579
|
+
name: string;
|
|
580
|
+
title: AXPMultiLanguageString;
|
|
581
|
+
entities: AXPEntity[];
|
|
582
|
+
}
|
|
583
|
+
interface AXPModule {
|
|
584
|
+
name: string;
|
|
585
|
+
title: AXPMultiLanguageString;
|
|
586
|
+
aggregates: AXPAggregate[];
|
|
587
|
+
relationships?: AXPRelationship[];
|
|
588
|
+
}
|
|
589
|
+
interface AXPApplication {
|
|
590
|
+
name: string;
|
|
591
|
+
title: AXPMultiLanguageString;
|
|
592
|
+
modules: AXPModule[];
|
|
593
|
+
}
|
|
594
|
+
interface AXPEntityMasterLayoutView {
|
|
595
|
+
title?: string;
|
|
596
|
+
sections: AXPEntitySectionView[];
|
|
597
|
+
properties?: AXPEntityPropertyView[];
|
|
598
|
+
}
|
|
599
|
+
/** Quick create config for lookup widgets (+ button) - uses subset of create form */
|
|
600
|
+
interface AXPEntityQuickCreate {
|
|
601
|
+
enabled?: boolean;
|
|
602
|
+
properties?: string[];
|
|
603
|
+
layout?: {
|
|
604
|
+
size?: AXPopupSizeType;
|
|
605
|
+
};
|
|
606
|
+
excludeProperties?: string[];
|
|
607
|
+
}
|
|
608
|
+
interface AXPEntityMasterCreateLayoutView extends AXPEntityMasterLayoutView {
|
|
609
|
+
steps?: {
|
|
610
|
+
id: string;
|
|
611
|
+
title: string;
|
|
612
|
+
description?: string;
|
|
613
|
+
};
|
|
614
|
+
/** Quick create config for lookup widgets - uses subset of create form */
|
|
615
|
+
quickCreate?: AXPEntityQuickCreate;
|
|
616
|
+
}
|
|
617
|
+
interface AXPEntityMasterUpdateLayoutView extends AXPEntityMasterLayoutView {
|
|
618
|
+
}
|
|
619
|
+
interface AXPEntityMasterSingleLayoutView extends AXPEntityMasterLayoutView {
|
|
620
|
+
title: string;
|
|
621
|
+
description?: string;
|
|
622
|
+
actions?: AXPEntityAction[];
|
|
623
|
+
}
|
|
624
|
+
interface AXPEntityMasterListView {
|
|
625
|
+
title?: string;
|
|
626
|
+
description?: string;
|
|
627
|
+
actions?: AXPEntityAction[];
|
|
628
|
+
views: AXPQueryView[];
|
|
629
|
+
layouts?: {
|
|
630
|
+
table?: {
|
|
631
|
+
enabled?: boolean;
|
|
632
|
+
columns: AXPEntityTableColumn[];
|
|
633
|
+
};
|
|
634
|
+
card?: {
|
|
635
|
+
enabled?: boolean;
|
|
636
|
+
header: {
|
|
637
|
+
/** Property path, expression (`{{ ... }}`), or literal — evaluated per row. */
|
|
638
|
+
title?: string;
|
|
639
|
+
description?: string;
|
|
640
|
+
icon?: string;
|
|
641
|
+
};
|
|
642
|
+
fields: AXPCardField[];
|
|
643
|
+
};
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
type AXPEntityMasterListLayoutType = 'table' | 'card';
|
|
647
|
+
/** Master list presentation: table or card with compact (collapsed) / expanded bodies. */
|
|
648
|
+
type AXPEntityMasterListDisplayMode = 'table' | 'card-compact' | 'card-expanded';
|
|
649
|
+
interface AXPEntityMasterListLayoutOption {
|
|
650
|
+
id: AXPEntityMasterListLayoutType;
|
|
651
|
+
title: string;
|
|
652
|
+
icon?: string;
|
|
653
|
+
}
|
|
654
|
+
/** Resolves master list layouts that are currently enabled. */
|
|
655
|
+
declare function resolveEnabledMasterListLayouts(layouts?: AXPEntityMasterListView['layouts']): AXPEntityMasterListLayoutType[];
|
|
656
|
+
/** First enabled layout; used as the default when no user preference is stored. */
|
|
657
|
+
declare function resolveDefaultMasterListLayout(layouts?: AXPEntityMasterListView['layouts']): AXPEntityMasterListLayoutType;
|
|
658
|
+
interface AXPEntityDetailListView {
|
|
659
|
+
title?: string;
|
|
660
|
+
description?: string;
|
|
661
|
+
columns: AXPEntityTableColumn[];
|
|
662
|
+
actions?: AXPEntityAction[];
|
|
663
|
+
}
|
|
664
|
+
interface AXPQueryView {
|
|
665
|
+
name: string;
|
|
666
|
+
fixed: boolean;
|
|
667
|
+
title: string;
|
|
668
|
+
columns: string[];
|
|
669
|
+
conditions: AXPQueryFilter[];
|
|
670
|
+
sorts: AXPQuerySort[];
|
|
671
|
+
indexCol?: boolean;
|
|
672
|
+
pageSize?: number;
|
|
673
|
+
visible?: boolean;
|
|
674
|
+
}
|
|
675
|
+
interface AXPQueryFilter {
|
|
676
|
+
name: string;
|
|
677
|
+
operator: AXDataSourceOperator;
|
|
678
|
+
value: any;
|
|
679
|
+
}
|
|
680
|
+
interface AXPQuerySort {
|
|
681
|
+
name: string;
|
|
682
|
+
dir: 'asc' | 'desc';
|
|
683
|
+
}
|
|
684
|
+
declare enum AXPEntityType {
|
|
685
|
+
Entity = 0,
|
|
686
|
+
AggregateRoot = 1,
|
|
687
|
+
ValueObject = 2
|
|
688
|
+
}
|
|
689
|
+
interface AXPEntityV2 {
|
|
690
|
+
version: 2;
|
|
691
|
+
module: string;
|
|
692
|
+
aggregate: string;
|
|
693
|
+
name: string;
|
|
694
|
+
type: AXPEntityType;
|
|
695
|
+
icon?: string;
|
|
696
|
+
title: string;
|
|
697
|
+
description?: string;
|
|
698
|
+
plugins?: {
|
|
699
|
+
name: string;
|
|
700
|
+
options?: AXPOptionsData;
|
|
701
|
+
}[];
|
|
702
|
+
pages?: AXPEntityPage[];
|
|
703
|
+
groups?: AXPEntityPropertyGroup[];
|
|
704
|
+
properties: AXPEntityProperty[];
|
|
705
|
+
formats: {
|
|
706
|
+
individual: string;
|
|
707
|
+
plural: string;
|
|
708
|
+
lookup?: string;
|
|
709
|
+
displayName?: string;
|
|
710
|
+
searchResult?: {
|
|
711
|
+
title: string;
|
|
712
|
+
description?: string;
|
|
713
|
+
};
|
|
714
|
+
};
|
|
715
|
+
columns?: AXPEntityTableColumn[];
|
|
716
|
+
validations?: AXPValidationRules;
|
|
717
|
+
interfaces?: {
|
|
718
|
+
master?: {
|
|
719
|
+
single?: AXPEntityMasterSingleLayoutView;
|
|
720
|
+
list?: AXPEntityMasterListView;
|
|
721
|
+
create?: AXPEntityMasterCreateLayoutView;
|
|
722
|
+
update?: AXPEntityMasterUpdateLayoutView;
|
|
723
|
+
};
|
|
724
|
+
detail?: {
|
|
725
|
+
list?: AXPEntityDetailListView;
|
|
726
|
+
};
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
interface AXPFilterOperator {
|
|
731
|
+
name: string;
|
|
732
|
+
title: string;
|
|
733
|
+
hasValue: boolean;
|
|
734
|
+
}
|
|
735
|
+
declare const EQ_OPER: AXPFilterOperator;
|
|
736
|
+
declare const NOT_EQ_OPER: AXPFilterOperator;
|
|
737
|
+
declare const GT_OPER: AXPFilterOperator;
|
|
738
|
+
declare const LT_OPER: AXPFilterOperator;
|
|
739
|
+
declare const GTE_OPER: AXPFilterOperator;
|
|
740
|
+
declare const LTE_OPER: AXPFilterOperator;
|
|
741
|
+
declare const CONTAINS_OPER: AXPFilterOperator;
|
|
742
|
+
declare const NOT_CONTAINS_OPER: AXPFilterOperator;
|
|
743
|
+
declare const IN_OPER: AXPFilterOperator;
|
|
744
|
+
declare const STARTS_WITH_OPER: AXPFilterOperator;
|
|
745
|
+
declare const ENDS_WITH_OPER: AXPFilterOperator;
|
|
746
|
+
declare const IS_EMPTY_OPER: AXPFilterOperator;
|
|
747
|
+
declare const IS_NOT_EMPTY_OPER: AXPFilterOperator;
|
|
748
|
+
declare const BETWEEN_OPER: AXPFilterOperator;
|
|
749
|
+
declare const STRING_OPERATORS: AXPFilterOperator[];
|
|
750
|
+
declare const NUMBER_OPERATORS: AXPFilterOperator[];
|
|
751
|
+
declare const BOOLEAN_OPERATORS: AXPFilterOperator[];
|
|
752
|
+
declare const DATE_OPERATORS: AXPFilterOperator[];
|
|
753
|
+
declare const ALL_DEFAULT_OPERATORS: AXPFilterOperator[];
|
|
754
|
+
|
|
755
|
+
type AXPDateTimeFilterPresetKind = 'computed' | 'manual';
|
|
756
|
+
interface AXPDateTimeFilterPreset {
|
|
757
|
+
id: string;
|
|
758
|
+
title: string;
|
|
759
|
+
kind: AXPDateTimeFilterPresetKind;
|
|
760
|
+
operationType?: string;
|
|
761
|
+
}
|
|
762
|
+
declare const DEFAULT_DATE_FILTER_PRESETS: AXPDateTimeFilterPreset[];
|
|
763
|
+
interface AXPDateTimeFilterValue {
|
|
764
|
+
operation?: {
|
|
765
|
+
type: string;
|
|
766
|
+
};
|
|
767
|
+
value?: string | {
|
|
768
|
+
from?: string;
|
|
769
|
+
to?: string;
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
declare function resolveDateFilterPresets(customPresets?: AXPDateTimeFilterPreset[], presetIds?: string[]): AXPDateTimeFilterPreset[];
|
|
773
|
+
declare function applyDateFilterPreset(presetId: string, calendarService: AXCalendarService): AXPDateTimeFilterValue | undefined;
|
|
774
|
+
declare function findManualPresetIdByOperation(operationType: string | undefined, presets: AXPDateTimeFilterPreset[]): string | undefined;
|
|
775
|
+
|
|
776
|
+
interface AXPHomePageDefinition {
|
|
777
|
+
key: string;
|
|
778
|
+
title: string;
|
|
779
|
+
route: Route;
|
|
780
|
+
}
|
|
781
|
+
declare const AXP_HOME_PAGES: InjectionToken<AXPHomePageDefinition[]>;
|
|
782
|
+
declare const AXP_HOME_PAGE_DEFAULT_KEY: InjectionToken<string>;
|
|
783
|
+
|
|
784
|
+
declare function provideDynamicHomePage(): EnvironmentProviders;
|
|
785
|
+
|
|
786
|
+
declare class AXPHomePageService {
|
|
787
|
+
private defaultHomePageKey;
|
|
788
|
+
private userHomePageKey;
|
|
789
|
+
private candidates;
|
|
790
|
+
private settingsService;
|
|
791
|
+
private sessionService;
|
|
792
|
+
private injector;
|
|
793
|
+
private originalConfig;
|
|
794
|
+
private loginPath;
|
|
795
|
+
private get flatCandidates();
|
|
796
|
+
constructor();
|
|
797
|
+
private init;
|
|
798
|
+
load(): Promise<void>;
|
|
799
|
+
getRegisteredList(): AXPHomePageDefinition[];
|
|
800
|
+
getRegisteredRoutes(): Routes;
|
|
801
|
+
getCurrent(): {
|
|
802
|
+
path: string;
|
|
803
|
+
title: string;
|
|
804
|
+
};
|
|
805
|
+
private findPath;
|
|
806
|
+
private buildFullPaths;
|
|
807
|
+
private refreshRoutes;
|
|
808
|
+
private applyMergedConfig;
|
|
809
|
+
/**
|
|
810
|
+
* Resolves the current user's home page as a router URL tree.
|
|
811
|
+
*/
|
|
812
|
+
resolveHomeUrlTree(): UrlTree;
|
|
813
|
+
navigateTo(): Promise<void>;
|
|
814
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPHomePageService, never>;
|
|
815
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPHomePageService>;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
declare class AXPHomePageModule {
|
|
819
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPHomePageModule, never>;
|
|
820
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXPHomePageModule, never, never, never>;
|
|
821
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXPHomePageModule>;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
type AXPInAppNotificationPriority = 'Notice' | 'Danger' | 'Warning';
|
|
825
|
+
interface AXPInAppNotificationCreateRequest {
|
|
826
|
+
id: string;
|
|
827
|
+
name: string;
|
|
828
|
+
title: string;
|
|
829
|
+
body: string;
|
|
830
|
+
icon: string;
|
|
831
|
+
priority: AXPInAppNotificationPriority;
|
|
832
|
+
receiver: AXPUserReference;
|
|
833
|
+
data?: Record<string, unknown>;
|
|
834
|
+
}
|
|
835
|
+
/**
|
|
836
|
+
* Persists in-app notifications. Notification-management registers an implementation
|
|
837
|
+
* backed by {@link AXMNotificationService}.
|
|
838
|
+
*/
|
|
839
|
+
interface AXPInAppNotificationService {
|
|
840
|
+
create(request: AXPInAppNotificationCreateRequest): Promise<void>;
|
|
841
|
+
}
|
|
842
|
+
declare const AXP_IN_APP_NOTIFICATION_SERVICE: InjectionToken<AXPInAppNotificationService>;
|
|
843
|
+
|
|
844
|
+
type AXPBackgroundOperationStatus = 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
845
|
+
interface AXPBackgroundOperationCapabilities {
|
|
846
|
+
cancellable: boolean;
|
|
847
|
+
pausable: boolean;
|
|
848
|
+
resumable: boolean;
|
|
849
|
+
retryable: boolean;
|
|
850
|
+
/** When true, UI shows a progress bar only while {@link AXPBackgroundOperation.progress} is set. */
|
|
851
|
+
supportsProgress: boolean;
|
|
852
|
+
/** When true, UI may show ETA while {@link AXPBackgroundOperation.estimatedDurationMs} is set. */
|
|
853
|
+
supportsEstimate: boolean;
|
|
854
|
+
/** When true, the tray item is clickable and delegates to a registered handler. */
|
|
855
|
+
clickable: boolean;
|
|
856
|
+
/** When false, skip in-app notification on completed/cancelled. Default: true. */
|
|
857
|
+
notifyOnComplete?: boolean;
|
|
858
|
+
/** When false, skip in-app notification on failed. Default: true. */
|
|
859
|
+
notifyOnFailed?: boolean;
|
|
860
|
+
}
|
|
861
|
+
type AXPBackgroundOperationFailureMode = 'retry' | 'continue' | 'abort';
|
|
862
|
+
interface AXPBackgroundOperationFailurePolicy {
|
|
863
|
+
mode: AXPBackgroundOperationFailureMode;
|
|
864
|
+
currentStepId?: string;
|
|
865
|
+
maxRetries?: number;
|
|
866
|
+
retryCount?: number;
|
|
867
|
+
}
|
|
868
|
+
interface AXPBackgroundOperationError {
|
|
869
|
+
code?: string;
|
|
870
|
+
message: string;
|
|
871
|
+
detail?: string;
|
|
872
|
+
}
|
|
873
|
+
interface AXPBackgroundOperation {
|
|
874
|
+
id: string;
|
|
875
|
+
providerKey: string;
|
|
876
|
+
title: string;
|
|
877
|
+
status: AXPBackgroundOperationStatus;
|
|
878
|
+
progress?: number;
|
|
879
|
+
estimatedDurationMs?: number;
|
|
880
|
+
statusText?: string;
|
|
881
|
+
currentStep?: string;
|
|
882
|
+
createdAt: Date;
|
|
883
|
+
startedAt?: Date;
|
|
884
|
+
completedAt?: Date;
|
|
885
|
+
capabilities: AXPBackgroundOperationCapabilities;
|
|
886
|
+
failurePolicy: AXPBackgroundOperationFailurePolicy;
|
|
887
|
+
error?: AXPBackgroundOperationError;
|
|
888
|
+
/** Handler-specific payload (e.g. conversationId for chat navigation). */
|
|
889
|
+
data?: Record<string, unknown>;
|
|
890
|
+
}
|
|
891
|
+
interface AXPBackgroundOperationCreateRequest {
|
|
892
|
+
title: string;
|
|
893
|
+
progress?: number;
|
|
894
|
+
estimatedDurationMs?: number;
|
|
895
|
+
statusText?: string;
|
|
896
|
+
currentStep?: string;
|
|
897
|
+
capabilities: AXPBackgroundOperationCapabilities;
|
|
898
|
+
failurePolicy: AXPBackgroundOperationFailurePolicy;
|
|
899
|
+
}
|
|
900
|
+
type AXPBackgroundOperationActionKey = 'cancel' | 'pause' | 'resume' | 'retry' | 'dismiss';
|
|
901
|
+
|
|
902
|
+
/**
|
|
903
|
+
* Sends in-app notifications when a background operation finishes or fails.
|
|
904
|
+
*/
|
|
905
|
+
declare class AXPBackgroundOperationNotificationService {
|
|
906
|
+
private readonly inAppNotificationService;
|
|
907
|
+
private readonly sessionService;
|
|
908
|
+
notify(operation: AXPBackgroundOperation): Promise<void>;
|
|
909
|
+
private shouldNotify;
|
|
910
|
+
private resolveBody;
|
|
911
|
+
private resolveTemplate;
|
|
912
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationNotificationService, never>;
|
|
913
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationNotificationService>;
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
/**
|
|
917
|
+
* Sends notifications and removes tray rows when a background operation reaches a terminal state.
|
|
918
|
+
*/
|
|
919
|
+
declare class AXPBackgroundOperationCompletionService {
|
|
920
|
+
private readonly notificationService;
|
|
921
|
+
/** Whether the operation just reached a finished state (completed or cancelled). */
|
|
922
|
+
shouldAutoFinish(previousStatus: string | undefined, operation: AXPBackgroundOperation): boolean;
|
|
923
|
+
/** Whether the operation just transitioned to failed. */
|
|
924
|
+
shouldNotifyFailure(previousStatus: string | undefined, operation: AXPBackgroundOperation): boolean;
|
|
925
|
+
/** Notifies the user and invokes {@link remove} to drop the operation from the tray. */
|
|
926
|
+
notifyAndRemove(operation: AXPBackgroundOperation, remove: () => void): Promise<void>;
|
|
927
|
+
/** Notifies the user while keeping the failed operation in the tray for retry. */
|
|
928
|
+
notifyFailure(operation: AXPBackgroundOperation): Promise<void>;
|
|
929
|
+
private notify;
|
|
930
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationCompletionService, never>;
|
|
931
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationCompletionService>;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
declare const AXPBackgroundOperationRootConfig: {
|
|
935
|
+
readonly module: {
|
|
936
|
+
readonly name: "Common";
|
|
937
|
+
readonly title: "@general:module.common.title";
|
|
938
|
+
readonly icon: "fa-light fa-layer-group";
|
|
939
|
+
};
|
|
940
|
+
readonly entities: {
|
|
941
|
+
readonly backgroundOperation: {
|
|
942
|
+
readonly name: "BackgroundOperations";
|
|
943
|
+
readonly title: "@general:background-operation.entity.title";
|
|
944
|
+
readonly titlePlural: "@general:background-operation.entity.plural";
|
|
945
|
+
readonly icon: "fa-light fa-spinner";
|
|
946
|
+
};
|
|
947
|
+
};
|
|
948
|
+
};
|
|
949
|
+
/** Full entity key used with {@link AXPEntityStorageService} (e.g. `Common.BackgroundOperations`). */
|
|
950
|
+
declare function axpBackgroundOperationEntityName(): string;
|
|
951
|
+
|
|
952
|
+
/** Persisted row shape for {@link axpBackgroundOperationEntityName}. */
|
|
953
|
+
interface AXPBackgroundOperationEntityModel {
|
|
954
|
+
id: string;
|
|
955
|
+
providerKey: string;
|
|
956
|
+
title: string;
|
|
957
|
+
status: AXPBackgroundOperationStatus;
|
|
958
|
+
progress?: number;
|
|
959
|
+
estimatedDurationMs?: number;
|
|
960
|
+
statusText?: string;
|
|
961
|
+
currentStep?: string;
|
|
962
|
+
createdAt: string;
|
|
963
|
+
startedAt?: string;
|
|
964
|
+
completedAt?: string;
|
|
965
|
+
capabilities: AXPBackgroundOperationCapabilities;
|
|
966
|
+
failurePolicy: AXPBackgroundOperationFailurePolicy;
|
|
967
|
+
error?: AXPBackgroundOperationError;
|
|
968
|
+
data?: Record<string, unknown>;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
/**
|
|
972
|
+
* Optional persistence adapter for background-operation entity rows.
|
|
973
|
+
* Mock connectivity registers an implementation backed by {@link AXPEntityStorageService}.
|
|
974
|
+
*/
|
|
975
|
+
interface AXPBackgroundOperationEntityStorageAdapter {
|
|
976
|
+
getAll(entityName: string): Promise<AXPBackgroundOperationEntityModel[]>;
|
|
977
|
+
upsertOne(entityName: string, row: AXPBackgroundOperationEntityModel): Promise<void>;
|
|
978
|
+
deleteOne(entityName: string, id: string): Promise<void>;
|
|
979
|
+
}
|
|
980
|
+
declare const AXP_BACKGROUND_OPERATION_ENTITY_STORAGE: InjectionToken<AXPBackgroundOperationEntityStorageAdapter>;
|
|
981
|
+
|
|
982
|
+
declare function axpBackgroundOperationToEntityModel(operation: AXPBackgroundOperation): AXPBackgroundOperationEntityModel;
|
|
983
|
+
declare function axpBackgroundOperationFromEntityModel(model: AXPBackgroundOperationEntityModel): AXPBackgroundOperation;
|
|
984
|
+
|
|
985
|
+
interface AXPBackgroundOperationProviderStore {
|
|
986
|
+
readonly operations: Signal<readonly AXPBackgroundOperation[]>;
|
|
987
|
+
upsert(operation: AXPBackgroundOperation): void;
|
|
988
|
+
patch(operationId: string, patch: Partial<AXPBackgroundOperation>): void;
|
|
989
|
+
find(operationId: string): AXPBackgroundOperation | undefined;
|
|
990
|
+
remove(id: string): void;
|
|
991
|
+
}
|
|
992
|
+
/**
|
|
993
|
+
* Entity-backed store for background operations (`Common.BackgroundOperations`).
|
|
994
|
+
* Uses in-memory signals for UI reactivity and optionally persists via {@link AXP_BACKGROUND_OPERATION_ENTITY_STORAGE}.
|
|
995
|
+
*/
|
|
996
|
+
declare class AXPBackgroundOperationEntityStoreService {
|
|
997
|
+
private readonly entityStorage;
|
|
998
|
+
private readonly completionService;
|
|
999
|
+
private readonly entityName;
|
|
1000
|
+
private hydrated;
|
|
1001
|
+
private hydratePromise?;
|
|
1002
|
+
private readonly innerStores;
|
|
1003
|
+
ensureHydrated(): Promise<void>;
|
|
1004
|
+
hasAnyOperationForProviders(providerKeys: readonly string[]): Promise<boolean>;
|
|
1005
|
+
createProviderStore(providerKey: string): AXPBackgroundOperationProviderStore;
|
|
1006
|
+
/** All operations across providers (post-hydration). */
|
|
1007
|
+
readonly allOperations: Signal<AXPBackgroundOperation[]>;
|
|
1008
|
+
private hydrateFromEntityStorage;
|
|
1009
|
+
private persistOperation;
|
|
1010
|
+
private deleteOperation;
|
|
1011
|
+
private getOrCreateInnerStore;
|
|
1012
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationEntityStoreService, never>;
|
|
1013
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationEntityStoreService>;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
/**
|
|
1017
|
+
* Storage-only entity for background-operation tray rows (`Common.BackgroundOperations`).
|
|
1018
|
+
* No master UI — persisted through {@link AXPEntityStorageService}.
|
|
1019
|
+
*/
|
|
1020
|
+
declare function backgroundOperationEntityFactory(): Promise<AXPEntity | null>;
|
|
1021
|
+
|
|
1022
|
+
declare const AXP_BACKGROUND_OPERATION_HANDLERS: InjectionToken<AXPBackgroundOperationHandler[]>;
|
|
1023
|
+
/**
|
|
1024
|
+
* Handles user interactions for background operations (e.g. navigate on click).
|
|
1025
|
+
* Register one handler per {@link AXPBackgroundOperation.providerKey}.
|
|
1026
|
+
*/
|
|
1027
|
+
declare abstract class AXPBackgroundOperationHandler {
|
|
1028
|
+
abstract readonly providerKey: string;
|
|
1029
|
+
abstract execute(command: AXPExecuteCommand, operation: AXPBackgroundOperation): Promise<void>;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
declare const AXP_BACKGROUND_OPERATION_PROVIDERS: InjectionToken<AXPBackgroundOperationProvider[]>;
|
|
1033
|
+
/**
|
|
1034
|
+
* Registers a source of background operations (multi-provider).
|
|
1035
|
+
* Each feature module or mock can contribute one provider per domain key.
|
|
1036
|
+
*/
|
|
1037
|
+
declare abstract class AXPBackgroundOperationProvider {
|
|
1038
|
+
abstract readonly key: string;
|
|
1039
|
+
abstract readonly operations: Signal<readonly AXPBackgroundOperation[]>;
|
|
1040
|
+
abstract create(request: AXPBackgroundOperationCreateRequest): Promise<AXPBackgroundOperation>;
|
|
1041
|
+
abstract cancel(operationId: string): Promise<void>;
|
|
1042
|
+
/** Optional — only when {@link AXPBackgroundOperationCapabilities.pausable} is true. */
|
|
1043
|
+
pause?(operationId: string): Promise<void>;
|
|
1044
|
+
/** Optional — only when {@link AXPBackgroundOperationCapabilities.resumable} is true. */
|
|
1045
|
+
resume?(operationId: string): Promise<void>;
|
|
1046
|
+
/** Optional — only when {@link AXPBackgroundOperationCapabilities.retryable} is true. */
|
|
1047
|
+
retry?(operationId: string): Promise<void>;
|
|
1048
|
+
/** Optional — removes completed/failed operations from the tray. */
|
|
1049
|
+
dismiss?(operationId: string): Promise<void>;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
/**
|
|
1053
|
+
* Lightweight in-memory store for a single background-operation provider.
|
|
1054
|
+
*/
|
|
1055
|
+
declare function createBackgroundOperationStore(): {
|
|
1056
|
+
readonly operations: Signal<readonly AXPBackgroundOperation[]>;
|
|
1057
|
+
upsert(operation: AXPBackgroundOperation): void;
|
|
1058
|
+
patch(id: string, patch: Partial<AXPBackgroundOperation>): void;
|
|
1059
|
+
find(id: string): AXPBackgroundOperation | undefined;
|
|
1060
|
+
remove(id: string): void;
|
|
1061
|
+
};
|
|
1062
|
+
|
|
1063
|
+
declare function axpCreateBackgroundOperationId(): string;
|
|
1064
|
+
declare function axpBuildBackgroundOperation(providerKey: string, request: AXPBackgroundOperationCreateRequest, overrides?: Partial<AXPBackgroundOperation>): AXPBackgroundOperation;
|
|
1065
|
+
declare function axpCoerceBackgroundOperationDate(value: Date | string | undefined): Date | null;
|
|
1066
|
+
declare function axpBackgroundOperationDisplayTime(operation: AXPBackgroundOperation): Date | null;
|
|
1067
|
+
/**
|
|
1068
|
+
* Remaining duration in milliseconds for ETA display.
|
|
1069
|
+
*/
|
|
1070
|
+
declare function axpBackgroundOperationRemainingMs(operation: AXPBackgroundOperation): number | null;
|
|
1071
|
+
/**
|
|
1072
|
+
* Estimated completion instant for relative-time formatting (e.g. timeleft pipe).
|
|
1073
|
+
*/
|
|
1074
|
+
declare function axpBackgroundOperationEstimateEndDate(operation: AXPBackgroundOperation): Date | null;
|
|
1075
|
+
declare function axpBackgroundOperationCapabilities(partial?: Partial<AXPBackgroundOperationCapabilities>): AXPBackgroundOperationCapabilities;
|
|
1076
|
+
declare function axpBackgroundOperationFailurePolicy(partial?: Partial<AXPBackgroundOperationFailurePolicy>): AXPBackgroundOperationFailurePolicy;
|
|
1077
|
+
declare function axpIsActiveBackgroundOperationStatus(status: AXPBackgroundOperationStatus): boolean;
|
|
1078
|
+
declare function axpIsCompletedBackgroundOperationStatus(status: AXPBackgroundOperationStatus): boolean;
|
|
1079
|
+
|
|
1080
|
+
declare class AXPBackgroundOperationService {
|
|
1081
|
+
private readonly providers;
|
|
1082
|
+
private readonly handlers;
|
|
1083
|
+
private readonly busy;
|
|
1084
|
+
readonly loading: i0.Signal<boolean>;
|
|
1085
|
+
readonly operations: i0.Signal<readonly AXPBackgroundOperation[]>;
|
|
1086
|
+
readonly activeCount: i0.Signal<number>;
|
|
1087
|
+
readonly failedCount: i0.Signal<number>;
|
|
1088
|
+
getAvailableActions(operation: AXPBackgroundOperation): AXPBackgroundOperationActionKey[];
|
|
1089
|
+
create(providerKey: string, request: AXPBackgroundOperationCreateRequest): Promise<AXPBackgroundOperation>;
|
|
1090
|
+
cancel(operationId: string): Promise<void>;
|
|
1091
|
+
pause(operationId: string): Promise<void>;
|
|
1092
|
+
resume(operationId: string): Promise<void>;
|
|
1093
|
+
retry(operationId: string): Promise<void>;
|
|
1094
|
+
dismiss(operationId: string): Promise<void>;
|
|
1095
|
+
hasClickHandler(operation: AXPBackgroundOperation): boolean;
|
|
1096
|
+
executeCommand(operationId: string, command: AXPExecuteCommand): Promise<void>;
|
|
1097
|
+
executeClick(operationId: string): Promise<void>;
|
|
1098
|
+
runAction(operationId: string, action: AXPBackgroundOperationActionKey): Promise<void>;
|
|
1099
|
+
private resolveHandler;
|
|
1100
|
+
private resolveProvider;
|
|
1101
|
+
private resolveOperation;
|
|
1102
|
+
private run;
|
|
1103
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationService, never>;
|
|
1104
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationService>;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
declare class AXPBackgroundOperationSlotComponent {
|
|
1108
|
+
private readonly operationService;
|
|
1109
|
+
private readonly popover;
|
|
1110
|
+
protected readonly activeCount: i0.Signal<number>;
|
|
1111
|
+
protected readonly failedCount: i0.Signal<number>;
|
|
1112
|
+
protected readonly showSlot: i0.Signal<boolean>;
|
|
1113
|
+
protected readonly slotShowsFailureOnly: i0.Signal<boolean>;
|
|
1114
|
+
protected readonly slotLabelKey: i0.Signal<"@general:background-operation.slot.failed-single" | "@general:background-operation.slot.failed-multiple" | "@general:background-operation.slot.single" | "@general:background-operation.slot.multiple">;
|
|
1115
|
+
protected readonly slotLabelParams: i0.Signal<{
|
|
1116
|
+
count: number;
|
|
1117
|
+
}>;
|
|
1118
|
+
protected closePopover(): void;
|
|
1119
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationSlotComponent, never>;
|
|
1120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPBackgroundOperationSlotComponent, "axp-background-operation-slot", never, {}, {}, never, never, true, never>;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
interface AXPErrorHandler {
|
|
1124
|
+
handleError(error: Error, next: (error: Error) => void): void;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
declare class AXPErrorHandlerRegistryService {
|
|
1128
|
+
private injector;
|
|
1129
|
+
private errorHandlers;
|
|
1130
|
+
constructor(injector: Injector);
|
|
1131
|
+
register(...plugins: (new () => AXPErrorHandler)[]): void;
|
|
1132
|
+
get handlers(): AXPErrorHandler[];
|
|
1133
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPErrorHandlerRegistryService, never>;
|
|
1134
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPErrorHandlerRegistryService>;
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
declare class AXPGlobalErrorHandler extends ErrorHandler {
|
|
1138
|
+
private injector;
|
|
1139
|
+
private registry;
|
|
1140
|
+
constructor(injector: Injector, registry: AXPErrorHandlerRegistryService);
|
|
1141
|
+
handleError(error: Error): void;
|
|
1142
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPGlobalErrorHandler, never>;
|
|
1143
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPGlobalErrorHandler>;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/** Thrown when a requested platform resource cannot be resolved. */
|
|
1147
|
+
declare class AXPNotFoundError extends Error {
|
|
1148
|
+
constructor(message?: string);
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
/** Canonical route path for the platform 404 page. */
|
|
1152
|
+
declare const AXP_NOT_FOUND_ROUTE = "/error/404";
|
|
1153
|
+
/**
|
|
1154
|
+
* Catch-all route that redirects unknown URLs to the platform 404 page.
|
|
1155
|
+
* Register this as the **last** route source in the application (after all app and module routes).
|
|
1156
|
+
*/
|
|
1157
|
+
declare const AXP_NOT_FOUND_CATCH_ALL_ROUTE: Route;
|
|
1158
|
+
/**
|
|
1159
|
+
* Registers the platform catch-all 404 route.
|
|
1160
|
+
* Must be the last `ROUTES` provider in `app.config` so custom app routes are matched first.
|
|
1161
|
+
*/
|
|
1162
|
+
declare function AXPNotFoundCatchAllRoute(): EnvironmentProviders;
|
|
1163
|
+
/**
|
|
1164
|
+
* Returns true when an entity byKey query did not resolve a record.
|
|
1165
|
+
*/
|
|
1166
|
+
declare function axpIsEntityRecordNotFound(data: unknown): boolean;
|
|
1167
|
+
/**
|
|
1168
|
+
* Creates an Angular redirect command to the platform 404 page.
|
|
1169
|
+
*/
|
|
1170
|
+
declare function axpRedirectToNotFound(router?: Router): RedirectCommand;
|
|
1171
|
+
|
|
1172
|
+
/** Canonical route path for the platform 401 page. */
|
|
1173
|
+
declare const AXP_UNAUTHORIZED_ROUTE = "/error/401";
|
|
1174
|
+
/**
|
|
1175
|
+
* Creates an Angular redirect command to the platform 401 page.
|
|
1176
|
+
*/
|
|
1177
|
+
declare function axpRedirectToUnauthorized(router?: Router): RedirectCommand;
|
|
1178
|
+
|
|
1179
|
+
interface AXPKeyboardShortcutHelpGroup {
|
|
1180
|
+
label: string;
|
|
1181
|
+
items: AXPKeyboardShortcutHelpEntry[];
|
|
1182
|
+
}
|
|
1183
|
+
declare class AXPKeyboardShortcutsHelpComponent {
|
|
1184
|
+
private readonly shortcutRegistry;
|
|
1185
|
+
protected readonly groups: i0.Signal<AXPKeyboardShortcutHelpGroup[]>;
|
|
1186
|
+
protected chordToKbdKeys(chord: string): string[];
|
|
1187
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPKeyboardShortcutsHelpComponent, never>;
|
|
1188
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPKeyboardShortcutsHelpComponent, "axp-keyboard-shortcuts-help", never, {}, {}, never, never, true, never>;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
declare class AXPKeyboardShortcutsHelpService {
|
|
1192
|
+
private readonly popupService;
|
|
1193
|
+
private readonly translationService;
|
|
1194
|
+
private readonly shortcutRegistry;
|
|
1195
|
+
private readonly document;
|
|
1196
|
+
/** In-flight help popup session (open until the popup closes). */
|
|
1197
|
+
private activeShow;
|
|
1198
|
+
constructor();
|
|
1199
|
+
/**
|
|
1200
|
+
* Opens the keyboard shortcuts help popup, or no-ops when it is already open.
|
|
1201
|
+
*/
|
|
1202
|
+
show(): Promise<void>;
|
|
1203
|
+
private openHelpPopup;
|
|
1204
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPKeyboardShortcutsHelpService, never>;
|
|
1205
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPKeyboardShortcutsHelpService>;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
interface AXPCommonModuleConfigs {
|
|
1209
|
+
errorHandlers: (new () => AXPErrorHandler)[];
|
|
1210
|
+
}
|
|
1211
|
+
declare class AXPCommonModule {
|
|
1212
|
+
static forRoot(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule>;
|
|
1213
|
+
static forChild(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule>;
|
|
1214
|
+
/**
|
|
1215
|
+
* @ignore
|
|
1216
|
+
*/
|
|
1217
|
+
constructor(instances: any[], _keyboardShortcutsHelp: AXPKeyboardShortcutsHelpService);
|
|
1218
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPCommonModule, never>;
|
|
1219
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXPCommonModule, never, [typeof i1.AXPComponentSlotModule, typeof i2.AXPWorkflowModule, typeof i3.AXPopupModule, typeof i4.AXDateTimeModule, typeof i5.AXToastModule, typeof i1.AXPModuleManifestModule], [typeof _angular_router.RouterModule]>;
|
|
1220
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXPCommonModule>;
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
declare const ENVIRONMENT: InjectionToken<any>;
|
|
1224
|
+
declare const AXP_PLATFORM_CONFIG_TOKEN: InjectionToken<AXPPlatformConfigs>;
|
|
1225
|
+
interface AXPPlatformConfigs {
|
|
1226
|
+
title?: string;
|
|
1227
|
+
copyright?: string;
|
|
1228
|
+
logo?: {
|
|
1229
|
+
icon: {
|
|
1230
|
+
light: AXPLogoConfig;
|
|
1231
|
+
dark: AXPLogoConfig;
|
|
1232
|
+
};
|
|
1233
|
+
text: {
|
|
1234
|
+
light: AXPLogoConfig;
|
|
1235
|
+
dark: AXPLogoConfig;
|
|
1236
|
+
};
|
|
1237
|
+
full: {
|
|
1238
|
+
light: AXPLogoConfig;
|
|
1239
|
+
dark: AXPLogoConfig;
|
|
1240
|
+
};
|
|
1241
|
+
};
|
|
1242
|
+
network?: {
|
|
1243
|
+
timeOut?: number;
|
|
1244
|
+
};
|
|
1245
|
+
}
|
|
1246
|
+
declare const AXPPlatformDefaultConfigs: AXPPlatformConfigs;
|
|
1247
|
+
declare function configPlatform(config?: Partial<AXPPlatformConfigs>): AXPPlatformConfigs;
|
|
1248
|
+
|
|
1249
|
+
declare enum AXPCommonSettings {
|
|
1250
|
+
EnableOperationToasts = "Common:Setting:Notifications.EnableOperationToasts",
|
|
1251
|
+
EntityFilterApplyMode = "Common:Setting:Entity.FilterApplyMode",
|
|
1252
|
+
ShowCategoryColumnsByDefault = "Common:Setting:Entity.ShowCategoryColumnsByDefault",
|
|
1253
|
+
ApplyLayoutOrdering = "Common:Setting:Entity.ApplyLayoutOrdering",
|
|
1254
|
+
RedirectToDetailsAfterCreate = "Common:Setting:Entity.RedirectToDetailsAfterCreate",
|
|
1255
|
+
ShowPageBadge = "Common:Setting:Entity.ShowPageBadge",
|
|
1256
|
+
ConfirmUnsavedChanges = "Common:Setting:Entity.ConfirmUnsavedChanges",
|
|
1257
|
+
DebugMode = "PlatformDevTools:Setting:Developer.DebugMode",
|
|
1258
|
+
ShowRowIndexColumn = "Common:Setting:Entity.ShowRowIndexColumn",
|
|
1259
|
+
EntityListPersistenceMode = "Common:Setting:Entity.ListPersistenceMode"
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
declare const AXP_ROOT_CONFIG_TOKEN: InjectionToken<AXPRootConfigs>;
|
|
1263
|
+
interface AXPRootConfigs {
|
|
1264
|
+
baseUrl: string;
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
declare abstract class AXPDataProvider {
|
|
1268
|
+
abstract insertOne(entity: any, entityItem: any): Promise<any>;
|
|
1269
|
+
abstract insertMany(entity: any, entityList: any): Promise<any>;
|
|
1270
|
+
abstract getOne(entity: any, id: string): Promise<any>;
|
|
1271
|
+
abstract getMany(entity: any, params?: any): Promise<any>;
|
|
1272
|
+
abstract updateOne(entity: any, id?: string, data?: {
|
|
1273
|
+
[key: string]: any;
|
|
1274
|
+
}): Promise<any>;
|
|
1275
|
+
abstract deleteOne(entity: any, id: string): Promise<any>;
|
|
1276
|
+
abstract getFirst(entity: any): Promise<any>;
|
|
1277
|
+
abstract uploadFile(file: File, title: string, customUrl?: string): Promise<string>;
|
|
1278
|
+
abstract updateFile(id: string, file: File, title: string, customUrl?: string): Promise<string>;
|
|
1279
|
+
abstract uploadMultipleFiles(files: File[], title: string): Promise<string[]>;
|
|
1280
|
+
abstract viewFile(id: string, name: string): Promise<Blob>;
|
|
1281
|
+
abstract downloadFile(id: string, name: string): Promise<Blob>;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
declare abstract class AXPFilterOperatorMiddlewareService {
|
|
1285
|
+
/**
|
|
1286
|
+
* Middleware to transform selected filters into corresponding operators.
|
|
1287
|
+
* @param filters Array of selected filters (e.g., user input).
|
|
1288
|
+
* @param customOperators Optional custom operators map to override default operators.
|
|
1289
|
+
* @returns Transformed filters based on custom or default operators.
|
|
1290
|
+
*/
|
|
1291
|
+
abstract transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
|
|
1292
|
+
/**
|
|
1293
|
+
* Helper method to transform a single filter. This handles recursion for nested filters.
|
|
1294
|
+
* @param filter A single filter object.
|
|
1295
|
+
* @returns Transformed filter.
|
|
1296
|
+
*/
|
|
1297
|
+
abstract transformFilter(filters: AXDataSourceFilterOption): AXDataSourceFilterOption;
|
|
1298
|
+
abstract getOperator(key: string): AXDataSourceOperator;
|
|
1299
|
+
}
|
|
1300
|
+
declare class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddlewareService {
|
|
1301
|
+
private customOperatorService;
|
|
1302
|
+
private operators;
|
|
1303
|
+
transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
|
|
1304
|
+
transformFilter(filter: AXDataSourceFilterOption): AXDataSourceFilterOption;
|
|
1305
|
+
getOperator(key: string): AXDataSourceOperator;
|
|
1306
|
+
private getDefaultOperators;
|
|
1307
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPFilterOperatorMiddlewareServiceImpl, never>;
|
|
1308
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPFilterOperatorMiddlewareServiceImpl>;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
declare abstract class AXPCustomOperatorService {
|
|
1312
|
+
abstract getCustomOperators(): {
|
|
1313
|
+
[key: string]: AXDataSourceOperator;
|
|
1314
|
+
};
|
|
1315
|
+
}
|
|
1316
|
+
declare class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {
|
|
1317
|
+
getCustomOperators(): {
|
|
1318
|
+
[key: string]: AXDataSourceOperator;
|
|
1319
|
+
};
|
|
1320
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPCustomOperatorServiceImpl, never>;
|
|
1321
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPCustomOperatorServiceImpl>;
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
/**
|
|
1325
|
+
* Capabilities API provided to file action providers.
|
|
1326
|
+
* These methods allow actions to interact with the file uploader widget.
|
|
1327
|
+
*/
|
|
1328
|
+
interface AXCFileUploaderCapabilities {
|
|
1329
|
+
/**
|
|
1330
|
+
* Get all current files in the uploader.
|
|
1331
|
+
*/
|
|
1332
|
+
getFiles: () => AXPFileListItem[];
|
|
1333
|
+
/**
|
|
1334
|
+
* Replace all files in the uploader.
|
|
1335
|
+
*/
|
|
1336
|
+
setFiles: (files: AXPFileListItem[]) => void;
|
|
1337
|
+
/**
|
|
1338
|
+
* Add new files to the uploader.
|
|
1339
|
+
*/
|
|
1340
|
+
addFiles: (files: AXPFileListItem[]) => void;
|
|
1341
|
+
/**
|
|
1342
|
+
* Update files matching a predicate.
|
|
1343
|
+
*/
|
|
1344
|
+
updateFile: (predicate: (f: AXPFileListItem) => boolean, updater: (f: AXPFileListItem) => AXPFileListItem) => void;
|
|
1345
|
+
/**
|
|
1346
|
+
* Remove a file from the uploader.
|
|
1347
|
+
*/
|
|
1348
|
+
removeFile: (file: AXPFileListItem) => void;
|
|
1349
|
+
/**
|
|
1350
|
+
* Clear all files from the uploader.
|
|
1351
|
+
*/
|
|
1352
|
+
clear: () => void;
|
|
1353
|
+
/**
|
|
1354
|
+
* Get a file by its ID.
|
|
1355
|
+
*/
|
|
1356
|
+
getFileById: (id: string) => AXPFileListItem | undefined;
|
|
1357
|
+
/**
|
|
1358
|
+
* Update a file by its ID.
|
|
1359
|
+
*/
|
|
1360
|
+
updateFileById: (id: string, next: Partial<AXPFileListItem>) => void;
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* A file uploader action that can be added by providers.
|
|
1364
|
+
*/
|
|
1365
|
+
interface AXCFileUploaderAction {
|
|
1366
|
+
/**
|
|
1367
|
+
* Unique identifier for the action/plugin.
|
|
1368
|
+
*/
|
|
1369
|
+
plugin: string;
|
|
1370
|
+
/**
|
|
1371
|
+
* Whether this action is global (available even if plugin is not explicitly enabled).
|
|
1372
|
+
*/
|
|
1373
|
+
global?: boolean;
|
|
1374
|
+
/**
|
|
1375
|
+
* Display text for the action (optional if textKey is provided).
|
|
1376
|
+
*/
|
|
1377
|
+
text?: string;
|
|
1378
|
+
/**
|
|
1379
|
+
* Translation key for the action text (optional if text is provided).
|
|
1380
|
+
*/
|
|
1381
|
+
textKey?: string;
|
|
1382
|
+
/**
|
|
1383
|
+
* Icon class for the action (e.g., 'fa-light fa-file-arrow-up').
|
|
1384
|
+
*/
|
|
1385
|
+
icon?: string;
|
|
1386
|
+
/**
|
|
1387
|
+
* Action execution handler.
|
|
1388
|
+
* Receives capabilities to interact with the file uploader.
|
|
1389
|
+
* @param capabilities The capabilities API for file operations.
|
|
1390
|
+
*/
|
|
1391
|
+
run: (capabilities: AXCFileUploaderCapabilities) => void | Promise<void>;
|
|
1392
|
+
}
|
|
1393
|
+
/**
|
|
1394
|
+
* Payload passed to file action providers.
|
|
1395
|
+
*/
|
|
1396
|
+
interface AXCFileUploaderActionsPayload {
|
|
1397
|
+
/**
|
|
1398
|
+
* Enabled plugins configuration.
|
|
1399
|
+
*/
|
|
1400
|
+
plugins: {
|
|
1401
|
+
name: string;
|
|
1402
|
+
options?: unknown;
|
|
1403
|
+
}[];
|
|
1404
|
+
/**
|
|
1405
|
+
* List of plugin names to exclude.
|
|
1406
|
+
*/
|
|
1407
|
+
excludePlugins: string[];
|
|
1408
|
+
/**
|
|
1409
|
+
* Capabilities API for interacting with the file uploader.
|
|
1410
|
+
*/
|
|
1411
|
+
capabilities: AXCFileUploaderCapabilities;
|
|
1412
|
+
/**
|
|
1413
|
+
* Current list of actions (providers can add to this array).
|
|
1414
|
+
*/
|
|
1415
|
+
actions: AXCFileUploaderAction[];
|
|
1416
|
+
/**
|
|
1417
|
+
* Widget options (optional, for accessing widget-specific settings).
|
|
1418
|
+
*/
|
|
1419
|
+
options?: {
|
|
1420
|
+
/**
|
|
1421
|
+
* Whether multiple files are allowed.
|
|
1422
|
+
*/
|
|
1423
|
+
multiple?: boolean;
|
|
1424
|
+
/**
|
|
1425
|
+
* Accepted file types (e.g., '.jpg,.png' or 'image/*').
|
|
1426
|
+
*/
|
|
1427
|
+
accept?: string;
|
|
1428
|
+
};
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
/**
|
|
1432
|
+
* Type for file action provider token (supports both direct and async providers).
|
|
1433
|
+
*/
|
|
1434
|
+
type AXPFileActionProviderToken = AXPFileActionProvider | Promise<AXPFileActionProvider>;
|
|
1435
|
+
/**
|
|
1436
|
+
* File action provider interface.
|
|
1437
|
+
* Providers can add actions to the file uploader widget.
|
|
1438
|
+
*/
|
|
1439
|
+
interface AXPFileActionProvider {
|
|
1440
|
+
/**
|
|
1441
|
+
* Unique key identifying this provider.
|
|
1442
|
+
* Should match the webhook key for backward compatibility: 'file-uploader.actions'
|
|
1443
|
+
*/
|
|
1444
|
+
key: string;
|
|
1445
|
+
/**
|
|
1446
|
+
* Execute the provider to add actions.
|
|
1447
|
+
* @param payload The payload containing capabilities and current actions.
|
|
1448
|
+
* @returns The modified payload with new actions added.
|
|
1449
|
+
*/
|
|
1450
|
+
execute(payload: AXCFileUploaderActionsPayload): Promise<AXCFileUploaderActionsPayload> | AXCFileUploaderActionsPayload;
|
|
1451
|
+
/**
|
|
1452
|
+
* Priority for execution order (lower numbers execute first).
|
|
1453
|
+
* Defaults to 0 if not specified.
|
|
1454
|
+
*/
|
|
1455
|
+
priority?: number;
|
|
1456
|
+
}
|
|
1457
|
+
/**
|
|
1458
|
+
* Multi-provider injection token for file action providers.
|
|
1459
|
+
* Modules can provide multiple implementations using this token.
|
|
1460
|
+
*/
|
|
1461
|
+
declare const AXP_FILE_ACTION_PROVIDER: InjectionToken<AXPFileActionProviderToken[]>;
|
|
1462
|
+
|
|
1463
|
+
/**
|
|
1464
|
+
* Service for managing file uploader actions.
|
|
1465
|
+
* Aggregates actions from multiple providers and filters them based on plugin configuration.
|
|
1466
|
+
* Wraps the hook system for backward compatibility.
|
|
1467
|
+
*/
|
|
1468
|
+
declare class AXPFileActionsService {
|
|
1469
|
+
private readonly actionProviders;
|
|
1470
|
+
private readonly hookService;
|
|
1471
|
+
private readonly injector;
|
|
1472
|
+
/**
|
|
1473
|
+
* Get all actions from providers, filtered based on plugin configuration.
|
|
1474
|
+
* Wraps the hook system for backward compatibility.
|
|
1475
|
+
* @param payload Initial payload with capabilities and plugin configuration.
|
|
1476
|
+
* @returns Filtered list of actions.
|
|
1477
|
+
*/
|
|
1478
|
+
getActions(payload: AXCFileUploaderActionsPayload): Promise<AXCFileUploaderAction[]>;
|
|
1479
|
+
/**
|
|
1480
|
+
* Resolve all providers (handle both direct providers and Promise<provider>).
|
|
1481
|
+
*/
|
|
1482
|
+
private resolveProviders;
|
|
1483
|
+
/**
|
|
1484
|
+
* Filter actions based on enabled plugins and exclude list.
|
|
1485
|
+
*/
|
|
1486
|
+
private filterActions;
|
|
1487
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileActionsService, never>;
|
|
1488
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileActionsService>;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
declare const UploadFromComputerActionProvider: AXPFileActionProvider;
|
|
1492
|
+
|
|
1493
|
+
declare abstract class AXPFileStorageService {
|
|
1494
|
+
abstract save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo>;
|
|
1495
|
+
abstract update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo>;
|
|
1496
|
+
abstract find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]>;
|
|
1497
|
+
abstract findMany(ids: string[]): Promise<AXPFileManyStorageInfo[]>;
|
|
1498
|
+
abstract getInfo(fileId: string): Promise<AXPFileStorageInfo>;
|
|
1499
|
+
abstract remove(fileId: string): Promise<void>;
|
|
1500
|
+
abstract commit(fileId: string): Promise<void>;
|
|
1501
|
+
abstract markForDeletion(fileId: string): Promise<void>;
|
|
1502
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileStorageService, never>;
|
|
1503
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileStorageService>;
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1506
|
+
declare class AXPFileStorageEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
|
|
1507
|
+
fileStorageService: AXPFileStorageService;
|
|
1508
|
+
provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
interface AXPFileType {
|
|
1512
|
+
/**
|
|
1513
|
+
* The unique identifier for the file type.
|
|
1514
|
+
*/
|
|
1515
|
+
/**
|
|
1516
|
+
* The name unique of the file type.
|
|
1517
|
+
*/
|
|
1518
|
+
name: string;
|
|
1519
|
+
/**
|
|
1520
|
+
* The title of the file type.
|
|
1521
|
+
*/
|
|
1522
|
+
title: string;
|
|
1523
|
+
/**
|
|
1524
|
+
* The description of the file type.
|
|
1525
|
+
*/
|
|
1526
|
+
description?: string;
|
|
1527
|
+
extensions: AXPFileExtension[];
|
|
1528
|
+
/**
|
|
1529
|
+
* The icon of the file type.
|
|
1530
|
+
*/
|
|
1531
|
+
icon?: string;
|
|
1532
|
+
/**
|
|
1533
|
+
* The metadata associated with the file type.
|
|
1534
|
+
*/
|
|
1535
|
+
meta?: AXPMetaDataDefinition[];
|
|
1536
|
+
}
|
|
1537
|
+
interface AXPFileExtension {
|
|
1538
|
+
/**
|
|
1539
|
+
* The unique identifier for the file extension.
|
|
1540
|
+
*/
|
|
1541
|
+
/**
|
|
1542
|
+
* The name unique of the file extension.
|
|
1543
|
+
*/
|
|
1544
|
+
name: string;
|
|
1545
|
+
/**
|
|
1546
|
+
* The title of the file extension.
|
|
1547
|
+
*/
|
|
1548
|
+
title: string;
|
|
1549
|
+
/**
|
|
1550
|
+
* The description of the file extension.
|
|
1551
|
+
*/
|
|
1552
|
+
description?: string;
|
|
1553
|
+
/**
|
|
1554
|
+
* The icon of the file type.
|
|
1555
|
+
*/
|
|
1556
|
+
icon?: string;
|
|
1557
|
+
/**
|
|
1558
|
+
* The color of the file type.
|
|
1559
|
+
*/
|
|
1560
|
+
color?: string;
|
|
1561
|
+
/**
|
|
1562
|
+
* The metadata associated with the file extension.
|
|
1563
|
+
*/
|
|
1564
|
+
meta?: AXPMetaDataDefinition[];
|
|
1565
|
+
}
|
|
1566
|
+
|
|
1567
|
+
interface AXPFileTypeInfoProvider {
|
|
1568
|
+
items(): Promise<AXPFileType[]>;
|
|
1569
|
+
}
|
|
1570
|
+
declare const AXP_FILE_TYPE_INFO_PROVIDER: InjectionToken<AXPFileTypeInfoProvider[]>;
|
|
1571
|
+
declare class AXPFileTypeProviderService implements AXPFileTypeInfoProvider {
|
|
1572
|
+
private providers;
|
|
1573
|
+
items(): Promise<AXPFileType[]>;
|
|
1574
|
+
get(name: string): Promise<AXPFileType | undefined>;
|
|
1575
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileTypeProviderService, never>;
|
|
1576
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileTypeProviderService>;
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
declare class AXPStickyDirective {
|
|
1580
|
+
private element;
|
|
1581
|
+
private renderer;
|
|
1582
|
+
private zone;
|
|
1583
|
+
private cdr;
|
|
1584
|
+
stickyClass: string;
|
|
1585
|
+
stickyOffset: number;
|
|
1586
|
+
isStickyChange: EventEmitter<boolean>;
|
|
1587
|
+
private _isSticky;
|
|
1588
|
+
get isSticky(): boolean;
|
|
1589
|
+
set isSticky(value: boolean);
|
|
1590
|
+
private parentElement;
|
|
1591
|
+
private targetElement;
|
|
1592
|
+
private mutationObserver;
|
|
1593
|
+
private readonly onWindowResize;
|
|
1594
|
+
stickyParent: string | HTMLElement;
|
|
1595
|
+
stickyTarget: string;
|
|
1596
|
+
constructor(element: ElementRef<HTMLDivElement>, renderer: Renderer2, zone: NgZone, cdr: ChangeDetectorRef);
|
|
1597
|
+
ngAfterViewInit(): void;
|
|
1598
|
+
private initSticky;
|
|
1599
|
+
private getScrollTop;
|
|
1600
|
+
/**
|
|
1601
|
+
* Toggle stuck styling only while this element is visually pinned (matches `position: sticky; top: 0`).
|
|
1602
|
+
* Scroll-offset thresholds would stay true for every section already passed, so multiple stacked stickies
|
|
1603
|
+
* would all keep `--stuck`; geometry fixes that.
|
|
1604
|
+
*/
|
|
1605
|
+
private computeShouldStick;
|
|
1606
|
+
private applyStickyStateFromScrollPosition;
|
|
1607
|
+
private onParentScroll;
|
|
1608
|
+
private toggleStickyClasses;
|
|
1609
|
+
ngOnDestroy(): void;
|
|
1610
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPStickyDirective, never>;
|
|
1611
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AXPStickyDirective, "[axpSticky]", ["axpSticky"], { "stickyClass": { "alias": "axpSticky"; "required": false; }; "stickyOffset": { "alias": "stickyOffset"; "required": false; }; "stickyParent": { "alias": "stickyParent"; "required": false; }; "stickyTarget": { "alias": "stickyTarget"; "required": false; }; }, { "isStickyChange": "isStickyChange"; }, never, never, true, never>;
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
/**
|
|
1615
|
+
* Data source definition for menu items from {@link AXPMenuProviderService#rawItems}.
|
|
1616
|
+
*/
|
|
1617
|
+
declare class AXPMenuItemsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
|
|
1618
|
+
private readonly menuProviderService;
|
|
1619
|
+
items(): Promise<AXPDataSourceDefinition[]>;
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
type AXPMenuInsertion = 'before' | 'after' | 'inside';
|
|
1623
|
+
type AXPMenuType = 'menu' | 'group' | 'break';
|
|
1624
|
+
type AXPMenuItemCommand = AXPNavigateActionCommand<'modal' | 'router'> | AXPExecuteCommand;
|
|
1625
|
+
interface AXPMenuItem {
|
|
1626
|
+
text: string;
|
|
1627
|
+
type?: AXPMenuType;
|
|
1628
|
+
name?: string;
|
|
1629
|
+
description?: string;
|
|
1630
|
+
icon?: string;
|
|
1631
|
+
priority?: number;
|
|
1632
|
+
children?: AXPMenuItem[];
|
|
1633
|
+
path?: string;
|
|
1634
|
+
command?: AXPMenuItemCommand | undefined;
|
|
1635
|
+
badgeKey?: string;
|
|
1636
|
+
data?: any;
|
|
1637
|
+
meta?: AXPMetaData;
|
|
1638
|
+
policy?: {
|
|
1639
|
+
permissions?: string[];
|
|
1640
|
+
features?: string[];
|
|
1641
|
+
};
|
|
1642
|
+
/**
|
|
1643
|
+
* Keyboard shortcuts for this menu item.
|
|
1644
|
+
* Use a chord string or `{ keys, allowInEditableFields, ... }`. Pass `[]` to disable.
|
|
1645
|
+
*/
|
|
1646
|
+
shortcuts?: AXPKeyboardShortcut[];
|
|
1647
|
+
}
|
|
1648
|
+
interface AXPMenuFinderResult {
|
|
1649
|
+
readonly exists: boolean;
|
|
1650
|
+
insert(items: AXPMenuItem[], position: AXPMenuInsertion): void;
|
|
1651
|
+
remove(): void;
|
|
1652
|
+
update(updatedItem: Partial<AXPMenuItem>): void;
|
|
1653
|
+
addItems(items: AXPMenuItem[]): void;
|
|
1654
|
+
/**
|
|
1655
|
+
* Moves the item matched by the current `find` target to another place in the tree.
|
|
1656
|
+
* @param destination Name of the target menu item (group or item).
|
|
1657
|
+
* @param position `inside` — child of `destination` (default). `before` / `after` — sibling of `destination` in its parent's list.
|
|
1658
|
+
*/
|
|
1659
|
+
moveTo(destination: string, position?: AXPMenuInsertion): void;
|
|
1660
|
+
}
|
|
1661
|
+
interface AXPMenuProviderContext {
|
|
1662
|
+
addItems(items: AXPMenuItem[]): void;
|
|
1663
|
+
find(target: string): AXPMenuFinderResult;
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1666
|
+
interface AXPMenuProvider {
|
|
1667
|
+
provide(context: AXPMenuProviderContext): Promise<void>;
|
|
1668
|
+
}
|
|
1669
|
+
declare const AXP_MENU_PROVIDER: InjectionToken<AXPMenuProvider[]>;
|
|
1670
|
+
declare class AXPMenuProviderService {
|
|
1671
|
+
private providers;
|
|
1672
|
+
private middlewareRegistry;
|
|
1673
|
+
private cache;
|
|
1674
|
+
private pendingInserts;
|
|
1675
|
+
private pendingRemovals;
|
|
1676
|
+
private pendingUpdates;
|
|
1677
|
+
private pendingAdditions;
|
|
1678
|
+
private pendingMoves;
|
|
1679
|
+
/**
|
|
1680
|
+
* Observable for menu reload events
|
|
1681
|
+
* Emits when menu cache is cleared and consumers should reload
|
|
1682
|
+
*/
|
|
1683
|
+
private menuReloadSubject;
|
|
1684
|
+
readonly menuReload$: rxjs.Observable<void>;
|
|
1685
|
+
/**
|
|
1686
|
+
* Get menu items with middlewares applied (for end-user display)
|
|
1687
|
+
*/
|
|
1688
|
+
items(): Promise<AXPMenuItem[]>;
|
|
1689
|
+
/**
|
|
1690
|
+
* Get raw menu items WITHOUT middleware applied (for management/editing)
|
|
1691
|
+
* Used by menu management pages to show original items before customization
|
|
1692
|
+
*/
|
|
1693
|
+
rawItems(): Promise<AXPMenuItem[]>;
|
|
1694
|
+
/**
|
|
1695
|
+
* Clear the cache to force reload of menu items
|
|
1696
|
+
* Notifies all subscribers to reload their menu data
|
|
1697
|
+
*/
|
|
1698
|
+
clearCache(): void;
|
|
1699
|
+
/**
|
|
1700
|
+
* Apply middlewares in priority order using the enhanced context API
|
|
1701
|
+
*/
|
|
1702
|
+
private applyMiddlewares;
|
|
1703
|
+
/**
|
|
1704
|
+
* Create provider context for menu providers
|
|
1705
|
+
*/
|
|
1706
|
+
private createMenuProviderContext;
|
|
1707
|
+
private applyPendingOperations;
|
|
1708
|
+
private findItemWithParent;
|
|
1709
|
+
/**
|
|
1710
|
+
* Find menu item by name in the items tree (recursive search)
|
|
1711
|
+
*/
|
|
1712
|
+
private findItemByName;
|
|
1713
|
+
private applyPendingMove;
|
|
1714
|
+
private itemIsInSubtreeOf;
|
|
1715
|
+
/**
|
|
1716
|
+
* Merge new item properties into existing item, handling children merge
|
|
1717
|
+
*/
|
|
1718
|
+
private mergeMenuItem;
|
|
1719
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuProviderService, never>;
|
|
1720
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuProviderService>;
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
/**
|
|
1724
|
+
* Rich context API for manipulating menu items within middleware
|
|
1725
|
+
* Provides helper methods to find, update, remove, and add menu items easily
|
|
1726
|
+
*/
|
|
1727
|
+
interface AXPMenuMiddlewareContext {
|
|
1728
|
+
/**
|
|
1729
|
+
* Get all menu items
|
|
1730
|
+
*/
|
|
1731
|
+
readonly items: AXPMenuItem[];
|
|
1732
|
+
/**
|
|
1733
|
+
* Find menu item(s) by name or pattern
|
|
1734
|
+
*/
|
|
1735
|
+
find(nameOrPattern: string | RegExp): AXPMenuItemFinder;
|
|
1736
|
+
/**
|
|
1737
|
+
* Find menu item by name (exact match)
|
|
1738
|
+
*/
|
|
1739
|
+
findByName(name: string): AXPMenuItemFinder;
|
|
1740
|
+
/**
|
|
1741
|
+
* Find menu items by pattern (regex or wildcard)
|
|
1742
|
+
*/
|
|
1743
|
+
findByPattern(pattern: string | RegExp): AXPMenuItemFinder[];
|
|
1744
|
+
/**
|
|
1745
|
+
* Add new menu items to root level
|
|
1746
|
+
*/
|
|
1747
|
+
add(...items: AXPMenuItem[]): AXPMenuMiddlewareContext;
|
|
1748
|
+
/**
|
|
1749
|
+
* Remove menu items by predicate
|
|
1750
|
+
*/
|
|
1751
|
+
remove(predicate: (item: AXPMenuItem) => boolean): AXPMenuMiddlewareContext;
|
|
1752
|
+
/**
|
|
1753
|
+
* Sort all menu items recursively by priority
|
|
1754
|
+
*/
|
|
1755
|
+
sort(): AXPMenuMiddlewareContext;
|
|
1756
|
+
/**
|
|
1757
|
+
* Get the final menu items array
|
|
1758
|
+
*/
|
|
1759
|
+
toArray(): AXPMenuItem[];
|
|
1760
|
+
}
|
|
1761
|
+
/**
|
|
1762
|
+
* Helper for finding and manipulating a specific menu item
|
|
1763
|
+
*/
|
|
1764
|
+
interface AXPMenuItemFinder {
|
|
1765
|
+
/**
|
|
1766
|
+
* Get the found menu item (or undefined)
|
|
1767
|
+
*/
|
|
1768
|
+
get(): AXPMenuItem | undefined;
|
|
1769
|
+
/**
|
|
1770
|
+
* Check if menu item exists
|
|
1771
|
+
*/
|
|
1772
|
+
exists(): boolean;
|
|
1773
|
+
/**
|
|
1774
|
+
* Update menu item properties
|
|
1775
|
+
*/
|
|
1776
|
+
update(updater: Partial<AXPMenuItem> | ((item: AXPMenuItem) => Partial<AXPMenuItem>)): AXPMenuItemFinder;
|
|
1777
|
+
/**
|
|
1778
|
+
* Remove the menu item
|
|
1779
|
+
*/
|
|
1780
|
+
remove(): AXPMenuItemFinder;
|
|
1781
|
+
/**
|
|
1782
|
+
* Hide the menu item (removes it from the menu)
|
|
1783
|
+
*/
|
|
1784
|
+
hide(): AXPMenuItemFinder;
|
|
1785
|
+
/**
|
|
1786
|
+
* Show the menu item (currently a no-op as items are visible by default)
|
|
1787
|
+
* Note: To truly implement show, we'd need to track removed items
|
|
1788
|
+
*/
|
|
1789
|
+
show(): AXPMenuItemFinder;
|
|
1790
|
+
/**
|
|
1791
|
+
* Set priority
|
|
1792
|
+
*/
|
|
1793
|
+
setPriority(priority: number): AXPMenuItemFinder;
|
|
1794
|
+
/**
|
|
1795
|
+
* Add children to this menu item
|
|
1796
|
+
*/
|
|
1797
|
+
addChildren(...children: AXPMenuItem[]): AXPMenuItemFinder;
|
|
1798
|
+
/**
|
|
1799
|
+
* Remove children by predicate
|
|
1800
|
+
*/
|
|
1801
|
+
removeChildren(predicate: (child: AXPMenuItem) => boolean): AXPMenuItemFinder;
|
|
1802
|
+
/**
|
|
1803
|
+
* Move menu item to a different parent
|
|
1804
|
+
*/
|
|
1805
|
+
moveTo(parentName: string | null | undefined): AXPMenuItemFinder;
|
|
1806
|
+
/**
|
|
1807
|
+
* Insert menu items before this item
|
|
1808
|
+
*/
|
|
1809
|
+
insertBefore(...items: AXPMenuItem[]): AXPMenuItemFinder;
|
|
1810
|
+
/**
|
|
1811
|
+
* Insert menu items after this item
|
|
1812
|
+
*/
|
|
1813
|
+
insertAfter(...items: AXPMenuItem[]): AXPMenuItemFinder;
|
|
1814
|
+
}
|
|
1815
|
+
/**
|
|
1816
|
+
* Middleware that processes menu items after all providers have executed
|
|
1817
|
+
* Middlewares are executed in order based on their priority (higher priority = earlier execution)
|
|
1818
|
+
*/
|
|
1819
|
+
interface AXPMenuMiddleware {
|
|
1820
|
+
/**
|
|
1821
|
+
* Optional priority for execution order (higher = earlier)
|
|
1822
|
+
* Default: 0
|
|
1823
|
+
*/
|
|
1824
|
+
readonly priority?: number;
|
|
1825
|
+
/**
|
|
1826
|
+
* Optional name for debugging and identification
|
|
1827
|
+
*/
|
|
1828
|
+
readonly name?: string;
|
|
1829
|
+
/**
|
|
1830
|
+
* Process menu items using the rich context API
|
|
1831
|
+
* @param context - The menu middleware context with helper methods
|
|
1832
|
+
* @returns Processed context or void (context is mutable)
|
|
1833
|
+
*/
|
|
1834
|
+
process(context: AXPMenuMiddlewareContext): Promise<void | AXPMenuMiddlewareContext>;
|
|
1835
|
+
}
|
|
1836
|
+
/**
|
|
1837
|
+
* Provider definition for registering middleware via multi-provider
|
|
1838
|
+
*/
|
|
1839
|
+
interface AXPMenuMiddlewareProvider {
|
|
1840
|
+
/**
|
|
1841
|
+
* The middleware instance
|
|
1842
|
+
*/
|
|
1843
|
+
middleware: AXPMenuMiddleware;
|
|
1844
|
+
/**
|
|
1845
|
+
* Optional priority override
|
|
1846
|
+
*/
|
|
1847
|
+
priority?: number;
|
|
1848
|
+
}
|
|
1849
|
+
/**
|
|
1850
|
+
* Injection token for menu middlewares (multi-provider)
|
|
1851
|
+
*/
|
|
1852
|
+
declare const AXP_MENU_MIDDLEWARE: InjectionToken<AXPMenuMiddleware[]>;
|
|
1853
|
+
|
|
1854
|
+
/**
|
|
1855
|
+
* Creates a rich context for menu manipulation
|
|
1856
|
+
* Similar to entity modifier context pattern
|
|
1857
|
+
*/
|
|
1858
|
+
declare function createMenuContext(items: AXPMenuItem[]): AXPMenuMiddlewareContext;
|
|
1859
|
+
|
|
1860
|
+
/**
|
|
1861
|
+
* Central service for managing menu middlewares with priority-based ordering
|
|
1862
|
+
* Similar to token registry pattern used in identifier-management
|
|
1863
|
+
*/
|
|
1864
|
+
declare class AXPMenuMiddlewareRegistry {
|
|
1865
|
+
/**
|
|
1866
|
+
* Manually registered middlewares
|
|
1867
|
+
*/
|
|
1868
|
+
private readonly manualMiddlewares;
|
|
1869
|
+
/**
|
|
1870
|
+
* Provider-based middlewares (multi-provider injection)
|
|
1871
|
+
*/
|
|
1872
|
+
private readonly providerMiddlewares;
|
|
1873
|
+
/**
|
|
1874
|
+
* Manually register a middleware
|
|
1875
|
+
* @param middleware - The middleware to register
|
|
1876
|
+
*/
|
|
1877
|
+
register(middleware: AXPMenuMiddleware): void;
|
|
1878
|
+
/**
|
|
1879
|
+
* Unregister a middleware by name
|
|
1880
|
+
* @param name - The name of the middleware to remove
|
|
1881
|
+
*/
|
|
1882
|
+
unregister(name: string): void;
|
|
1883
|
+
/**
|
|
1884
|
+
* Get a specific middleware by name
|
|
1885
|
+
* @param name - The middleware name
|
|
1886
|
+
*/
|
|
1887
|
+
get(name: string): AXPMenuMiddleware | undefined;
|
|
1888
|
+
/**
|
|
1889
|
+
* Get all middlewares sorted by priority (highest first)
|
|
1890
|
+
* Combines provider-based and manually registered middlewares
|
|
1891
|
+
*/
|
|
1892
|
+
list(): AXPMenuMiddleware[];
|
|
1893
|
+
/**
|
|
1894
|
+
* Check if a middleware exists
|
|
1895
|
+
* @param name - The middleware name
|
|
1896
|
+
*/
|
|
1897
|
+
exists(name: string): boolean;
|
|
1898
|
+
/**
|
|
1899
|
+
* Clear all manually registered middlewares
|
|
1900
|
+
* Provider-based middlewares are not affected
|
|
1901
|
+
*/
|
|
1902
|
+
clear(): void;
|
|
1903
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuMiddlewareRegistry, never>;
|
|
1904
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuMiddlewareRegistry>;
|
|
1905
|
+
}
|
|
1906
|
+
|
|
1907
|
+
/**
|
|
1908
|
+
* Helper function to provide menu middlewares with proper DI setup
|
|
1909
|
+
* Similar to provideCommandMiddleware pattern
|
|
1910
|
+
*
|
|
1911
|
+
* @example
|
|
1912
|
+
* ```typescript
|
|
1913
|
+
* // In app.config.ts or module providers
|
|
1914
|
+
* export const appConfig: ApplicationConfig = {
|
|
1915
|
+
* providers: [
|
|
1916
|
+
* provideMenuMiddleware([
|
|
1917
|
+
* customizationMiddleware,
|
|
1918
|
+
* securityMiddleware,
|
|
1919
|
+
* loggingMiddleware
|
|
1920
|
+
* ])
|
|
1921
|
+
* ]
|
|
1922
|
+
* };
|
|
1923
|
+
* ```
|
|
1924
|
+
*/
|
|
1925
|
+
declare function provideMenuMiddleware(middlewares: AXPMenuMiddleware[]): EnvironmentProviders;
|
|
1926
|
+
/**
|
|
1927
|
+
* Helper to create a class-based middleware with priority
|
|
1928
|
+
*
|
|
1929
|
+
* @example
|
|
1930
|
+
* ```typescript
|
|
1931
|
+
* const myMiddleware = createMenuMiddleware({
|
|
1932
|
+
* name: 'my-middleware',
|
|
1933
|
+
* priority: 100,
|
|
1934
|
+
* process: async (context) => {
|
|
1935
|
+
* context.find('dashboard').setPriority(1);
|
|
1936
|
+
* }
|
|
1937
|
+
* });
|
|
1938
|
+
* ```
|
|
1939
|
+
*/
|
|
1940
|
+
declare function createMenuMiddleware(config: {
|
|
1941
|
+
name: string;
|
|
1942
|
+
priority?: number;
|
|
1943
|
+
process: (context: AXPMenuMiddlewareContext) => Promise<void>;
|
|
1944
|
+
}): AXPMenuMiddleware;
|
|
1945
|
+
|
|
1946
|
+
declare const AXPMenuService: i0.Type<{
|
|
1947
|
+
items: i0.Signal<AXPMenuItem[]>;
|
|
1948
|
+
selectedMenuItem: _ngrx_signals.DeepSignal<{
|
|
1949
|
+
item: AXPMenuItem | null;
|
|
1950
|
+
isFullMatch: boolean;
|
|
1951
|
+
}>;
|
|
1952
|
+
setMenuItems: (items: AXPMenuItem[]) => void;
|
|
1953
|
+
selectMenuItemByRoute: (path: string) => void;
|
|
1954
|
+
executeCommand: (item: AXPMenuItem) => void;
|
|
1955
|
+
isItemOpen: (item: AXPMenuItem) => boolean;
|
|
1956
|
+
} & _ngrx_signals.StateSource<{
|
|
1957
|
+
items: AXPMenuItem[];
|
|
1958
|
+
selectedMenuItem: {
|
|
1959
|
+
item: AXPMenuItem | null;
|
|
1960
|
+
isFullMatch: boolean;
|
|
1961
|
+
};
|
|
1962
|
+
}>>;
|
|
1963
|
+
|
|
1964
|
+
declare class AXPMenuKeyboardShortcutService {
|
|
1965
|
+
private readonly destroyRef;
|
|
1966
|
+
private readonly injector;
|
|
1967
|
+
private readonly shortcutRegistry;
|
|
1968
|
+
private readonly visibilityService;
|
|
1969
|
+
private readonly sessionService;
|
|
1970
|
+
private readonly isAuthenticated;
|
|
1971
|
+
/**
|
|
1972
|
+
* Registers global keyboard shortcuts declared on menu items (`shortcuts` property).
|
|
1973
|
+
* Replaces the previous registration when the menu tree is reloaded.
|
|
1974
|
+
*/
|
|
1975
|
+
sync(items: AXPMenuItem[]): void;
|
|
1976
|
+
private buildShortcutBindings;
|
|
1977
|
+
private collectShortcutEntries;
|
|
1978
|
+
private isShortcutActive;
|
|
1979
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuKeyboardShortcutService, never>;
|
|
1980
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuKeyboardShortcutService>;
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
/**
|
|
1984
|
+
* Service for checking menu item visibility based on permissions, features, and children.
|
|
1985
|
+
* This service helps filter out empty menu items that have no visible children.
|
|
1986
|
+
*/
|
|
1987
|
+
declare class AXPMenuVisibilityService {
|
|
1988
|
+
private sessionService;
|
|
1989
|
+
/**
|
|
1990
|
+
* Checks visibility for a menu branch, including ancestor policies.
|
|
1991
|
+
* Parent module features and permissions must pass before child routes are accessible.
|
|
1992
|
+
*/
|
|
1993
|
+
isMenuBranchVisible(item: AXPMenuItem, ancestors?: AXPMenuItem[]): boolean;
|
|
1994
|
+
/**
|
|
1995
|
+
* Checks if a menu item should be visible based on permissions and features.
|
|
1996
|
+
*/
|
|
1997
|
+
isItemVisible(item: AXPMenuItem): boolean;
|
|
1998
|
+
/**
|
|
1999
|
+
* Recursively checks if a menu item has any visible children.
|
|
2000
|
+
* @param item The menu item to check
|
|
2001
|
+
* @param getRouterLink Optional function to check if an item has a router link
|
|
2002
|
+
*/
|
|
2003
|
+
hasVisibleChildren(item: AXPMenuItem, getRouterLink?: (item: AXPMenuItem) => unknown): boolean;
|
|
2004
|
+
/**
|
|
2005
|
+
* Determines if a menu item should be rendered.
|
|
2006
|
+
* A menu item should be rendered if:
|
|
2007
|
+
* 1. It has a routerLink, OR
|
|
2008
|
+
* 2. It has visible children, OR
|
|
2009
|
+
* 3. It has a command (for non-router navigation)
|
|
2010
|
+
*
|
|
2011
|
+
* @param item The menu item to check
|
|
2012
|
+
* @param getRouterLink Optional function to check if an item has a router link
|
|
2013
|
+
*/
|
|
2014
|
+
shouldRenderMenuItem(item: AXPMenuItem, getRouterLink?: (item: AXPMenuItem) => unknown): boolean;
|
|
2015
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuVisibilityService, never>;
|
|
2016
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuVisibilityService>;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
interface AXPMenuRouteMatchResult {
|
|
2020
|
+
item: AXPMenuItem;
|
|
2021
|
+
/** Parent menu items from root down to the direct parent of the matched item. */
|
|
2022
|
+
ancestors: AXPMenuItem[];
|
|
2023
|
+
isPartialMatch: boolean;
|
|
2024
|
+
}
|
|
2025
|
+
/**
|
|
2026
|
+
* Compares a menu item path with the current browser path.
|
|
2027
|
+
* Mirrors the matching rules used when selecting the active menu item.
|
|
2028
|
+
*/
|
|
2029
|
+
declare function axpMenuPathsMatch(itemPath: string, currentPath: string, trailingSegmentsToIgnore?: string[]): {
|
|
2030
|
+
isMatch: boolean;
|
|
2031
|
+
isPartial: boolean;
|
|
2032
|
+
};
|
|
2033
|
+
/**
|
|
2034
|
+
* Finds the most specific menu item that matches the given route path.
|
|
2035
|
+
*/
|
|
2036
|
+
declare function axpFindMenuItemByRoute(items: AXPMenuItem[], currentPath: string, trailingSegmentsToIgnore?: string[]): AXPMenuRouteMatchResult | null;
|
|
2037
|
+
|
|
2038
|
+
/**
|
|
2039
|
+
* Resolves route access using menu policy, route metadata, permissions, and features.
|
|
2040
|
+
*/
|
|
2041
|
+
declare class AXPMenuRouteAccessService {
|
|
2042
|
+
private readonly menuProvider;
|
|
2043
|
+
private readonly menuVisibility;
|
|
2044
|
+
private readonly sessionService;
|
|
2045
|
+
/**
|
|
2046
|
+
* Checks whether navigation to the target URL is allowed for the current user.
|
|
2047
|
+
*/
|
|
2048
|
+
canAccess(route: ActivatedRouteSnapshot, url: string): Promise<boolean>;
|
|
2049
|
+
private shouldSkip;
|
|
2050
|
+
private hasRouteFlag;
|
|
2051
|
+
private hasExplicitRouteAccess;
|
|
2052
|
+
private getInheritedRouteData;
|
|
2053
|
+
private normalizeKeys;
|
|
2054
|
+
private normalizeUrl;
|
|
2055
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuRouteAccessService, never>;
|
|
2056
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuRouteAccessService>;
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
/**
|
|
2060
|
+
|
|
2061
|
+
* Blocks navigation when the target route is not accessible for the current user.
|
|
2062
|
+
|
|
2063
|
+
* Evaluates menu policy, permissions, and features.
|
|
2064
|
+
|
|
2065
|
+
*/
|
|
2066
|
+
declare const AXPMenuRouteGuard: CanActivateFn;
|
|
2067
|
+
|
|
2068
|
+
/** Standard guards for authenticated routes with menu-based access enforcement. */
|
|
2069
|
+
declare const AXP_PROTECTED_ROUTE_GUARDS: readonly [_angular_router.CanActivateFn, _angular_router.CanActivateFn];
|
|
2070
|
+
|
|
2071
|
+
interface AXPSearchDefinitionDisplayFormat {
|
|
2072
|
+
title?: string;
|
|
2073
|
+
description?: string;
|
|
2074
|
+
icon?: string;
|
|
2075
|
+
id?: string;
|
|
2076
|
+
/** Entity `single.title` / lookup / individual templates when primary `title` is empty. */
|
|
2077
|
+
titleFallbackTemplates?: string[];
|
|
2078
|
+
/** Entity property paths (from schema) when templates do not resolve. */
|
|
2079
|
+
titleFallbackFields?: string[];
|
|
2080
|
+
}
|
|
2081
|
+
interface AXPSearchDefinition {
|
|
2082
|
+
name: string;
|
|
2083
|
+
title: string;
|
|
2084
|
+
group: string;
|
|
2085
|
+
icon: string;
|
|
2086
|
+
order: number;
|
|
2087
|
+
format: AXPSearchDefinitionDisplayFormat;
|
|
2088
|
+
actions: AXPSearchAction[];
|
|
2089
|
+
}
|
|
2090
|
+
interface AXPSearchParentResult {
|
|
2091
|
+
title: string;
|
|
2092
|
+
data?: any;
|
|
2093
|
+
}
|
|
2094
|
+
interface AXPSearchResult {
|
|
2095
|
+
id?: string;
|
|
2096
|
+
group: string;
|
|
2097
|
+
data?: any;
|
|
2098
|
+
title?: string | AXPMultiLanguageString;
|
|
2099
|
+
description?: string | AXPMultiLanguageString;
|
|
2100
|
+
icon?: string;
|
|
2101
|
+
command: AXPExecuteCommand;
|
|
2102
|
+
parent?: AXPSearchParentResult;
|
|
2103
|
+
}
|
|
2104
|
+
interface AXPSearchDisplayGroupResult {
|
|
2105
|
+
name: string;
|
|
2106
|
+
title: string;
|
|
2107
|
+
order: number;
|
|
2108
|
+
children: AXPSearchDisplayResult[];
|
|
2109
|
+
}
|
|
2110
|
+
interface AXPSearchDisplayResult {
|
|
2111
|
+
id: string;
|
|
2112
|
+
definitionName?: string;
|
|
2113
|
+
definitionTitle?: string;
|
|
2114
|
+
name: string;
|
|
2115
|
+
title: string | AXPMultiLanguageString;
|
|
2116
|
+
description?: string | AXPMultiLanguageString;
|
|
2117
|
+
icon: string;
|
|
2118
|
+
data?: any;
|
|
2119
|
+
order?: any;
|
|
2120
|
+
command: AXPExecuteCommand;
|
|
2121
|
+
parent?: AXPSearchParentResult;
|
|
2122
|
+
actions: AXPSearchAction[];
|
|
2123
|
+
}
|
|
2124
|
+
interface AXPSearchDisplayResultForSave {
|
|
2125
|
+
id: string;
|
|
2126
|
+
name: string;
|
|
2127
|
+
title: string;
|
|
2128
|
+
description?: string;
|
|
2129
|
+
icon: string;
|
|
2130
|
+
command: AXPExecuteCommand;
|
|
2131
|
+
parent?: {
|
|
2132
|
+
title: string;
|
|
2133
|
+
description?: string;
|
|
2134
|
+
};
|
|
2135
|
+
}
|
|
2136
|
+
interface AXPSearchAction extends Partial<AXPCommandActionLook> {
|
|
2137
|
+
name: string;
|
|
2138
|
+
type: AXPSystemActionType | string;
|
|
2139
|
+
priority: AXPCommandActionPriority;
|
|
2140
|
+
separated?: boolean;
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
declare class AXPSearchDefinitionProviderContext {
|
|
2144
|
+
private definitions;
|
|
2145
|
+
private definitionMap;
|
|
2146
|
+
addDefinition(name: string, title: string, group: string, icon: string, order: number, options?: {
|
|
2147
|
+
format?: AXPSearchDefinitionDisplayFormat;
|
|
2148
|
+
actions?: AXPSearchAction[];
|
|
2149
|
+
}): AXPSearchDefinitionBuilder;
|
|
2150
|
+
getDefinitions(): AXPSearchDefinition[];
|
|
2151
|
+
hasEntity(name: string): boolean;
|
|
2152
|
+
getDefinition(name: string): AXPSearchDefinition | undefined;
|
|
2153
|
+
}
|
|
2154
|
+
declare class AXPSearchDefinitionBuilder {
|
|
2155
|
+
private context;
|
|
2156
|
+
private definition;
|
|
2157
|
+
constructor(context: AXPSearchDefinitionProviderContext, definition: AXPSearchDefinition);
|
|
2158
|
+
addAction(name: string): AXPSearchDefinitionActionBuilder;
|
|
2159
|
+
action(name: string): AXPSearchDefinitionActionBuilder | null;
|
|
2160
|
+
endEntity(): AXPSearchDefinitionProviderContext;
|
|
2161
|
+
}
|
|
2162
|
+
declare class AXPSearchDefinitionActionBuilder {
|
|
2163
|
+
private entityBuilder;
|
|
2164
|
+
constructor(entityBuilder: AXPSearchDefinitionBuilder);
|
|
2165
|
+
endAction(): AXPSearchDefinitionBuilder;
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
interface AXPSearchDefinitionProvider {
|
|
2169
|
+
provide(context: AXPSearchDefinitionProviderContext): Promise<void>;
|
|
2170
|
+
}
|
|
2171
|
+
declare const AXP_SEARCH_DEFINITION_PROVIDER: InjectionToken<AXPSearchDefinitionProvider[]>;
|
|
2172
|
+
declare class AXPSearchDefinitionProviderService {
|
|
2173
|
+
private providers;
|
|
2174
|
+
private cache;
|
|
2175
|
+
private load;
|
|
2176
|
+
getListAsync(): Promise<AXPSearchDefinition[]>;
|
|
2177
|
+
getList(): AXPSearchDefinition[];
|
|
2178
|
+
findDefinition(definitionName: string): AXPSearchDefinition;
|
|
2179
|
+
findDefinitionByGroup(definitionGroup: string): AXPSearchDefinition;
|
|
2180
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSearchDefinitionProviderService, never>;
|
|
2181
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSearchDefinitionProviderService>;
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
interface AXPSearchProvider {
|
|
2185
|
+
search(text: string): Promise<AXPSearchResult[]>;
|
|
2186
|
+
}
|
|
2187
|
+
declare abstract class AXPSearchCommandProvider {
|
|
2188
|
+
private readonly translationService;
|
|
2189
|
+
abstract commands: AXPSearchResult[];
|
|
2190
|
+
search(text: string): Promise<AXPSearchResult[]>;
|
|
2191
|
+
}
|
|
2192
|
+
|
|
2193
|
+
declare const AXP_SEARCH_PROVIDER: InjectionToken<AXPSearchProvider[]>;
|
|
2194
|
+
declare class AXPSearchService {
|
|
2195
|
+
private providers;
|
|
2196
|
+
private definitionService;
|
|
2197
|
+
private formatService;
|
|
2198
|
+
private translationService;
|
|
2199
|
+
private expressionEvaluator;
|
|
2200
|
+
search(text: string): Promise<AXPSearchDisplayGroupResult[]>;
|
|
2201
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSearchService, never>;
|
|
2202
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSearchService>;
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
/**
|
|
2206
|
+
* Resolves a value to plain text for global-search matching (i18n keys, locale maps, scalars).
|
|
2207
|
+
*/
|
|
2208
|
+
declare function resolveSearchableText(value: unknown, locale: string, translationService: AXTranslationService): string;
|
|
2209
|
+
/**
|
|
2210
|
+
* Case-insensitive match against i18n keys, locale maps, and plain strings.
|
|
2211
|
+
*/
|
|
2212
|
+
declare function searchInSearchableValue(value: unknown, query: string, locale: string, translationService: AXTranslationService): boolean;
|
|
2213
|
+
/**
|
|
2214
|
+
* Shallow + nested search over entity/command payloads (skips id / entityName keys).
|
|
2215
|
+
*/
|
|
2216
|
+
declare function searchInRecordValues(value: unknown, query: string, locale: string, translationService: AXTranslationService, depth?: number): boolean;
|
|
2217
|
+
/** Standard row scope for entity title/search templates. */
|
|
2218
|
+
declare function createEntityRowExpressionScope(data: unknown): AXPExpressionEvaluatorScope;
|
|
2219
|
+
/**
|
|
2220
|
+
* Evaluates a normalized entity display template via {@link AXPExpressionEvaluatorService}.
|
|
2221
|
+
*/
|
|
2222
|
+
declare function evaluateEntityDisplayTemplate(template: string, data: unknown, expressionEvaluator: AXPExpressionEvaluatorService, locale: string, translationService: AXTranslationService): Promise<unknown>;
|
|
2223
|
+
/**
|
|
2224
|
+
* Best display string from row values that contain the active search query (deep-match fallback).
|
|
2225
|
+
*/
|
|
2226
|
+
declare function resolveQueryMatchingDisplayText(value: unknown, query: string, locale: string, translationService: AXTranslationService, depth?: number): string;
|
|
2227
|
+
/**
|
|
2228
|
+
* Resolves entity search display templates; coerces multi-language field values to readable text.
|
|
2229
|
+
*/
|
|
2230
|
+
declare function resolveSearchDisplayTemplate(template: string | undefined, data: unknown, locale: string, translationService: AXTranslationService, formatService: AXFormatService, expressionEvaluator: AXPExpressionEvaluatorService): Promise<AXPMultiLanguageString>;
|
|
2231
|
+
|
|
2232
|
+
interface AXPEntitySearchTitleContext {
|
|
2233
|
+
/** Templates tried after the primary `searchResult.title` fails (`single.title`, lookup, individual). */
|
|
2234
|
+
fallbackTemplates: string[];
|
|
2235
|
+
/** Entity property paths tried when templates do not resolve (`lookup`, identifier, common fields). */
|
|
2236
|
+
fallbackFields: string[];
|
|
2237
|
+
}
|
|
2238
|
+
/**
|
|
2239
|
+
* Normalizes entity display templates for {@link AXPExpressionEvaluatorService}.
|
|
2240
|
+
* Converts `context.eval('path')`, single braces, and simple dot paths to `context.eval` segments.
|
|
2241
|
+
*/
|
|
2242
|
+
declare function normalizeEntityDisplayTemplate(template: string): string;
|
|
2243
|
+
/** True when formatted text still contains unresolved template markers. */
|
|
2244
|
+
declare function isUnresolvedEntityDisplayTemplate(value: string): boolean;
|
|
2245
|
+
/**
|
|
2246
|
+
* Strips literal `undefined` / `null` tokens produced when expression segments are missing.
|
|
2247
|
+
*/
|
|
2248
|
+
declare function sanitizeResolvedEntityDisplayTitle(value: string): string;
|
|
2249
|
+
/** True when a resolved title is non-empty and safe to show in search or entity chrome. */
|
|
2250
|
+
declare function isMeaningfulEntityDisplayTitle(value: string): boolean;
|
|
2251
|
+
/**
|
|
2252
|
+
* Builds entity-scoped fallback metadata for global search (registered on each entity search definition).
|
|
2253
|
+
*/
|
|
2254
|
+
declare function buildEntitySearchTitleContext(entity: AXPEntity, primaryTemplate?: string): AXPEntitySearchTitleContext;
|
|
2255
|
+
/**
|
|
2256
|
+
* Row title template chain aligned with entity layouts.
|
|
2257
|
+
* Priority: `interfaces.master.single.title` → `formats.searchResult.title` → `formats.individual`.
|
|
2258
|
+
*/
|
|
2259
|
+
declare function resolveEntityRowTitleTemplate(entity: AXPEntity | null | undefined): string | undefined;
|
|
2260
|
+
/**
|
|
2261
|
+
* Resolves an entity row title using entity-driven fallback templates and property paths.
|
|
2262
|
+
*/
|
|
2263
|
+
declare function resolveEntitySearchTitleFallback(format: Pick<AXPSearchDefinitionDisplayFormat, 'titleFallbackTemplates' | 'titleFallbackFields'>, data: unknown, locale: string, translationService: AXTranslationService, formatService: AXFormatService, expressionEvaluator: AXPExpressionEvaluatorService): Promise<string>;
|
|
2264
|
+
|
|
2265
|
+
interface AXPResolveEntityRowDisplayTitleOptions {
|
|
2266
|
+
/** Row or form context data used to evaluate title templates. */
|
|
2267
|
+
data: Record<string, unknown> | undefined;
|
|
2268
|
+
activeLang: string;
|
|
2269
|
+
formatService: AXFormatService;
|
|
2270
|
+
/** Entity definition when available (forms, columns with entity resolver). */
|
|
2271
|
+
entity?: AXPEntity | null;
|
|
2272
|
+
/** Widget/interface options — may contain `popupTitle` or `titleTemplate`. */
|
|
2273
|
+
widgetOptions?: Record<string, unknown> | undefined;
|
|
2274
|
+
}
|
|
2275
|
+
/** Row path used when context carries a nested entity layout title. */
|
|
2276
|
+
declare const ENTITY_LAYOUT_SINGLE_TITLE_PATH = "entity.layout.single.title";
|
|
2277
|
+
/** Widget option for a pre-evaluated or template entity row title (entity list column mappers). */
|
|
2278
|
+
declare const ENTITY_ROW_POPUP_TITLE_OPTION = "popupTitle";
|
|
2279
|
+
/** Widget option alias for entity row title templates in view/edit forms. */
|
|
2280
|
+
declare const ENTITY_ROW_TITLE_TEMPLATE_OPTION = "titleTemplate";
|
|
2281
|
+
/** Resolves a row field or format result to a plain display string for the active locale. */
|
|
2282
|
+
declare function resolveEntityRowDisplayText(value: unknown, activeLang: string): string;
|
|
2283
|
+
/**
|
|
2284
|
+
* Resolves an entity row title for list columns, view widgets, and edit widgets.
|
|
2285
|
+
* Uses entity metadata when provided, otherwise widget title templates and common field paths.
|
|
2286
|
+
*/
|
|
2287
|
+
declare function resolveEntityRowDisplayTitle(options: AXPResolveEntityRowDisplayTitleOptions): string;
|
|
2288
|
+
/**
|
|
2289
|
+
* @deprecated Use {@link resolveEntityRowDisplayTitle} instead.
|
|
2290
|
+
*/
|
|
2291
|
+
declare function resolveEntityRowDisplayTitleFromColumnContext(rowData: Record<string, unknown> | undefined, columnOptions: Record<string, unknown> | undefined, formatService: AXFormatService, activeLang: string): string;
|
|
2292
|
+
/**
|
|
2293
|
+
* Formats the entity row title for display using entity-driven templates and property paths.
|
|
2294
|
+
*/
|
|
2295
|
+
declare function formatEntityRowDisplayTitle(entity: AXPEntity | null | undefined, rowData: Record<string, unknown> | undefined, formatService: AXFormatService, activeLang: string): string;
|
|
2296
|
+
|
|
2297
|
+
/**
|
|
2298
|
+
* Shared utility for creating Entity:Create command options used in search command providers.
|
|
2299
|
+
* Use with command: { name: 'Entity:Create', options: createEntityCommandOptions(...) }
|
|
2300
|
+
*/
|
|
2301
|
+
declare function createEntityCommandOptions(entityKey: string, entityInfo: {
|
|
2302
|
+
name: string;
|
|
2303
|
+
module: string;
|
|
2304
|
+
title: string;
|
|
2305
|
+
}): Record<string, unknown>;
|
|
2306
|
+
/**
|
|
2307
|
+
* Creates a search command for "Create {Entity}" with consistent i18n pattern.
|
|
2308
|
+
* Use titleKey/descriptionKey from module (e.g. @module:entity.permissions.create.title).
|
|
2309
|
+
* Standard: "Create {Entity}" for title, "Create new {entities}" for description.
|
|
2310
|
+
*/
|
|
2311
|
+
declare function createEntitySearchCommand(config: {
|
|
2312
|
+
id: string;
|
|
2313
|
+
entityKey: string;
|
|
2314
|
+
entityInfo: {
|
|
2315
|
+
name: string;
|
|
2316
|
+
module: string;
|
|
2317
|
+
title: string;
|
|
2318
|
+
};
|
|
2319
|
+
titleKey: string;
|
|
2320
|
+
descriptionKey?: string;
|
|
2321
|
+
icon: string;
|
|
2322
|
+
}): AXPSearchResult;
|
|
2323
|
+
|
|
2324
|
+
declare class AXPMenuSearchDefinitionProvider implements AXPSearchDefinitionProvider {
|
|
2325
|
+
provide(context: AXPSearchDefinitionProviderContext): Promise<void>;
|
|
2326
|
+
}
|
|
2327
|
+
|
|
2328
|
+
interface AXPMenuItemWithParent extends AXPMenuItem {
|
|
2329
|
+
parent?: AXPMenuItem;
|
|
2330
|
+
}
|
|
2331
|
+
declare class AXPMenuSearchProvider implements AXPSearchProvider {
|
|
2332
|
+
menuService: AXPMenuProviderService;
|
|
2333
|
+
translateService: AXTranslationService;
|
|
2334
|
+
search(text: string): Promise<AXPSearchResult[]>;
|
|
2335
|
+
/**
|
|
2336
|
+
* Recursively searches AXPMenuItem and its children for a matching text.
|
|
2337
|
+
*
|
|
2338
|
+
* @param menuItems - The array of AXPMenuItem to search in.
|
|
2339
|
+
* @param searchText - The text to search for (case-insensitive).
|
|
2340
|
+
* @returns An array of AXPMenuItem that match the search text.
|
|
2341
|
+
*/
|
|
2342
|
+
private searchMenuItems;
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
declare class AXPFooterTextSlotComponent {
|
|
2346
|
+
text: string;
|
|
2347
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPFooterTextSlotComponent, never>;
|
|
2348
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPFooterTextSlotComponent, "ng-component", never, { "text": { "alias": "text"; "required": false; }; }, {}, never, never, true, never>;
|
|
2349
|
+
}
|
|
2350
|
+
|
|
2351
|
+
declare class AXPNavBarSlotComponent {
|
|
2352
|
+
items: AXPMenuItem[];
|
|
2353
|
+
protected handleCommand(action?: AXPMenuItemCommand): void;
|
|
2354
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPNavBarSlotComponent, never>;
|
|
2355
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPNavBarSlotComponent, "ng-component", never, { "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
interface AXPLockRequest {
|
|
2359
|
+
refId: string;
|
|
2360
|
+
refType: string;
|
|
2361
|
+
type: AXPLockType;
|
|
2362
|
+
date: string;
|
|
2363
|
+
expireAt?: Date;
|
|
2364
|
+
lockedBy: AXPEntityReference;
|
|
2365
|
+
}
|
|
2366
|
+
interface AXPUnLockRequest {
|
|
2367
|
+
refId: string;
|
|
2368
|
+
refType: string;
|
|
2369
|
+
type: AXPLockType;
|
|
2370
|
+
}
|
|
2371
|
+
interface AXPLockGetInfoRequest {
|
|
2372
|
+
refId: string;
|
|
2373
|
+
refType: string;
|
|
2374
|
+
type?: AXPLockType;
|
|
2375
|
+
}
|
|
2376
|
+
type AXPLockType = 'admin' | 'user';
|
|
2377
|
+
interface AXPLockInfo {
|
|
2378
|
+
id: string;
|
|
2379
|
+
refId: string;
|
|
2380
|
+
refType: string;
|
|
2381
|
+
type: AXPLockType;
|
|
2382
|
+
date: string;
|
|
2383
|
+
expireAt?: Date;
|
|
2384
|
+
lockedBy: AXPApplicationUserReference;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
declare abstract class AXPLockService {
|
|
2388
|
+
abstract lock(request: AXPLockRequest): Promise<AXPLockInfo>;
|
|
2389
|
+
abstract unlock(request: AXPUnLockRequest): Promise<void>;
|
|
2390
|
+
abstract check(request: AXPLockGetInfoRequest): Promise<boolean>;
|
|
2391
|
+
abstract getInfo(request: AXPLockGetInfoRequest): Promise<AXPLockInfo>;
|
|
2392
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPLockService, never>;
|
|
2393
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPLockService>;
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
/**
|
|
2397
|
+
* Synchronous access to default multi-language behavior for named entity fields and widget
|
|
2398
|
+
* property bindings. Mirrors {@link AXPLayoutOrderingConfigService}: avoids async in entity
|
|
2399
|
+
* modifiers and startup deadlocks.
|
|
2400
|
+
*/
|
|
2401
|
+
declare class AXPDefaultMultiLanguageConfigService {
|
|
2402
|
+
private readonly settingsService;
|
|
2403
|
+
private readonly _applyDefault;
|
|
2404
|
+
private syncScheduled;
|
|
2405
|
+
constructor();
|
|
2406
|
+
getApplyDefaultMultiLanguage(): boolean;
|
|
2407
|
+
private syncFromSettings;
|
|
2408
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPDefaultMultiLanguageConfigService, never>;
|
|
2409
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPDefaultMultiLanguageConfigService>;
|
|
2410
|
+
}
|
|
2411
|
+
|
|
2412
|
+
/**
|
|
2413
|
+
* Shared multi-language defaults for entity properties and widget property bindings.
|
|
2414
|
+
*
|
|
2415
|
+
* **Circular dependencies:** use only `import type` for `AXPWidgetProperty` and
|
|
2416
|
+
* `AXPEntityProperty` so this module has no runtime imports from widget-core or application
|
|
2417
|
+
* types — `@acorex/platform/layout/widget-core` does not import `@acorex/platform/common`.
|
|
2418
|
+
*/
|
|
2419
|
+
|
|
2420
|
+
/**
|
|
2421
|
+
* Widget types that support the multiLanguage option (text / rich text editors).
|
|
2422
|
+
*/
|
|
2423
|
+
declare const MULTILANGUAGE_CAPABLE_WIDGET_TYPES: Set<string>;
|
|
2424
|
+
/**
|
|
2425
|
+
* Common property names / binding path segments that are usually translatable when the feature is
|
|
2426
|
+
* enabled in settings. Explicit `multiLanguage` on the property still wins.
|
|
2427
|
+
*/
|
|
2428
|
+
declare const DEFAULT_MULTILANGUAGE_FIELD_NAMES: Set<string>;
|
|
2429
|
+
declare function shouldApplyDefaultMultiLanguageToEntityProperty(prop: AXPEntityProperty): boolean;
|
|
2430
|
+
declare function shouldApplyDefaultMultiLanguageToWidgetProperty(prop: AXPWidgetProperty): boolean;
|
|
2431
|
+
/**
|
|
2432
|
+
* Leaf widget nodes in entity `schema.interface` trees (e.g. GridLayout → RichText under `pre` /
|
|
2433
|
+
* `post`) — same path/type rules as {@link shouldApplyDefaultMultiLanguageToWidgetProperty}, without
|
|
2434
|
+
* `schema.dataType` (nodes do not carry entity schema).
|
|
2435
|
+
*/
|
|
2436
|
+
declare function shouldApplyDefaultMultiLanguageToWidgetNode(node: AXPWidgetNode): boolean;
|
|
2437
|
+
/**
|
|
2438
|
+
* When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
|
|
2439
|
+
* `options.multiLanguage` on eligible editor leaves inside an entity property's widget tree
|
|
2440
|
+
* (including nested layouts). Used by entity middleware so object fields (e.g. `pre`, `post`) are
|
|
2441
|
+
* covered, not only top-level string properties.
|
|
2442
|
+
*/
|
|
2443
|
+
declare function withDefaultMultiLanguageOnWidgetNodeTree(root: AXPWidgetNode | undefined | null, applyDefault: boolean): AXPWidgetNode | undefined | null;
|
|
2444
|
+
/**
|
|
2445
|
+
* When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
|
|
2446
|
+
* `schema.interface.options.multiLanguage` for eligible string widget properties (same rules as
|
|
2447
|
+
* entity middleware), unless the property already specifies `multiLanguage`.
|
|
2448
|
+
*/
|
|
2449
|
+
declare function withDefaultMultiLanguageOnWidgetProperty(prop: AXPWidgetProperty, applyDefault: boolean): AXPWidgetProperty;
|
|
2450
|
+
|
|
2451
|
+
declare class AXPSettingDefinitionProviderContext {
|
|
2452
|
+
private rootGroups;
|
|
2453
|
+
private groupMap;
|
|
2454
|
+
addGroup(name: string, title: string, description?: string, icon?: string, pageTitle?: string, priority?: number): AXPSettingDefinitionGroupBuilder;
|
|
2455
|
+
group(name: string): AXPSettingDefinitionGroupBuilder | null;
|
|
2456
|
+
getGroups(): AXPSettingDefinitionGroup[];
|
|
2457
|
+
hasGroup(name: string): boolean;
|
|
2458
|
+
getGroup(name: string): AXPSettingDefinitionGroup | undefined;
|
|
2459
|
+
}
|
|
2460
|
+
declare class AXPSettingDefinitionGroupBuilder {
|
|
2461
|
+
private context;
|
|
2462
|
+
private group;
|
|
2463
|
+
constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup);
|
|
2464
|
+
addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder;
|
|
2465
|
+
section(name: string): AXPSettingDefinitionSectionBuilder | null;
|
|
2466
|
+
addGroup(name: string, title: string, description?: string, icon?: string, pageTitle?: string, priority?: number): AXPSettingDefinitionGroupBuilder;
|
|
2467
|
+
endGroup(): AXPSettingDefinitionProviderContext;
|
|
2468
|
+
}
|
|
2469
|
+
declare class AXPSettingDefinitionSectionBuilder {
|
|
2470
|
+
private groupBuilder;
|
|
2471
|
+
private section;
|
|
2472
|
+
constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection);
|
|
2473
|
+
addSetting(setting: {
|
|
2474
|
+
key: string;
|
|
2475
|
+
title: string;
|
|
2476
|
+
scope: AXPPlatformScopeKey;
|
|
2477
|
+
widget: {
|
|
2478
|
+
type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
|
|
2479
|
+
options?: AXPOptionsData;
|
|
2480
|
+
triggers?: AXPWidgetTriggers;
|
|
2481
|
+
layout?: AXPSettingLayoutOptions;
|
|
2482
|
+
};
|
|
2483
|
+
description?: string;
|
|
2484
|
+
searchTagKeys?: string[];
|
|
2485
|
+
isRequired?: boolean;
|
|
2486
|
+
isInherited?: boolean;
|
|
2487
|
+
isEncrypted?: boolean;
|
|
2488
|
+
defaultValue?: unknown;
|
|
2489
|
+
valueTransforms?: AXPValueTransformerFunctions;
|
|
2490
|
+
validationRules?: AXPValidationRules;
|
|
2491
|
+
}): this;
|
|
2492
|
+
endSection(): AXPSettingDefinitionGroupBuilder;
|
|
2493
|
+
}
|
|
2494
|
+
|
|
2495
|
+
interface AXPSettingValueProvider {
|
|
2496
|
+
get scope(): AXPPlatformScope;
|
|
2497
|
+
load(): Promise<AXPSettingValue[]>;
|
|
2498
|
+
set(key: string, value: any): Promise<void>;
|
|
2499
|
+
set(values: Record<string, any>): Promise<void>;
|
|
2500
|
+
}
|
|
2501
|
+
/**
|
|
2502
|
+
* Provider interface for supplying default setting values from higher layers (e.g., app, mocks, API).
|
|
2503
|
+
* Providers are merged by ascending priority; later providers override earlier values on key conflicts.
|
|
2504
|
+
*/
|
|
2505
|
+
interface AXPSettingDefaultValuesProvider {
|
|
2506
|
+
/** Merge order; lower numbers are applied first. Default is 0. */
|
|
2507
|
+
priority?: number;
|
|
2508
|
+
/**
|
|
2509
|
+
* When set, missing values from this provider are persisted at this scope instead of each
|
|
2510
|
+
* setting's definition scope. Use for app-wide demo or deployment defaults (e.g. platform).
|
|
2511
|
+
*/
|
|
2512
|
+
scope?: AXPPlatformScope;
|
|
2513
|
+
/** Returns a flat map of setting key to default value. */
|
|
2514
|
+
provide(): Promise<Record<string, unknown>>;
|
|
2515
|
+
}
|
|
2516
|
+
interface AXPSettingValue {
|
|
2517
|
+
key: string;
|
|
2518
|
+
value: any;
|
|
2519
|
+
}
|
|
2520
|
+
interface AXPSettingChangedEvent {
|
|
2521
|
+
scope: AXPPlatformScope;
|
|
2522
|
+
keys: string[];
|
|
2523
|
+
values: Record<string, any>;
|
|
2524
|
+
entries: AXPSettingValue[];
|
|
2525
|
+
}
|
|
2526
|
+
/** Layout options for a single setting row on the settings page. */
|
|
2527
|
+
interface AXPSettingLayoutOptions extends AXPGridLayoutOptions {
|
|
2528
|
+
/** When true, stack the label above a full-width control. */
|
|
2529
|
+
stacked?: boolean;
|
|
2530
|
+
}
|
|
2531
|
+
interface AXPSettingDefinition {
|
|
2532
|
+
name: string;
|
|
2533
|
+
title: string;
|
|
2534
|
+
description?: string;
|
|
2535
|
+
/** Optional i18n keys (e.g. `@scope:key`) whose translated values are included in settings search. */
|
|
2536
|
+
searchTagKeys?: string[];
|
|
2537
|
+
widget: AXPWidgetNode;
|
|
2538
|
+
layout?: AXPSettingLayoutOptions;
|
|
2539
|
+
scope: AXPPlatformScopeKey;
|
|
2540
|
+
isRequired?: boolean;
|
|
2541
|
+
isInherited?: boolean;
|
|
2542
|
+
isEncrypted?: boolean;
|
|
2543
|
+
defaultValue?: unknown;
|
|
2544
|
+
value?: unknown;
|
|
2545
|
+
}
|
|
2546
|
+
interface AXPSettingDefinitionGroup {
|
|
2547
|
+
name: string;
|
|
2548
|
+
/** Short label (e.g. sidebar); i18n key when using the translation pipe. */
|
|
2549
|
+
title: string;
|
|
2550
|
+
/** Optional fuller page heading; i18n key. When omitted, `title` is used for the page header. */
|
|
2551
|
+
pageTitle?: string;
|
|
2552
|
+
icon?: string;
|
|
2553
|
+
description?: string;
|
|
2554
|
+
/** Sidebar order; lower numbers appear first. Defaults to 1000 when omitted. */
|
|
2555
|
+
priority?: number;
|
|
2556
|
+
groups: AXPSettingDefinitionGroup[];
|
|
2557
|
+
sections: AXPSettingDefinitionSection[];
|
|
2558
|
+
}
|
|
2559
|
+
interface AXPSettingDefinitionSection {
|
|
2560
|
+
name: string;
|
|
2561
|
+
title: string;
|
|
2562
|
+
description?: string;
|
|
2563
|
+
settings: AXPSettingDefinition[];
|
|
2564
|
+
}
|
|
2565
|
+
interface AXPGroupSearchResult {
|
|
2566
|
+
breadcrumb: {
|
|
2567
|
+
name: string;
|
|
2568
|
+
title: string;
|
|
2569
|
+
description?: string;
|
|
2570
|
+
}[];
|
|
2571
|
+
sections: AXPSettingDefinitionSection[] | null;
|
|
2572
|
+
groups: AXPSettingDefinitionGroup[] | null;
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2575
|
+
interface AXPSettingDefinitionProvider {
|
|
2576
|
+
provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
|
|
2577
|
+
}
|
|
2578
|
+
declare const AXP_SETTING_DEFINITION_PROVIDER: InjectionToken<AXPSettingDefinitionProvider[]>;
|
|
2579
|
+
declare class AXPSettingDefinitionProviderService {
|
|
2580
|
+
private providers;
|
|
2581
|
+
private cache;
|
|
2582
|
+
private load;
|
|
2583
|
+
reload(): Promise<void>;
|
|
2584
|
+
getListAsync(scope: AXPPlatformScopeKey): Promise<AXPSettingDefinitionGroup[]>;
|
|
2585
|
+
getList(scope: AXPPlatformScopeKey): AXPSettingDefinitionGroup[];
|
|
2586
|
+
defaultValues(): Promise<Record<string, unknown>>;
|
|
2587
|
+
settingScopeByKey(): Promise<Record<string, AXPPlatformScope>>;
|
|
2588
|
+
findGroup(scope: AXPPlatformScopeKey, groupName: string): AXPGroupSearchResult;
|
|
2589
|
+
private searchRecursive;
|
|
2590
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingDefinitionProviderService, never>;
|
|
2591
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingDefinitionProviderService>;
|
|
2592
|
+
}
|
|
2593
|
+
declare const AXP_SETTING_DEFAULT_VALUES_PROVIDERS: InjectionToken<AXPSettingDefaultValuesProvider[]>;
|
|
2594
|
+
interface AXPSettingMergedDefaults {
|
|
2595
|
+
defaults: Record<string, unknown>;
|
|
2596
|
+
/** Per-key scope override for seeding (from providers that set `scope`). */
|
|
2597
|
+
seedScopeByKey: Record<string, AXPPlatformScope>;
|
|
2598
|
+
}
|
|
2599
|
+
declare class AXPSettingDefaultValuesAggregatorService {
|
|
2600
|
+
private readonly definitionService;
|
|
2601
|
+
private readonly providers;
|
|
2602
|
+
getMerged(): Promise<AXPSettingMergedDefaults>;
|
|
2603
|
+
getDefaults(): Promise<Record<string, unknown>>;
|
|
2604
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingDefaultValuesAggregatorService, never>;
|
|
2605
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingDefaultValuesAggregatorService>;
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2608
|
+
declare const AXP_SETTING_VALUE_PROVIDER: InjectionToken<AXPSettingValueProvider[]>;
|
|
2609
|
+
|
|
2610
|
+
/**
|
|
2611
|
+
* Supported primitive coercions for persisted setting values (including `{ value: ... }` wrappers).
|
|
2612
|
+
*/
|
|
2613
|
+
type AXPSettingCoercionKind = 'string' | 'boolean' | 'number' | 'date';
|
|
2614
|
+
/**
|
|
2615
|
+
* If the payload uses the common `{ value: T }` shape from setting widgets, returns the inner value; otherwise returns `raw`.
|
|
2616
|
+
*/
|
|
2617
|
+
declare function peelSettingValueKey(raw: unknown): unknown;
|
|
2618
|
+
/**
|
|
2619
|
+
* Picks a primitive coercion kind from the setting definition default and/or the effective stored value.
|
|
2620
|
+
* Type argument `T` on the settings service `get` method is compile-time only; runtime behavior follows this inference.
|
|
2621
|
+
*/
|
|
2622
|
+
declare function inferSettingCoercionKind(defaultSample: unknown, effective: unknown): AXPSettingCoercionKind | null;
|
|
2623
|
+
declare function coerceAXPSettingRawValueByKind(raw: unknown, kind: AXPSettingCoercionKind): string | boolean | number | Date;
|
|
2624
|
+
declare function coerceAXPSettingRawValue(raw: unknown, kind: 'string'): string;
|
|
2625
|
+
declare function coerceAXPSettingRawValue(raw: unknown, kind: 'boolean'): boolean;
|
|
2626
|
+
declare function coerceAXPSettingRawValue(raw: unknown, kind: 'number'): number;
|
|
2627
|
+
declare function coerceAXPSettingRawValue(raw: unknown, kind: 'date'): Date;
|
|
2628
|
+
|
|
2629
|
+
interface AXPSettingsServiceInterface {
|
|
2630
|
+
load(): Promise<AXPSettingValue[]>;
|
|
2631
|
+
get<T = any>(key: string): Promise<T>;
|
|
2632
|
+
defaultValues(scope: AXPPlatformScope): Promise<Record<string, unknown>>;
|
|
2633
|
+
scope(scope: AXPPlatformScope): ScopedSettingService;
|
|
2634
|
+
}
|
|
2635
|
+
declare class AXPSettingsService implements AXPSettingsServiceInterface {
|
|
2636
|
+
private readonly providers;
|
|
2637
|
+
private readonly injector;
|
|
2638
|
+
private readonly eventService;
|
|
2639
|
+
private readonly sessionService;
|
|
2640
|
+
private readonly scopedSettingsCache;
|
|
2641
|
+
readonly onChanged: Subject<AXPSettingChangedEvent>;
|
|
2642
|
+
readonly onLoaded: Subject<void>;
|
|
2643
|
+
constructor();
|
|
2644
|
+
reload(): Promise<void>;
|
|
2645
|
+
load(): Promise<AXPSettingValue[]>;
|
|
2646
|
+
/**
|
|
2647
|
+
* Returns the effective setting value. Primitive coercion (string, boolean, number, date) is inferred from the
|
|
2648
|
+
* definition default and/or the stored shape (including `{ value: ... }`). Type argument `T` is compile-time only;
|
|
2649
|
+
* it is not read at runtime—use it to document the expected result (e.g. `get<boolean>(key)`).
|
|
2650
|
+
*/
|
|
2651
|
+
get<T = any>(key: string): Promise<T>;
|
|
2652
|
+
/**
|
|
2653
|
+
* Effective value (user → tenant → platform) when set; otherwise the definition default. Used for reads and coercion hints.
|
|
2654
|
+
*/
|
|
2655
|
+
private resolveEffectiveAndDefault;
|
|
2656
|
+
defaultValues(scope: AXPPlatformScope): Promise<Record<string, unknown>>;
|
|
2657
|
+
scope(scope: AXPPlatformScope): ScopedSettingService;
|
|
2658
|
+
invokeChangeEvent(event: AXPSettingChangedEvent): void;
|
|
2659
|
+
private seedMissingDefaults;
|
|
2660
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingsService, never>;
|
|
2661
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingsService>;
|
|
2662
|
+
}
|
|
2663
|
+
declare class ScopedSettingService {
|
|
2664
|
+
private parent;
|
|
2665
|
+
private provider;
|
|
2666
|
+
private scopeCache;
|
|
2667
|
+
constructor(parent: AXPSettingsService, provider: AXPSettingValueProvider, scopeCache: Map<string, any>);
|
|
2668
|
+
get<T = any>(key: string): Promise<T>;
|
|
2669
|
+
all(): Promise<any>;
|
|
2670
|
+
defaultValues(): Promise<Record<string, unknown>>;
|
|
2671
|
+
set<T = any>(key: string, value: T): Promise<void>;
|
|
2672
|
+
set<T = any>(values: Record<string, T>): Promise<void>;
|
|
2673
|
+
update<T = any>(key: string, updateFn: (currentValue: T) => T): Promise<void>;
|
|
2674
|
+
}
|
|
2675
|
+
|
|
2676
|
+
/**
|
|
2677
|
+
* Exposes platform settings in expression strings, e.g.
|
|
2678
|
+
* `{{ settings.get('Common:Setting:Entity.ShowPageBadge') }}`.
|
|
2679
|
+
*/
|
|
2680
|
+
declare class AXPSettingsEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
|
|
2681
|
+
private readonly settingsService;
|
|
2682
|
+
provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
|
|
2683
|
+
}
|
|
2684
|
+
|
|
2685
|
+
/**
|
|
2686
|
+
* Platform-provided {@link AXCalendarService} that applies locale profile week layout
|
|
2687
|
+
* (first day of week, weekends) through the core calendar service lifecycle.
|
|
2688
|
+
*
|
|
2689
|
+
* Temporary bridge until @acorex/components reads week layout from AXLocaleService.
|
|
2690
|
+
*/
|
|
2691
|
+
declare class AXPRegionalCalendarService extends AXCalendarService {
|
|
2692
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPRegionalCalendarService, never>;
|
|
2693
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPRegionalCalendarService>;
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
/**
|
|
2697
|
+
* Regional and locale-related setting keys used by platform widgets and components.
|
|
2698
|
+
* Most values use the `LocaleManagement:Setting:Regional.*` prefix; definitions live in the locale-management module where applicable.
|
|
2699
|
+
*/
|
|
2700
|
+
declare enum AXPRegionalSetting {
|
|
2701
|
+
LocaleProfile = "LocaleManagement:Setting:Regional.LocaleProfile",
|
|
2702
|
+
TimeZone = "LocaleManagement:Setting:Regional.TimeZone",
|
|
2703
|
+
Language = "LocaleManagement:Setting:Regional.Language",
|
|
2704
|
+
Country = "LocaleManagement:Setting:Regional.Country",
|
|
2705
|
+
Calendar = "LocaleManagement:Setting:Regional.Calendar",
|
|
2706
|
+
/** User-selected holiday calendars shown on the task board and other calendar views. */
|
|
2707
|
+
CalendarEvents = "LocaleManagement:Setting:Regional.CalendarEvents",
|
|
2708
|
+
FirstDayOfWeek = "LocaleManagement:Setting:Regional.FirstDayOfWeek",
|
|
2709
|
+
WeekendDays = "LocaleManagement:Setting:Regional.WeekendDays",
|
|
2710
|
+
ShortDate = "LocaleManagement:Setting:Regional.ShortDate",
|
|
2711
|
+
MediumDate = "LocaleManagement:Setting:Regional.MediumDate",
|
|
2712
|
+
LongDate = "LocaleManagement:Setting:Regional.LongDate",
|
|
2713
|
+
ShortTime = "LocaleManagement:Setting:Regional.ShortTime",
|
|
2714
|
+
MediumTime = "LocaleManagement:Setting:Regional.MediumTime",
|
|
2715
|
+
LongTime = "LocaleManagement:Setting:Regional.LongTime",
|
|
2716
|
+
MeasurementUnits = "LocaleManagement:Setting:Regional.MeasurementUnits",
|
|
2717
|
+
TemperatureUnits = "LocaleManagement:Setting:Regional.TemperatureUnits",
|
|
2718
|
+
DistanceUnits = "LocaleManagement:Setting:Regional.DistanceUnits",
|
|
2719
|
+
WeightUnits = "LocaleManagement:Setting:Regional.WeightUnits",
|
|
2720
|
+
VolumeUnits = "LocaleManagement:Setting:Regional.VolumeUnits",
|
|
2721
|
+
SpeedUnits = "LocaleManagement:Setting:Regional.SpeedUnits",
|
|
2722
|
+
AreaUnits = "LocaleManagement:Setting:Regional.AreaUnits",
|
|
2723
|
+
/** Default multi-language behavior for standard text field names; defined in locale-management `AXMRegionalSettingProvider`. */
|
|
2724
|
+
MultiLanguageSupport = "LocaleManagement:Setting:Regional.MultiLanguageSupport"
|
|
2725
|
+
}
|
|
2726
|
+
|
|
2727
|
+
interface AXPUnsavedChangesConfirmOptions {
|
|
2728
|
+
/** When false, skips confirm even if the global setting is enabled (e.g. dialog `confirmCloseWhenDirty`). */
|
|
2729
|
+
enabled?: boolean;
|
|
2730
|
+
title?: AXPMultiLanguageString;
|
|
2731
|
+
message?: AXPMultiLanguageString;
|
|
2732
|
+
/**
|
|
2733
|
+
* When true (default), confirming sets leave approval for the next route deactivation.
|
|
2734
|
+
* Set false for in-place actions such as discarding edits without navigating away.
|
|
2735
|
+
*/
|
|
2736
|
+
approveLeaveOnConfirm?: boolean;
|
|
2737
|
+
}
|
|
2738
|
+
interface AXPUnsavedChangesCanDeactivate {
|
|
2739
|
+
canDeactivate(): boolean | Promise<boolean>;
|
|
2740
|
+
}
|
|
2741
|
+
declare class AXPUnsavedChangesConfirmService {
|
|
2742
|
+
private readonly settingsService;
|
|
2743
|
+
private readonly dialogService;
|
|
2744
|
+
private readonly translateService;
|
|
2745
|
+
/** Ensures concurrent leave paths share a single unsaved-changes confirm dialog. */
|
|
2746
|
+
private confirmPromise?;
|
|
2747
|
+
/** Set after the user confirms leaving; cleared on {@link NavigationEnd} by popstate handler. */
|
|
2748
|
+
private leaveConfirmed;
|
|
2749
|
+
/**
|
|
2750
|
+
* Whether the global "confirm unsaved changes" setting is enabled.
|
|
2751
|
+
*/
|
|
2752
|
+
isGloballyEnabled(): Promise<boolean>;
|
|
2753
|
+
/**
|
|
2754
|
+
* Marks the next route deactivation as already approved (avoids a second prompt after in-app navigation).
|
|
2755
|
+
*/
|
|
2756
|
+
markLeaveConfirmed(): void;
|
|
2757
|
+
/** True while an unsaved-changes confirm dialog is open or being resolved. */
|
|
2758
|
+
isConfirmPending(): boolean;
|
|
2759
|
+
/** Whether the user already approved leaving during the current navigation. */
|
|
2760
|
+
hasLeaveConfirmed(): boolean;
|
|
2761
|
+
/** Clears leave approval after navigation settles. */
|
|
2762
|
+
clearLeaveConfirmed(): void;
|
|
2763
|
+
consumeLeaveConfirmed(): boolean;
|
|
2764
|
+
/**
|
|
2765
|
+
* Prompts when `isDirty` and the global setting (and optional per-instance `enabled`) allow it.
|
|
2766
|
+
* Returns true when navigation/dismiss may proceed.
|
|
2767
|
+
*/
|
|
2768
|
+
confirmIfDirty(isDirty: boolean, options?: AXPUnsavedChangesConfirmOptions): Promise<boolean>;
|
|
2769
|
+
private resolveConfirmIfDirty;
|
|
2770
|
+
private prompt;
|
|
2771
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPUnsavedChangesConfirmService, never>;
|
|
2772
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPUnsavedChangesConfirmService>;
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
interface AXPUnsavedChangesPopstateSource {
|
|
2776
|
+
id: string;
|
|
2777
|
+
isDirty: () => boolean;
|
|
2778
|
+
}
|
|
2779
|
+
/**
|
|
2780
|
+
* Intercepts browser back/forward (`popstate`) when a registered page is dirty.
|
|
2781
|
+
* Captures dirty state synchronously on {@link NavigationStart}, restores the current URL
|
|
2782
|
+
* before route activation, prompts once, then re-triggers `history.back()` only if confirmed.
|
|
2783
|
+
*/
|
|
2784
|
+
declare class AXPUnsavedChangesPopstateService {
|
|
2785
|
+
private readonly router;
|
|
2786
|
+
private readonly location;
|
|
2787
|
+
private readonly confirm;
|
|
2788
|
+
private readonly destroyRef;
|
|
2789
|
+
private sources;
|
|
2790
|
+
private committedUrl;
|
|
2791
|
+
private handling;
|
|
2792
|
+
constructor();
|
|
2793
|
+
registerSource(source: AXPUnsavedChangesPopstateSource): void;
|
|
2794
|
+
unregisterSource(id: string): void;
|
|
2795
|
+
/** True while a popstate back/forward is being intercepted or confirmed. */
|
|
2796
|
+
isHandlingPopstate(): boolean;
|
|
2797
|
+
private handlePopstateNavigation;
|
|
2798
|
+
private isDirty;
|
|
2799
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPUnsavedChangesPopstateService, never>;
|
|
2800
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPUnsavedChangesPopstateService>;
|
|
2801
|
+
}
|
|
2802
|
+
|
|
2803
|
+
declare function createUnsavedChangesCanDeactivateGuard<T extends AXPUnsavedChangesCanDeactivate>(): CanDeactivateFn<T>;
|
|
2804
|
+
|
|
2805
|
+
/**
|
|
2806
|
+
* Status Definition Types
|
|
2807
|
+
* Defines the structure for status definitions and their transitions
|
|
2808
|
+
*/
|
|
2809
|
+
/**
|
|
2810
|
+
* Status definition with metadata
|
|
2811
|
+
*/
|
|
2812
|
+
interface AXPStatusDefinition {
|
|
2813
|
+
/**
|
|
2814
|
+
* Unique identifier for the status
|
|
2815
|
+
*/
|
|
2816
|
+
name: string;
|
|
2817
|
+
/**
|
|
2818
|
+
* Display title for the status
|
|
2819
|
+
*/
|
|
2820
|
+
title: string;
|
|
2821
|
+
/**
|
|
2822
|
+
* Color code or semantic color name for the status
|
|
2823
|
+
*/
|
|
2824
|
+
color: string;
|
|
2825
|
+
/**
|
|
2826
|
+
* Optional icon class (e.g., 'fa-light fa-check')
|
|
2827
|
+
*/
|
|
2828
|
+
icon?: string;
|
|
2829
|
+
/**
|
|
2830
|
+
* Optional description
|
|
2831
|
+
*/
|
|
2832
|
+
description?: string;
|
|
2833
|
+
/**
|
|
2834
|
+
* Optional order for sorting
|
|
2835
|
+
*/
|
|
2836
|
+
order?: number;
|
|
2837
|
+
/**
|
|
2838
|
+
* Whether this is a final status (end state)
|
|
2839
|
+
*/
|
|
2840
|
+
isFinal?: boolean;
|
|
2841
|
+
/**
|
|
2842
|
+
* Whether this is an initial status (starting state)
|
|
2843
|
+
*/
|
|
2844
|
+
isInitial?: boolean;
|
|
2845
|
+
/**
|
|
2846
|
+
* Whether list views should be automatically generated for this status
|
|
2847
|
+
*/
|
|
2848
|
+
generateView?: boolean;
|
|
2849
|
+
}
|
|
2850
|
+
/**
|
|
2851
|
+
* Status transition definition
|
|
2852
|
+
*/
|
|
2853
|
+
interface AXPStatusTransition {
|
|
2854
|
+
/**
|
|
2855
|
+
* Source status name
|
|
2856
|
+
*/
|
|
2857
|
+
from: string;
|
|
2858
|
+
/**
|
|
2859
|
+
* Target status name
|
|
2860
|
+
*/
|
|
2861
|
+
to: string;
|
|
2862
|
+
/**
|
|
2863
|
+
* Optional condition expression to evaluate before allowing transition
|
|
2864
|
+
* Uses expression evaluator syntax (e.g., "{{user.isAdmin}}", "{{item.priority > 5}}")
|
|
2865
|
+
*/
|
|
2866
|
+
condition?: string;
|
|
2867
|
+
/**
|
|
2868
|
+
* Optional display title for the transition
|
|
2869
|
+
*/
|
|
2870
|
+
title?: string;
|
|
2871
|
+
/**
|
|
2872
|
+
* Optional description
|
|
2873
|
+
*/
|
|
2874
|
+
description?: string;
|
|
2875
|
+
/**
|
|
2876
|
+
* Optional command descriptor to execute for this transition
|
|
2877
|
+
* If not provided, defaults to Entity:UpdateStatus with entity, id, and status
|
|
2878
|
+
*/
|
|
2879
|
+
command?: {
|
|
2880
|
+
name: string;
|
|
2881
|
+
options?: Record<string, unknown>;
|
|
2882
|
+
};
|
|
2883
|
+
/**
|
|
2884
|
+
* Whether this transition is automatic (no user action required)
|
|
2885
|
+
*/
|
|
2886
|
+
isAutomatic?: boolean;
|
|
2887
|
+
/**
|
|
2888
|
+
* Whether this transition requires approval
|
|
2889
|
+
*/
|
|
2890
|
+
requiresApproval?: boolean;
|
|
2891
|
+
}
|
|
2892
|
+
/**
|
|
2893
|
+
* Abstract class for status providers
|
|
2894
|
+
* Similar to AXPTaskBadgeProvider pattern
|
|
2895
|
+
*/
|
|
2896
|
+
declare abstract class AXPStatusProvider {
|
|
2897
|
+
/**
|
|
2898
|
+
* Unique key for the status (e.g., 'task-management.status')
|
|
2899
|
+
*/
|
|
2900
|
+
abstract readonly key: string;
|
|
2901
|
+
/**
|
|
2902
|
+
* List of available status definitions
|
|
2903
|
+
*/
|
|
2904
|
+
abstract readonly statuses: AXPStatusDefinition[];
|
|
2905
|
+
/**
|
|
2906
|
+
* List of allowed transitions between statuses
|
|
2907
|
+
*/
|
|
2908
|
+
abstract readonly transitions: AXPStatusTransition[];
|
|
2909
|
+
/**
|
|
2910
|
+
* Optional default status name
|
|
2911
|
+
*/
|
|
2912
|
+
abstract readonly defaultStatus?: string;
|
|
2913
|
+
}
|
|
2914
|
+
|
|
2915
|
+
/**
|
|
2916
|
+
* Injection token for status providers
|
|
2917
|
+
* Use with multi: true to register multiple providers
|
|
2918
|
+
*/
|
|
2919
|
+
declare const AXP_STATUS_PROVIDERS: InjectionToken<AXPStatusProvider[]>;
|
|
2920
|
+
/**
|
|
2921
|
+
* Service for managing status definitions from multiple providers
|
|
2922
|
+
* Similar to AXPTaskBadgeService pattern - no cache, direct access
|
|
2923
|
+
*
|
|
2924
|
+
* @example
|
|
2925
|
+
* ```typescript
|
|
2926
|
+
* // In a module providers array:
|
|
2927
|
+
* {
|
|
2928
|
+
* provide: AXP_STATUS_PROVIDERS,
|
|
2929
|
+
* useClass: TaskStatusProvider,
|
|
2930
|
+
* multi: true,
|
|
2931
|
+
* }
|
|
2932
|
+
*
|
|
2933
|
+
* // Example provider implementation:
|
|
2934
|
+
* export class TaskStatusProvider extends AXPStatusProvider {
|
|
2935
|
+
* readonly key = 'task-management.status';
|
|
2936
|
+
* readonly statuses = [
|
|
2937
|
+
* { name: 'todo', title: 'To Do', color: '#6b7280', icon: 'fa-light fa-circle', isInitial: true },
|
|
2938
|
+
* { name: 'in-progress', title: 'In Progress', color: '#3b82f6', icon: 'fa-light fa-play' },
|
|
2939
|
+
* { name: 'done', title: 'Done', color: '#10b981', icon: 'fa-light fa-check-circle', isFinal: true },
|
|
2940
|
+
* ];
|
|
2941
|
+
* readonly transitions = [
|
|
2942
|
+
* { from: 'todo', to: 'in-progress', title: 'Start', condition: '{{user.canEdit}}' },
|
|
2943
|
+
* { from: 'in-progress', to: 'done', title: 'Complete' },
|
|
2944
|
+
* ];
|
|
2945
|
+
* readonly defaultStatus = 'todo';
|
|
2946
|
+
* }
|
|
2947
|
+
*
|
|
2948
|
+
* // Later, get the status:
|
|
2949
|
+
* const status = await statusService.getStatus('task-management.status');
|
|
2950
|
+
* if (status) {
|
|
2951
|
+
* console.log('Statuses:', status.statuses);
|
|
2952
|
+
* console.log('Transitions:', status.transitions);
|
|
2953
|
+
* }
|
|
2954
|
+
* ```
|
|
2955
|
+
*/
|
|
2956
|
+
declare class AXPStatusDefinitionProviderService {
|
|
2957
|
+
private providers;
|
|
2958
|
+
private commandService;
|
|
2959
|
+
private statusMap;
|
|
2960
|
+
private initializationPromise;
|
|
2961
|
+
private isInitialized;
|
|
2962
|
+
/**
|
|
2963
|
+
* Initialize providers (resolve promises if needed)
|
|
2964
|
+
* Called lazily on first access
|
|
2965
|
+
*/
|
|
2966
|
+
private initialize;
|
|
2967
|
+
private _doInitialize;
|
|
2968
|
+
/**
|
|
2969
|
+
* Get a status provider by key
|
|
2970
|
+
* Ensures initialization is complete before accessing the status map.
|
|
2971
|
+
*
|
|
2972
|
+
* @param key - Status key (e.g., 'task-management.status')
|
|
2973
|
+
* @returns Promise that resolves to status provider with all statuses and transitions, or undefined if not found
|
|
2974
|
+
*
|
|
2975
|
+
* @example
|
|
2976
|
+
* ```typescript
|
|
2977
|
+
* const status = await statusService.getStatus('task-management.status');
|
|
2978
|
+
* if (status) {
|
|
2979
|
+
* console.log('Statuses:', status.statuses);
|
|
2980
|
+
* console.log('Transitions:', status.transitions);
|
|
2981
|
+
* }
|
|
2982
|
+
* ```
|
|
2983
|
+
*/
|
|
2984
|
+
getStatus(key: string): Promise<AXPStatusProvider | undefined>;
|
|
2985
|
+
/**
|
|
2986
|
+
* Execute a status transition workflow action
|
|
2987
|
+
* Uses transition.command if provided, otherwise defaults to Entity:UpdateStatus
|
|
2988
|
+
* Validates the transition is allowed before executing
|
|
2989
|
+
*
|
|
2990
|
+
* @param definitionKey - Status definition key
|
|
2991
|
+
* @param transition - The transition to execute
|
|
2992
|
+
* @param context - Context data for the command (must include entity name and id/ids)
|
|
2993
|
+
* @returns Promise that resolves when the command execution completes
|
|
2994
|
+
*
|
|
2995
|
+
* @example
|
|
2996
|
+
* ```typescript
|
|
2997
|
+
* await statusService.executeTransition(
|
|
2998
|
+
* 'task-management.status',
|
|
2999
|
+
* { from: 'todo', to: 'in-progress' },
|
|
3000
|
+
* { entity: 'TaskManagement.Task', id: '123', ...entityData }
|
|
3001
|
+
* );
|
|
3002
|
+
* ```
|
|
3003
|
+
*/
|
|
3004
|
+
executeTransition(definitionKey: string, transition: AXPStatusTransition, context: Record<string, any>): Promise<void>;
|
|
3005
|
+
/**
|
|
3006
|
+
* Validate if a transition is allowed
|
|
3007
|
+
* Checks if the transition exists in the provider's transitions list
|
|
3008
|
+
*/
|
|
3009
|
+
private isValidTransition;
|
|
3010
|
+
/**
|
|
3011
|
+
* Best-effort plain string for {@link Error} messages (no i18n lookup).
|
|
3012
|
+
*/
|
|
3013
|
+
private commandMessageTextForError;
|
|
3014
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPStatusDefinitionProviderService, never>;
|
|
3015
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPStatusDefinitionProviderService>;
|
|
3016
|
+
}
|
|
3017
|
+
|
|
3018
|
+
/**
|
|
3019
|
+
* Standard system status types
|
|
3020
|
+
* These are the predefined status values used across the platform
|
|
3021
|
+
*/
|
|
3022
|
+
declare enum AXPSystemStatusType {
|
|
3023
|
+
Todo = "todo",
|
|
3024
|
+
InProgress = "in-progress",
|
|
3025
|
+
InReview = "in-review",
|
|
3026
|
+
Open = "open",
|
|
3027
|
+
Closed = "closed",
|
|
3028
|
+
Blocked = "blocked",
|
|
3029
|
+
Done = "done",
|
|
3030
|
+
Cancelled = "cancelled",
|
|
3031
|
+
Draft = "draft",
|
|
3032
|
+
PendingReview = "pending-review",
|
|
3033
|
+
WaitingSignOff = "waiting-sign-off",
|
|
3034
|
+
WaitingApproval = "waiting-approval",
|
|
3035
|
+
Approved = "approved",
|
|
3036
|
+
Published = "published",
|
|
3037
|
+
Archived = "archived",
|
|
3038
|
+
Rejected = "rejected",
|
|
3039
|
+
Active = "active",
|
|
3040
|
+
Inactive = "inactive",
|
|
3041
|
+
Pending = "pending",
|
|
3042
|
+
Completed = "completed",
|
|
3043
|
+
Suspended = "suspended",
|
|
3044
|
+
Failed = "failed",
|
|
3045
|
+
Review = "review",
|
|
3046
|
+
Expired = "expired"
|
|
3047
|
+
}
|
|
3048
|
+
/**
|
|
3049
|
+
* Standard system status definitions
|
|
3050
|
+
* Provides consistent status definitions across the platform
|
|
3051
|
+
* Uses AXPStatusDefinition interface from status-definition.types.ts
|
|
3052
|
+
*/
|
|
3053
|
+
declare const AXPSystemStatuses: Readonly<{
|
|
3054
|
+
readonly Open: {
|
|
3055
|
+
readonly name: AXPSystemStatusType.Open;
|
|
3056
|
+
readonly title: string;
|
|
3057
|
+
readonly icon: "fa-light fa-circle";
|
|
3058
|
+
readonly color: "secondary";
|
|
3059
|
+
readonly description: string;
|
|
3060
|
+
readonly order: 1;
|
|
3061
|
+
readonly isInitial: true;
|
|
3062
|
+
readonly isFinal: false;
|
|
3063
|
+
};
|
|
3064
|
+
readonly Closed: {
|
|
3065
|
+
readonly name: AXPSystemStatusType.Closed;
|
|
3066
|
+
readonly title: string;
|
|
3067
|
+
readonly icon: "fa-light fa-circle";
|
|
3068
|
+
readonly color: "danger";
|
|
3069
|
+
readonly description: string;
|
|
3070
|
+
readonly order: 2;
|
|
3071
|
+
readonly isInitial: false;
|
|
3072
|
+
readonly isFinal: true;
|
|
3073
|
+
};
|
|
3074
|
+
readonly Todo: {
|
|
3075
|
+
readonly name: AXPSystemStatusType.Todo;
|
|
3076
|
+
readonly title: string;
|
|
3077
|
+
readonly icon: "fa-light fa-circle";
|
|
3078
|
+
readonly color: "secondary";
|
|
3079
|
+
readonly description: string;
|
|
3080
|
+
readonly order: 1;
|
|
3081
|
+
readonly isInitial: true;
|
|
3082
|
+
readonly isFinal: false;
|
|
3083
|
+
};
|
|
3084
|
+
readonly InProgress: {
|
|
3085
|
+
readonly name: AXPSystemStatusType.InProgress;
|
|
3086
|
+
readonly title: string;
|
|
3087
|
+
readonly icon: "fa-light fa-play";
|
|
3088
|
+
readonly color: "info";
|
|
3089
|
+
readonly description: string;
|
|
3090
|
+
readonly order: 2;
|
|
3091
|
+
readonly isInitial: false;
|
|
3092
|
+
readonly isFinal: false;
|
|
3093
|
+
};
|
|
3094
|
+
readonly InReview: {
|
|
3095
|
+
readonly name: AXPSystemStatusType.InReview;
|
|
3096
|
+
readonly title: string;
|
|
3097
|
+
readonly icon: "fa-light fa-eye";
|
|
3098
|
+
readonly color: "info";
|
|
3099
|
+
readonly description: string;
|
|
3100
|
+
readonly order: 3;
|
|
3101
|
+
readonly isInitial: false;
|
|
3102
|
+
readonly isFinal: false;
|
|
3103
|
+
};
|
|
3104
|
+
readonly Blocked: {
|
|
3105
|
+
readonly name: AXPSystemStatusType.Blocked;
|
|
3106
|
+
readonly title: string;
|
|
3107
|
+
readonly icon: "fa-light fa-ban";
|
|
3108
|
+
readonly color: "danger";
|
|
3109
|
+
readonly description: string;
|
|
3110
|
+
readonly order: 4;
|
|
3111
|
+
readonly isInitial: false;
|
|
3112
|
+
readonly isFinal: false;
|
|
3113
|
+
};
|
|
3114
|
+
readonly Done: {
|
|
3115
|
+
readonly name: AXPSystemStatusType.Done;
|
|
3116
|
+
readonly title: string;
|
|
3117
|
+
readonly icon: "fa-light fa-check-circle";
|
|
3118
|
+
readonly color: "success";
|
|
3119
|
+
readonly description: string;
|
|
3120
|
+
readonly order: 5;
|
|
3121
|
+
readonly isInitial: false;
|
|
3122
|
+
readonly isFinal: true;
|
|
3123
|
+
};
|
|
3124
|
+
readonly Cancelled: {
|
|
3125
|
+
readonly name: AXPSystemStatusType.Cancelled;
|
|
3126
|
+
readonly title: string;
|
|
3127
|
+
readonly icon: "fa-light fa-times-circle";
|
|
3128
|
+
readonly color: "neutral";
|
|
3129
|
+
readonly description: string;
|
|
3130
|
+
readonly order: 6;
|
|
3131
|
+
readonly isInitial: false;
|
|
3132
|
+
readonly isFinal: true;
|
|
3133
|
+
};
|
|
3134
|
+
readonly Draft: {
|
|
3135
|
+
readonly name: AXPSystemStatusType.Draft;
|
|
3136
|
+
readonly title: string;
|
|
3137
|
+
readonly icon: "fa-light fa-file-pen";
|
|
3138
|
+
readonly color: "neutral";
|
|
3139
|
+
readonly description: string;
|
|
3140
|
+
readonly order: 1;
|
|
3141
|
+
readonly isInitial: true;
|
|
3142
|
+
readonly isFinal: false;
|
|
3143
|
+
};
|
|
3144
|
+
readonly PendingReview: {
|
|
3145
|
+
readonly name: AXPSystemStatusType.PendingReview;
|
|
3146
|
+
readonly title: string;
|
|
3147
|
+
readonly icon: "fa-light fa-clock";
|
|
3148
|
+
readonly color: "warning";
|
|
3149
|
+
readonly description: string;
|
|
3150
|
+
readonly order: 2;
|
|
3151
|
+
readonly isInitial: false;
|
|
3152
|
+
readonly isFinal: false;
|
|
3153
|
+
};
|
|
3154
|
+
readonly WaitingSignOff: {
|
|
3155
|
+
readonly name: AXPSystemStatusType.WaitingSignOff;
|
|
3156
|
+
readonly title: string;
|
|
3157
|
+
readonly icon: "fa-light fa-clock";
|
|
3158
|
+
readonly color: "warning";
|
|
3159
|
+
readonly description: string;
|
|
3160
|
+
readonly order: 3;
|
|
3161
|
+
readonly isInitial: false;
|
|
3162
|
+
readonly isFinal: false;
|
|
3163
|
+
};
|
|
3164
|
+
readonly WaitingApproval: {
|
|
3165
|
+
readonly name: AXPSystemStatusType.WaitingApproval;
|
|
3166
|
+
readonly title: string;
|
|
3167
|
+
readonly icon: "fa-light fa-clock";
|
|
3168
|
+
readonly color: "warning";
|
|
3169
|
+
readonly description: string;
|
|
3170
|
+
readonly order: 1;
|
|
3171
|
+
readonly isInitial: true;
|
|
3172
|
+
readonly isFinal: false;
|
|
3173
|
+
};
|
|
3174
|
+
readonly Approved: {
|
|
3175
|
+
readonly name: AXPSystemStatusType.Approved;
|
|
3176
|
+
readonly title: string;
|
|
3177
|
+
readonly icon: "fa-light fa-check-circle";
|
|
3178
|
+
readonly color: "success";
|
|
3179
|
+
readonly description: string;
|
|
3180
|
+
readonly order: 3;
|
|
3181
|
+
readonly isInitial: false;
|
|
3182
|
+
readonly isFinal: false;
|
|
3183
|
+
};
|
|
3184
|
+
readonly Published: {
|
|
3185
|
+
readonly name: AXPSystemStatusType.Published;
|
|
3186
|
+
readonly title: string;
|
|
3187
|
+
readonly icon: "fa-light fa-globe";
|
|
3188
|
+
readonly color: "primary";
|
|
3189
|
+
readonly description: string;
|
|
3190
|
+
readonly order: 4;
|
|
3191
|
+
readonly isInitial: false;
|
|
3192
|
+
readonly isFinal: false;
|
|
3193
|
+
};
|
|
3194
|
+
readonly Archived: {
|
|
3195
|
+
readonly name: AXPSystemStatusType.Archived;
|
|
3196
|
+
readonly title: string;
|
|
3197
|
+
readonly icon: "fa-light fa-archive";
|
|
3198
|
+
readonly color: "danger";
|
|
3199
|
+
readonly description: string;
|
|
3200
|
+
readonly order: 5;
|
|
3201
|
+
readonly isInitial: false;
|
|
3202
|
+
readonly isFinal: true;
|
|
3203
|
+
};
|
|
3204
|
+
readonly Rejected: {
|
|
3205
|
+
readonly name: AXPSystemStatusType.Rejected;
|
|
3206
|
+
readonly title: string;
|
|
3207
|
+
readonly icon: "fa-light fa-times-circle";
|
|
3208
|
+
readonly color: "danger";
|
|
3209
|
+
readonly description: string;
|
|
3210
|
+
readonly order: 6;
|
|
3211
|
+
readonly isInitial: false;
|
|
3212
|
+
readonly isFinal: true;
|
|
3213
|
+
};
|
|
3214
|
+
readonly Active: {
|
|
3215
|
+
readonly name: AXPSystemStatusType.Active;
|
|
3216
|
+
readonly title: string;
|
|
3217
|
+
readonly icon: "fa-light fa-check-circle";
|
|
3218
|
+
readonly color: "success";
|
|
3219
|
+
readonly description: string;
|
|
3220
|
+
readonly order: 1;
|
|
3221
|
+
readonly isInitial: false;
|
|
3222
|
+
readonly isFinal: false;
|
|
3223
|
+
};
|
|
3224
|
+
readonly Inactive: {
|
|
3225
|
+
readonly name: AXPSystemStatusType.Inactive;
|
|
3226
|
+
readonly title: string;
|
|
3227
|
+
readonly icon: "fa-light fa-circle";
|
|
3228
|
+
readonly color: "secondary";
|
|
3229
|
+
readonly description: string;
|
|
3230
|
+
readonly order: 2;
|
|
3231
|
+
readonly isInitial: false;
|
|
3232
|
+
readonly isFinal: false;
|
|
3233
|
+
};
|
|
3234
|
+
readonly Pending: {
|
|
3235
|
+
readonly name: AXPSystemStatusType.Pending;
|
|
3236
|
+
readonly title: string;
|
|
3237
|
+
readonly icon: "fa-light fa-clock";
|
|
3238
|
+
readonly color: "warning";
|
|
3239
|
+
readonly description: string;
|
|
3240
|
+
readonly order: 1;
|
|
3241
|
+
readonly isInitial: true;
|
|
3242
|
+
readonly isFinal: false;
|
|
3243
|
+
};
|
|
3244
|
+
readonly Completed: {
|
|
3245
|
+
readonly name: AXPSystemStatusType.Completed;
|
|
3246
|
+
readonly title: string;
|
|
3247
|
+
readonly icon: "fa-light fa-check-circle";
|
|
3248
|
+
readonly color: "success";
|
|
3249
|
+
readonly description: string;
|
|
3250
|
+
readonly order: 10;
|
|
3251
|
+
readonly isInitial: false;
|
|
3252
|
+
readonly isFinal: true;
|
|
3253
|
+
};
|
|
3254
|
+
readonly Suspended: {
|
|
3255
|
+
readonly name: AXPSystemStatusType.Suspended;
|
|
3256
|
+
readonly title: string;
|
|
3257
|
+
readonly icon: "fa-light fa-pause-circle";
|
|
3258
|
+
readonly color: "neutral";
|
|
3259
|
+
readonly description: string;
|
|
3260
|
+
readonly order: 5;
|
|
3261
|
+
readonly isInitial: false;
|
|
3262
|
+
readonly isFinal: false;
|
|
3263
|
+
};
|
|
3264
|
+
readonly Failed: {
|
|
3265
|
+
readonly name: AXPSystemStatusType.Failed;
|
|
3266
|
+
readonly title: string;
|
|
3267
|
+
readonly icon: "fa-light fa-xmark-circle";
|
|
3268
|
+
readonly color: "danger";
|
|
3269
|
+
readonly description: string;
|
|
3270
|
+
readonly order: 10;
|
|
3271
|
+
readonly isInitial: false;
|
|
3272
|
+
readonly isFinal: true;
|
|
3273
|
+
};
|
|
3274
|
+
readonly Review: {
|
|
3275
|
+
readonly name: AXPSystemStatusType.Review;
|
|
3276
|
+
readonly title: string;
|
|
3277
|
+
readonly icon: "fa-light fa-eye";
|
|
3278
|
+
readonly color: "info";
|
|
3279
|
+
readonly description: string;
|
|
3280
|
+
readonly order: 3;
|
|
3281
|
+
};
|
|
3282
|
+
readonly Expired: {
|
|
3283
|
+
readonly name: AXPSystemStatusType.Expired;
|
|
3284
|
+
readonly title: string;
|
|
3285
|
+
readonly icon: "fa-light fa-clock";
|
|
3286
|
+
readonly color: "danger";
|
|
3287
|
+
readonly description: string;
|
|
3288
|
+
readonly order: 10;
|
|
3289
|
+
readonly isInitial: false;
|
|
3290
|
+
readonly isFinal: true;
|
|
3291
|
+
};
|
|
3292
|
+
}>;
|
|
3293
|
+
/**
|
|
3294
|
+
* Get system status definition by type
|
|
3295
|
+
* @param type - Status type
|
|
3296
|
+
* @returns System status definition or undefined
|
|
3297
|
+
*/
|
|
3298
|
+
declare function getSystemStatus(type: AXPSystemStatusType): AXPStatusDefinition;
|
|
3299
|
+
/**
|
|
3300
|
+
* Resolves the visual appearance (color and icon) for status
|
|
3301
|
+
* using the system statuses from the core module.
|
|
3302
|
+
* @param statusType - Status type string
|
|
3303
|
+
* @returns Color and icon for the status
|
|
3304
|
+
*/
|
|
3305
|
+
declare function resolveStatusLook(statusType: string): {
|
|
3306
|
+
color: AXStyleColorType;
|
|
3307
|
+
icon: string;
|
|
3308
|
+
};
|
|
3309
|
+
/**
|
|
3310
|
+
* Resolves the complete status information (title, description, icon, color) for a status
|
|
3311
|
+
* using the system statuses from the core module.
|
|
3312
|
+
* @param statusType - Status type string
|
|
3313
|
+
* @returns Complete status information as AXPStatusDefinition
|
|
3314
|
+
*/
|
|
3315
|
+
declare function getStatusInfo(statusType: string): AXPStatusDefinition;
|
|
3316
|
+
/**
|
|
3317
|
+
* Get system status definition directly (no conversion needed since it's already AXPStatusDefinition)
|
|
3318
|
+
* @param statusType - Status type
|
|
3319
|
+
* @param overrides - Optional overrides for the status definition
|
|
3320
|
+
* @returns AXPStatusDefinition
|
|
3321
|
+
*/
|
|
3322
|
+
declare function systemStatusToDefinition(statusType: AXPSystemStatusType, overrides?: Partial<AXPStatusDefinition>): AXPStatusDefinition;
|
|
3323
|
+
|
|
3324
|
+
interface AXPTokenDefinition {
|
|
3325
|
+
name: string;
|
|
3326
|
+
execute: () => Promise<any> | any;
|
|
3327
|
+
}
|
|
3328
|
+
|
|
3329
|
+
type AXPTokenDefinitionProviderToken = AXPTokenDefinitionProvider | Promise<AXPTokenDefinitionProvider>;
|
|
3330
|
+
declare const AXP_TOKEN_DEFINITION_PROVIDER: InjectionToken<AXPTokenDefinitionProviderToken[]>;
|
|
3331
|
+
interface AXPTokenDefinitionProvider<T = any> {
|
|
3332
|
+
name: string;
|
|
3333
|
+
title: string;
|
|
3334
|
+
description?: string;
|
|
3335
|
+
execute(): Promise<T> | T;
|
|
3336
|
+
}
|
|
3337
|
+
|
|
3338
|
+
declare class AXPTokenDefinitionService {
|
|
3339
|
+
private readonly definitionProviders;
|
|
3340
|
+
/** Cache for definitions by name. */
|
|
3341
|
+
private definitionsByName;
|
|
3342
|
+
/**
|
|
3343
|
+
* Returns a token definition by its name.
|
|
3344
|
+
* First checks the cache, then queries all providers if not found.
|
|
3345
|
+
* @param name The token name.
|
|
3346
|
+
* @returns The token definition if found, undefined otherwise.
|
|
3347
|
+
*/
|
|
3348
|
+
getDefinition(name: string): Promise<AXPTokenDefinition | undefined>;
|
|
3349
|
+
/**
|
|
3350
|
+
* Gets the resolved value of a token by its name.
|
|
3351
|
+
* @param name The token name.
|
|
3352
|
+
* @returns The resolved token value, or undefined if the token is not found.
|
|
3353
|
+
*/
|
|
3354
|
+
getValue(name: string): Promise<any>;
|
|
3355
|
+
/** Clears the definitions by name cache. */
|
|
3356
|
+
clearDefinitionsCache(): void;
|
|
3357
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPTokenDefinitionService, never>;
|
|
3358
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPTokenDefinitionService>;
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
declare class AXPTokenEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
|
|
3362
|
+
protected tokenService: AXPTokenDefinitionService;
|
|
3363
|
+
provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
interface AXPAppPathParts {
|
|
3367
|
+
segments: string[];
|
|
3368
|
+
queryParams?: Record<string, string>;
|
|
3369
|
+
fragment?: string;
|
|
3370
|
+
}
|
|
3371
|
+
/**
|
|
3372
|
+
* Splits an absolute app path (`/app/m/module/e/Entity/id/view`) into router command segments.
|
|
3373
|
+
* Prefer this over `navigate([fullPath])` or ambiguous single-segment navigation so browser history stays correct.
|
|
3374
|
+
*/
|
|
3375
|
+
declare function axpParseAppPath(path: string): AXPAppPathParts;
|
|
3376
|
+
/** Navigates using explicit path segments (same pattern as entity preload filters). */
|
|
3377
|
+
declare function axpNavigateAppPath(router: Router, path: string, extras?: NavigationExtras): Promise<boolean>;
|
|
3378
|
+
/** True when a URL path is an entity master list route (`.../e/{Entity}/list`). */
|
|
3379
|
+
declare function axpIsEntityListPath(url: string): boolean;
|
|
3380
|
+
/** True when the current browser URL is an entity master list route (`.../e/{Entity}/list`). */
|
|
3381
|
+
declare function axpIsEntityListRoute(router: Router): boolean;
|
|
3382
|
+
/** True when a URL path is an entity details view route (`.../e/{Entity}/{id}/view`). */
|
|
3383
|
+
declare function axpIsEntityDetailsPath(url: string): boolean;
|
|
3384
|
+
/** True when the current browser URL is an entity details view route (`.../e/{Entity}/{id}/view`). */
|
|
3385
|
+
declare function axpIsEntityDetailsViewRoute(router: Router): boolean;
|
|
3386
|
+
/**
|
|
3387
|
+
* Merges query params on the current entity list route without pushing history.
|
|
3388
|
+
* Uses absolute path segments so a stale `relativeTo` cannot rewrite the active URL after navigating away.
|
|
3389
|
+
*/
|
|
3390
|
+
declare function axpReplaceEntityListRouteQueryParams(router: Router, queryParams: Record<string, string | null | undefined>): void;
|
|
3391
|
+
|
|
3392
|
+
declare class AXPClipBoardService {
|
|
3393
|
+
private readonly toast;
|
|
3394
|
+
private readonly translationService;
|
|
3395
|
+
copy(title: string, value: string): Promise<void>;
|
|
3396
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPClipBoardService, never>;
|
|
3397
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPClipBoardService>;
|
|
3398
|
+
}
|
|
3399
|
+
|
|
3400
|
+
/**
|
|
3401
|
+
* Service for debugging user access information.
|
|
3402
|
+
* Displays loaded modules, features, and permissions for the current user.
|
|
3403
|
+
*/
|
|
3404
|
+
declare class AXPDebugService {
|
|
3405
|
+
private readonly sessionService;
|
|
3406
|
+
private readonly manifestRegistry;
|
|
3407
|
+
/**
|
|
3408
|
+
* Display all loaded modules, features, and permissions for the current user.
|
|
3409
|
+
*/
|
|
3410
|
+
displayUserAccessInfo(): Promise<void>;
|
|
3411
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPDebugService, never>;
|
|
3412
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPDebugService>;
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
type AXPGraphicDownloadFormat = 'svg' | 'png' | 'jpeg';
|
|
3416
|
+
interface AXPGraphicPrintContent {
|
|
3417
|
+
bodyMarkup: string;
|
|
3418
|
+
styleRule: string;
|
|
3419
|
+
}
|
|
3420
|
+
interface AXPPrintGraphicOptions {
|
|
3421
|
+
/** Used when the rendered element has no measurable size. */
|
|
3422
|
+
fallbackSize?: number;
|
|
3423
|
+
title?: string;
|
|
3424
|
+
imageAlt?: string;
|
|
3425
|
+
}
|
|
3426
|
+
interface AXPGraphicDownloadOptions {
|
|
3427
|
+
format: AXPGraphicDownloadFormat;
|
|
3428
|
+
filename: string;
|
|
3429
|
+
/** Used when rasterizing SVG or sizing canvas output. */
|
|
3430
|
+
fallbackSize?: number;
|
|
3431
|
+
}
|
|
3432
|
+
/**
|
|
3433
|
+
* Normalizes widget option values to a positive finite number
|
|
3434
|
+
* (plain number, numeric string, or editor object with `value` / `id`).
|
|
3435
|
+
*/
|
|
3436
|
+
declare function normalizePositiveNumberOption(value: unknown, fallback: number): number;
|
|
3437
|
+
/**
|
|
3438
|
+
* Resolves the rendered graphic size from a container (canvas or SVG).
|
|
3439
|
+
*/
|
|
3440
|
+
declare function resolveGraphicElementSize(container: HTMLElement, fallback: number): number;
|
|
3441
|
+
/**
|
|
3442
|
+
* Serializes an SVG element to a string, optionally prefixing the XML declaration.
|
|
3443
|
+
*/
|
|
3444
|
+
declare function serializeSvgElement(svg: SVGSVGElement, includeXmlDeclaration?: boolean): string;
|
|
3445
|
+
/**
|
|
3446
|
+
* Builds printable HTML body markup and CSS for an SVG or canvas inside a container.
|
|
3447
|
+
*/
|
|
3448
|
+
declare function resolveGraphicPrintContent(container: HTMLElement, size: number, imageAlt?: string): AXPGraphicPrintContent | undefined;
|
|
3449
|
+
/**
|
|
3450
|
+
* Triggers a file download for the given blob via a temporary anchor element.
|
|
3451
|
+
*/
|
|
3452
|
+
declare function triggerBrowserDownload(blob: Blob, filename: string): void;
|
|
3453
|
+
/**
|
|
3454
|
+
* Opens the system print dialog for an SVG or canvas graphic inside the given container.
|
|
3455
|
+
*/
|
|
3456
|
+
declare function printGraphicFromElement(container: HTMLElement, options?: AXPPrintGraphicOptions): void;
|
|
3457
|
+
/**
|
|
3458
|
+
* Downloads an SVG or canvas graphic from a container as SVG, PNG, or JPEG.
|
|
3459
|
+
*/
|
|
3460
|
+
declare function downloadGraphicFromElement(container: HTMLElement, options: AXPGraphicDownloadOptions): void;
|
|
3461
|
+
|
|
3462
|
+
declare class AXPExportService {
|
|
3463
|
+
popupService: AXPopupService;
|
|
3464
|
+
generateBlobFromElement(element: HTMLElement, blobOptions?: AXPDomToImageOptions): Promise<Blob>;
|
|
3465
|
+
download(blob: Blob, filename: string): void;
|
|
3466
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPExportService, never>;
|
|
3467
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPExportService>;
|
|
3468
|
+
}
|
|
3469
|
+
interface AXPDomToImageOptions {
|
|
3470
|
+
popup?: true;
|
|
3471
|
+
filter?: (node: Node) => boolean;
|
|
3472
|
+
bgcolor?: string;
|
|
3473
|
+
width?: number;
|
|
3474
|
+
height?: number;
|
|
3475
|
+
style?: {};
|
|
3476
|
+
quality?: number;
|
|
3477
|
+
imagePlaceholder?: string;
|
|
3478
|
+
cacheBust?: boolean;
|
|
3479
|
+
scale?: number;
|
|
3480
|
+
}
|
|
3481
|
+
|
|
3482
|
+
declare function AXPCleanNestedFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
|
|
3483
|
+
|
|
3484
|
+
interface AXPLocaleProfile extends AXLocaleProfile {
|
|
3485
|
+
code: string;
|
|
3486
|
+
title: string;
|
|
3487
|
+
nativeTitle: string;
|
|
3488
|
+
}
|
|
3489
|
+
interface AXPLanguage {
|
|
3490
|
+
code: string;
|
|
3491
|
+
title: string;
|
|
3492
|
+
}
|
|
3493
|
+
interface AXPGeoLocation {
|
|
3494
|
+
id: string;
|
|
3495
|
+
code: string;
|
|
3496
|
+
title: string;
|
|
3497
|
+
timezone?: string;
|
|
3498
|
+
}
|
|
3499
|
+
interface AXPTimeZone {
|
|
3500
|
+
code: string;
|
|
3501
|
+
title: string;
|
|
3502
|
+
offset: number;
|
|
3503
|
+
iana: string;
|
|
3504
|
+
abbr: string;
|
|
3505
|
+
}
|
|
3506
|
+
interface AXPCurrency {
|
|
3507
|
+
code: string;
|
|
3508
|
+
title: string;
|
|
3509
|
+
symbol: string;
|
|
3510
|
+
format: string;
|
|
3511
|
+
}
|
|
3512
|
+
|
|
3513
|
+
/**
|
|
3514
|
+
* Narrow API for reading app locale profiles and active languages.
|
|
3515
|
+
* Implemented by locale-management; consumed by platform layout without importing the module (avoids circular deps).
|
|
3516
|
+
*/
|
|
3517
|
+
interface AXPLocaleManagementPort {
|
|
3518
|
+
getLocaleProfiles(): Promise<AXPLocaleProfile[]>;
|
|
3519
|
+
getLanguages(): Promise<AXPLanguage[]>;
|
|
3520
|
+
}
|
|
3521
|
+
declare const AXP_LOCALE_MANAGEMENT_PORT: InjectionToken<AXPLocaleManagementPort>;
|
|
3522
|
+
|
|
3523
|
+
interface AXPVersionStream {
|
|
3524
|
+
id: string;
|
|
3525
|
+
entityType: string;
|
|
3526
|
+
entityId: string;
|
|
3527
|
+
createdAt: string;
|
|
3528
|
+
}
|
|
3529
|
+
declare enum AXVChangeType {
|
|
3530
|
+
Create = "Create",
|
|
3531
|
+
Update = "Update",
|
|
3532
|
+
Delete = "Delete"
|
|
3533
|
+
}
|
|
3534
|
+
type CanonicalChangeOp = 'add' | 'remove' | 'replace' | 'rename' | 'metadata';
|
|
3535
|
+
interface CanonicalChange {
|
|
3536
|
+
path: string;
|
|
3537
|
+
op: CanonicalChangeOp;
|
|
3538
|
+
oldValue?: unknown;
|
|
3539
|
+
newValue?: unknown;
|
|
3540
|
+
meta?: Record<string, unknown>;
|
|
3541
|
+
}
|
|
3542
|
+
interface AXPVersionEntry {
|
|
3543
|
+
id: string;
|
|
3544
|
+
streamId: string;
|
|
3545
|
+
versionNumber: number;
|
|
3546
|
+
changeType: AXVChangeType;
|
|
3547
|
+
changedBy: string;
|
|
3548
|
+
changedAt: string;
|
|
3549
|
+
snapshotJson: unknown;
|
|
3550
|
+
patchFromPrevJson: CanonicalChange[];
|
|
3551
|
+
summary?: string;
|
|
3552
|
+
metadataJson?: unknown;
|
|
3553
|
+
}
|
|
3554
|
+
interface AXPVersionChange {
|
|
3555
|
+
id?: number;
|
|
3556
|
+
versionEntryId: string;
|
|
3557
|
+
path: string;
|
|
3558
|
+
op: CanonicalChangeOp;
|
|
3559
|
+
oldValue?: unknown;
|
|
3560
|
+
newValue?: unknown;
|
|
3561
|
+
}
|
|
3562
|
+
interface VersionedFileInfo {
|
|
3563
|
+
id: string;
|
|
3564
|
+
name: string;
|
|
3565
|
+
size: number;
|
|
3566
|
+
mime: string;
|
|
3567
|
+
hash: string;
|
|
3568
|
+
url?: string;
|
|
3569
|
+
thumbUrl?: string;
|
|
3570
|
+
}
|
|
3571
|
+
declare abstract class AXPVersioningService {
|
|
3572
|
+
abstract getStreamIdIfExists(entityType: string, entityId: string): Promise<string | null>;
|
|
3573
|
+
abstract listEntries(streamId: string, options?: {
|
|
3574
|
+
limit?: number;
|
|
3575
|
+
offset?: number;
|
|
3576
|
+
}): Promise<AXPVersionEntry[]>;
|
|
3577
|
+
abstract getUiFriendlyDiff(streamId: string, v1: number, v2: number): Promise<Array<{
|
|
3578
|
+
badge: string;
|
|
3579
|
+
path: string;
|
|
3580
|
+
summary: string;
|
|
3581
|
+
oldValue?: unknown;
|
|
3582
|
+
newValue?: unknown;
|
|
3583
|
+
}>>;
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3586
|
+
declare const AXPRedirectEvent: {
|
|
3587
|
+
(payload: {
|
|
3588
|
+
url: string;
|
|
3589
|
+
}): {
|
|
3590
|
+
type: string;
|
|
3591
|
+
payload: {
|
|
3592
|
+
url: string;
|
|
3593
|
+
};
|
|
3594
|
+
};
|
|
3595
|
+
type: string;
|
|
3596
|
+
};
|
|
3597
|
+
declare const AXPRefreshEvent: {
|
|
3598
|
+
(payload: {
|
|
3599
|
+
entity: string;
|
|
3600
|
+
meta?: any;
|
|
3601
|
+
}): {
|
|
3602
|
+
type: string;
|
|
3603
|
+
payload: {
|
|
3604
|
+
entity: string;
|
|
3605
|
+
meta?: any;
|
|
3606
|
+
};
|
|
3607
|
+
};
|
|
3608
|
+
type: string;
|
|
3609
|
+
};
|
|
3610
|
+
declare const AXPReloadEvent: {
|
|
3611
|
+
(payload: {
|
|
3612
|
+
entity: string;
|
|
3613
|
+
meta?: any;
|
|
3614
|
+
}): {
|
|
3615
|
+
type: string;
|
|
3616
|
+
payload: {
|
|
3617
|
+
entity: string;
|
|
3618
|
+
meta?: any;
|
|
3619
|
+
};
|
|
3620
|
+
};
|
|
3621
|
+
type: string;
|
|
3622
|
+
};
|
|
3623
|
+
declare class AXPWorkflowNavigateAction extends AXPWorkflowAction {
|
|
3624
|
+
private router;
|
|
3625
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3626
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPWorkflowNavigateAction, never>;
|
|
3627
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPWorkflowNavigateAction>;
|
|
3628
|
+
}
|
|
3629
|
+
declare class AXPDialogConfirmAction extends AXPWorkflowAction {
|
|
3630
|
+
private dialogService;
|
|
3631
|
+
private translationService;
|
|
3632
|
+
title: string;
|
|
3633
|
+
message: string;
|
|
3634
|
+
type: AXStyleColorType;
|
|
3635
|
+
defaultAction: string;
|
|
3636
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3637
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPDialogConfirmAction, never>;
|
|
3638
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPDialogConfirmAction>;
|
|
3639
|
+
}
|
|
3640
|
+
declare class AXPToastAction extends AXPWorkflowAction {
|
|
3641
|
+
private toastService;
|
|
3642
|
+
private translationService;
|
|
3643
|
+
private settingsService;
|
|
3644
|
+
color: AXStyleColorType;
|
|
3645
|
+
title: string;
|
|
3646
|
+
content: string;
|
|
3647
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3648
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPToastAction, never>;
|
|
3649
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPToastAction>;
|
|
3650
|
+
}
|
|
3651
|
+
declare class AXPReloadAction extends AXPWorkflowAction {
|
|
3652
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3653
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPReloadAction, never>;
|
|
3654
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPReloadAction>;
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3657
|
+
declare class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {
|
|
3658
|
+
private router;
|
|
3659
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3660
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPWorkflowRouterNavigateAction, never>;
|
|
3661
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPWorkflowRouterNavigateAction>;
|
|
3662
|
+
}
|
|
3663
|
+
declare const AXPNavigateWorkflow: AXPWorkflow;
|
|
3664
|
+
|
|
3665
|
+
declare class AXMWorkflowErrorHandler implements AXPErrorHandler {
|
|
3666
|
+
private dialog;
|
|
3667
|
+
handleError(error: any, next: (error: any) => void): void;
|
|
3668
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMWorkflowErrorHandler, never>;
|
|
3669
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMWorkflowErrorHandler>;
|
|
3670
|
+
}
|
|
3671
|
+
|
|
3672
|
+
export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPBackgroundOperationCompletionService, AXPBackgroundOperationEntityStoreService, AXPBackgroundOperationHandler, AXPBackgroundOperationNotificationService, AXPBackgroundOperationProvider, AXPBackgroundOperationRootConfig, AXPBackgroundOperationService, AXPBackgroundOperationSlotComponent, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDebugService, AXPDefaultMultiLanguageConfigService, AXPDialogConfirmAction, AXPEntityCommandScope, AXPEntityQueryType, AXPEntityType, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileStorageEvaluatorScopeProvider, AXPFileStorageService, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPKeyboardShortcutsHelpComponent, AXPKeyboardShortcutsHelpService, AXPLockService, AXPMenuItemsDataSourceDefinition, AXPMenuKeyboardShortcutService, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuRouteAccessService, AXPMenuRouteGuard, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPNotFoundCatchAllRoute, AXPNotFoundError, AXPOutputContractTranscriptSegmentService, AXPPlatformCommonDataSourceKeys, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRegionalCalendarService, AXPRegionalSetting, AXPRelationshipCardinality, AXPRelationshipKind, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsEvaluatorScopeProvider, AXPSettingsService, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPStickyDirective, AXPSystemStatusType, AXPSystemStatuses, AXPToastAction, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPUnsavedChangesConfirmService, AXPUnsavedChangesPopstateService, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES, AXP_APP_VERSION_PROVIDER, AXP_BACKGROUND_OPERATION_ENTITY_STORAGE, AXP_BACKGROUND_OPERATION_HANDLERS, AXP_BACKGROUND_OPERATION_PROVIDERS, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_IN_APP_NOTIFICATION_SERVICE, AXP_LOCALE_MANAGEMENT_PORT, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_NOT_FOUND_CATCH_ALL_ROUTE, AXP_NOT_FOUND_ROUTE, AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_PROTECTED_ROUTE_GUARDS, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TOKEN_DEFINITION_PROVIDER, AXP_UNAUTHORIZED_ROUTE, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, DEFAULT_DATE_FILTER_PRESETS, DEFAULT_MULTILANGUAGE_FIELD_NAMES, ENDS_WITH_OPER, ENTITY_LAYOUT_SINGLE_TITLE_PATH, ENTITY_ROW_POPUP_TITLE_OPTION, ENTITY_ROW_TITLE_TEMPLATE_OPTION, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, MULTILANGUAGE_CAPABLE_WIDGET_TYPES, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, applyDateFilterPreset, axpBackgroundOperationCapabilities, axpBackgroundOperationDisplayTime, axpBackgroundOperationEntityName, axpBackgroundOperationEstimateEndDate, axpBackgroundOperationFailurePolicy, axpBackgroundOperationFromEntityModel, axpBackgroundOperationRemainingMs, axpBackgroundOperationToEntityModel, axpBuildBackgroundOperation, axpCoerceBackgroundOperationDate, axpCreateBackgroundOperationId, axpFindMenuItemByRoute, axpIsActiveBackgroundOperationStatus, axpIsCompletedBackgroundOperationStatus, axpIsEntityDetailsPath, axpIsEntityDetailsViewRoute, axpIsEntityListPath, axpIsEntityListRoute, axpIsEntityRecordNotFound, axpMenuPathsMatch, axpNavigateAppPath, axpParseAppPath, axpRedirectToNotFound, axpRedirectToUnauthorized, axpReplaceEntityListRouteQueryParams, backgroundOperationEntityFactory, buildEntitySearchTitleContext, coerceAXPSettingRawValue, coerceAXPSettingRawValueByKind, configPlatform, createAllQueryView, createBackgroundOperationStore, createEntityCommandOptions, createEntityRowExpressionScope, createEntitySearchCommand, createMenuContext, createMenuMiddleware, createQueryView, createUnsavedChangesCanDeactivateGuard, downloadGraphicFromElement, evaluateEntityDisplayTemplate, findManualPresetIdByOperation, formatEntityRowDisplayTitle, getEntityInfo, getStatusInfo, getSystemStatus, inferSettingCoercionKind, isCardFieldBadgeDisplay, isMeaningfulEntityDisplayTitle, isUnresolvedEntityDisplayTemplate, normalizeEntityDisplayTemplate, normalizePositiveNumberOption, peelSettingValueKey, printGraphicFromElement, provideDynamicHomePage, provideMenuMiddleware, resolveCardFieldBadgeColor, resolveDateFilterPresets, resolveDefaultMasterListLayout, resolveEnabledMasterListLayouts, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, resolveEntityRowDisplayTitleFromColumnContext, resolveEntityRowTitleTemplate, resolveEntitySearchTitleFallback, resolveGraphicElementSize, resolveGraphicPrintContent, resolveQueryMatchingDisplayText, resolveSearchDisplayTemplate, resolveSearchableText, resolveStatusLook, sanitizeResolvedEntityDisplayTitle, searchInRecordValues, searchInSearchableValue, serializeSvgElement, shouldApplyDefaultMultiLanguageToEntityProperty, shouldApplyDefaultMultiLanguageToWidgetNode, shouldApplyDefaultMultiLanguageToWidgetProperty, systemStatusToDefinition, triggerBrowserDownload, withDefaultMultiLanguageOnWidgetNodeTree, withDefaultMultiLanguageOnWidgetProperty };
|
|
3673
|
+
export type { AXCFileUploaderAction, AXCFileUploaderActionsPayload, AXCFileUploaderCapabilities, AXEntityPropertyWidget, AXPAgentOutputContract, AXPAgentOutputKind, AXPAgentResponseFormat, AXPAggregate, AXPAppPathParts, AXPAppVersion, AXPAppVersionProvider, AXPApplication, AXPBackgroundOperation, AXPBackgroundOperationActionKey, AXPBackgroundOperationCapabilities, AXPBackgroundOperationCreateRequest, AXPBackgroundOperationEntityModel, AXPBackgroundOperationEntityStorageAdapter, AXPBackgroundOperationError, AXPBackgroundOperationFailureMode, AXPBackgroundOperationFailurePolicy, AXPBackgroundOperationProviderStore, AXPBackgroundOperationStatus, AXPCardBadgeColor, AXPCardBadgeDisplay, AXPCardBadgeDisplayOptions, AXPCardField, AXPCardFieldDisplay, AXPCardFieldDisplayConfig, AXPCategoryEntity, AXPColumnAlign, AXPColumnContentAlign, AXPCommandActionCallback, AXPCommandActionDisplay, AXPCommandActionLook, AXPCommandActionPriority, AXPCommandActionType, AXPCommonModuleConfigs, AXPCurrency, AXPDateTimeFilterPreset, AXPDateTimeFilterPresetKind, AXPDateTimeFilterValue, AXPDomToImageOptions, AXPEntity, AXPEntityAction, AXPEntityCommand, AXPEntityDetailListView, AXPEntityDisplayField, AXPEntityMasterCreateLayoutView, AXPEntityMasterLayoutView, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityMasterListLayoutType, AXPEntityMasterListView, AXPEntityMasterSingleLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityPage, AXPEntityProperty, AXPEntityPropertyCreateView, AXPEntityPropertyGroup, AXPEntityPropertyLayoutConfig, AXPEntityPropertyUpdateView, AXPEntityPropertyView, AXPEntityQuery, AXPEntityQuickCreate, AXPEntitySearchTitleContext, AXPEntitySectionView, AXPEntityTableColumn, AXPEntityV2, AXPEntityVersionHistory, AXPErrorHandler, AXPFileActionProvider, AXPFileActionProviderToken, AXPFileExtension, AXPFileType, AXPFileTypeInfoProvider, AXPFilterOperator, AXPGeoLocation, AXPGraphicDownloadFormat, AXPGraphicDownloadOptions, AXPGraphicPrintContent, AXPGroupSearchResult, AXPHomePageDefinition, AXPInAppNotificationCreateRequest, AXPInAppNotificationPriority, AXPInAppNotificationService, AXPJsonSchemaLike, AXPLanguage, AXPLocaleManagementPort, AXPLocaleProfile, AXPLockGetInfoRequest, AXPLockInfo, AXPLockRequest, AXPLockType, AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuItemCommand, AXPMenuItemFinder, AXPMenuItemWithParent, AXPMenuMiddleware, AXPMenuMiddlewareContext, AXPMenuMiddlewareProvider, AXPMenuProvider, AXPMenuProviderContext, AXPMenuRouteMatchResult, AXPMenuType, AXPModule, AXPOutputContractTranscriptSegmentDefinition, AXPOutputContractTranscriptSegmentProvider, AXPOutputContractTranscriptSegmentProviderToken, AXPOutputTranscriptSegmentId, AXPPlatformConfigs, AXPPrintGraphicOptions, AXPQueryFilter, AXPQuerySort, AXPQueryView, AXPRelatedEntity, AXPRelationship, AXPResolveEntityRowDisplayTitleOptions, AXPRootConfigs, AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat, AXPSearchDefinitionProvider, AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchDisplayResultForSave, AXPSearchParentResult, AXPSearchProvider, AXPSearchResult, AXPSettingChangedEvent, AXPSettingCoercionKind, AXPSettingDefaultValuesProvider, AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionProvider, AXPSettingDefinitionSection, AXPSettingLayoutOptions, AXPSettingMergedDefaults, AXPSettingValue, AXPSettingValueProvider, AXPSettingsServiceInterface, AXPStatusDefinition, AXPStatusTransition, AXPTimeZone, AXPTokenDefinition, AXPTokenDefinitionProvider, AXPTokenDefinitionProviderToken, AXPUnLockRequest, AXPUnsavedChangesCanDeactivate, AXPUnsavedChangesConfirmOptions, AXPUnsavedChangesPopstateSource, AXPVersionChange, AXPVersionEntry, AXPVersionStream, CanonicalChange, CanonicalChangeOp, VersionedFileInfo };
|