@acorex/platform 21.0.0-next.39 → 21.0.0-next.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-common.mjs +6 -2
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +8 -1
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +3 -0
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +137 -34
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +25 -13
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +261 -58
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +1583 -632
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +169 -85
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs → acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs} +9 -4
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +1053 -409
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +120 -9
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs → acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +10 -10
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
- package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.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-BSmvnUVq.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs} +38 -16
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +183 -84
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +52 -11
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-common.d.ts +14 -10
- package/types/acorex-platform-core.d.ts +13 -2
- package/types/acorex-platform-domain.d.ts +28 -2
- package/types/acorex-platform-layout-builder.d.ts +61 -29
- package/types/acorex-platform-layout-designer.d.ts +88 -16
- package/types/acorex-platform-layout-entity.d.ts +190 -15
- package/types/acorex-platform-layout-widget-core.d.ts +81 -71
- package/types/acorex-platform-layout-widgets.d.ts +131 -54
- package/types/acorex-platform-runtime.d.ts +156 -61
- package/types/acorex-platform-workflow.d.ts +37 -2
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.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-CHfrTtol.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -307,13 +307,8 @@ interface AXPRelatedEntity {
|
|
|
307
307
|
entity: string;
|
|
308
308
|
title?: string;
|
|
309
309
|
icon?: string;
|
|
310
|
-
/**
|
|
311
|
-
* Either a list of property names, or full table column metadata (`AXPEntityTableColumn`).
|
|
312
|
-
* For table columns, use `options.visible` as boolean or expression string (evaluated on parent detail).
|
|
313
|
-
*/
|
|
314
310
|
columns?: string[] | AXPEntityTableColumn[];
|
|
315
311
|
properties?: string[];
|
|
316
|
-
/** Exclude these properties from the related entity (for merge-detail) */
|
|
317
312
|
excludeProperties?: string[];
|
|
318
313
|
layout?: {
|
|
319
314
|
type: 'tab-detail' | 'tab-list' | 'page-detail' | 'page-list' | 'merge-detail';
|
|
@@ -321,13 +316,21 @@ interface AXPRelatedEntity {
|
|
|
321
316
|
position?: 'before' | 'after' | 'middle';
|
|
322
317
|
};
|
|
323
318
|
conditions?: AXPQueryFilter[];
|
|
324
|
-
/**
|
|
325
|
-
* Optional toolbar filter definitions merged when the related list is built.
|
|
326
|
-
* Entries matching an existing property `field` override/extend that filter definition.
|
|
327
|
-
*/
|
|
328
319
|
customFilterDefinitions?: Partial<AXPFilterDefinition>[];
|
|
329
|
-
hidden?: boolean |
|
|
320
|
+
hidden?: boolean | AXPExpression;
|
|
330
321
|
actions?: AXPEntityAction[];
|
|
322
|
+
/**
|
|
323
|
+
* Controls inclusion on the host entity master **create** / **update** form.
|
|
324
|
+
* Defaults depend on layout:
|
|
325
|
+
* - **merge-detail**: omitted flags behave as **true** (opt-out with `false`).
|
|
326
|
+
* - **tab-list** / **page-list**: omitted flags behave as **false** (opt-in with `true`).
|
|
327
|
+
*/
|
|
328
|
+
appearOn?: {
|
|
329
|
+
/** Include on host create form (see defaults above per layout type). */
|
|
330
|
+
create?: boolean;
|
|
331
|
+
/** Include on host update form (see defaults above per layout type). */
|
|
332
|
+
update?: boolean;
|
|
333
|
+
};
|
|
331
334
|
/**
|
|
332
335
|
* Relationship-level persistence strategy for merge-detail data.
|
|
333
336
|
* Defaults:
|
|
@@ -346,6 +349,7 @@ interface AXPRelatedEntity {
|
|
|
346
349
|
cascade?: {
|
|
347
350
|
delete?: 'none' | 'orphans' | 'all';
|
|
348
351
|
};
|
|
352
|
+
foreignKeyField?: string;
|
|
349
353
|
};
|
|
350
354
|
}
|
|
351
355
|
interface AXPEntityPage {
|
|
@@ -920,6 +920,17 @@ type AXPExpression = string;
|
|
|
920
920
|
* `{ "en-US": "<p>Pick one</p>", "fa-IR": "<p>یکی را انتخاب کنید</p>" }`
|
|
921
921
|
*/
|
|
922
922
|
type AXPMultiLanguageString = AXMultiLanguageString;
|
|
923
|
+
/**
|
|
924
|
+
* Shared category descriptor for widgets, query catalog tooling, and other definition groupings.
|
|
925
|
+
*/
|
|
926
|
+
interface AXPDefinitionCategory {
|
|
927
|
+
name: string;
|
|
928
|
+
title: AXPMultiLanguageString;
|
|
929
|
+
order: number;
|
|
930
|
+
icon?: string;
|
|
931
|
+
}
|
|
932
|
+
/** Normalizes definition categories to an array for iteration and serialization. */
|
|
933
|
+
declare function normalizeDefinitionCategories(categories?: AXPDefinitionCategory | AXPDefinitionCategory[]): AXPDefinitionCategory[];
|
|
923
934
|
type AXPMetaData = Record<string, any>;
|
|
924
935
|
type AXPOptionsData<T extends Record<string, unknown> = Record<string, any>> = T;
|
|
925
936
|
interface AXPValueUnit {
|
|
@@ -2867,5 +2878,5 @@ declare function containsHtmlMarkup(value: string | null | undefined): boolean;
|
|
|
2867
2878
|
*/
|
|
2868
2879
|
declare function generateKebabCase(title: string): string;
|
|
2869
2880
|
|
|
2870
|
-
export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, MODULE_MANIFESTS_DATASOURCE_NAME, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart, sortByMultiLanguageString };
|
|
2871
|
-
export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPCategoryListItem, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPColumnWidthMatcher, AXPColumnWidthProvider, AXPCommandMessage, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceArray, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceSample, AXPDataSourceType, AXPDataSourceValue, AXPDataType, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityOp, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFilterTriggerDefinition, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPLazyDataSource, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMaybePromise, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPMultiLanguageString, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPageStatus, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPProperty, AXPPropertyGroup, AXPPropertyInterface, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers, ColumnNameMatcher, ColumnWidthValue, IColumnWithWidth, WidgetTypeMatcher };
|
|
2881
|
+
export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, MODULE_MANIFESTS_DATASOURCE_NAME, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, normalizeDefinitionCategories, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart, sortByMultiLanguageString };
|
|
2882
|
+
export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPCategoryListItem, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPColumnWidthMatcher, AXPColumnWidthProvider, AXPCommandMessage, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceArray, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceSample, AXPDataSourceType, AXPDataSourceValue, AXPDataType, AXPDefinitionCategory, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityOp, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFilterTriggerDefinition, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPLazyDataSource, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMaybePromise, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPMultiLanguageString, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPageStatus, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPProperty, AXPPropertyGroup, AXPPropertyInterface, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers, ColumnNameMatcher, ColumnWidthValue, IColumnWithWidth, WidgetTypeMatcher };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, Type, EnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { AXPExpression, AXPMetaData, AXPDataType, AXPOptionsData, AXPValidationRules } from '@acorex/platform/core';
|
|
3
|
+
import { AXPExpression, AXPMetaData, AXPDataType, AXPOptionsData, AXPDefinitionCategory, AXPValidationRules } from '@acorex/platform/core';
|
|
4
4
|
import * as i1 from '@acorex/platform/runtime';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -307,6 +307,8 @@ interface AXPCommandRegistryRecord {
|
|
|
307
307
|
* Omitted or empty means no declared surface; consumers may still apply legacy rules (e.g. AI `ai-tool` tag).
|
|
308
308
|
*/
|
|
309
309
|
capabilities?: AXPCommandCapability[];
|
|
310
|
+
/** Optional grouping from build-time command metadata (`categories` on `defineCommand`). */
|
|
311
|
+
categories?: AXPDefinitionCategory[];
|
|
310
312
|
}
|
|
311
313
|
|
|
312
314
|
/**
|
|
@@ -334,6 +336,22 @@ interface AXPQueryRegistryRecord {
|
|
|
334
336
|
* Omitted or empty means no declared surface; consumers may still apply legacy rules (e.g. AI `ai-tool` tag).
|
|
335
337
|
*/
|
|
336
338
|
capabilities?: AXPCommandCapability[];
|
|
339
|
+
/** Optional grouping from build-time query metadata (`categories` on `defineQuery`). */
|
|
340
|
+
categories?: AXPDefinitionCategory[];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Persisted layout-widget catalog row (Dexie/Firestore via AXPEntityDefinitionCrudService).
|
|
345
|
+
* `name` is the widget registry name from build-time `defineWidget` metadata; `metadataJson` holds the full payload.
|
|
346
|
+
*/
|
|
347
|
+
interface AXPWidgetCatalogRecord {
|
|
348
|
+
name: string;
|
|
349
|
+
active: boolean;
|
|
350
|
+
description?: string;
|
|
351
|
+
/** Localized / catalog title from metadata `title`. */
|
|
352
|
+
catalogTitle?: string;
|
|
353
|
+
/** Pretty-printed JSON of full widget metadata (`defineWidget` sidecar). */
|
|
354
|
+
metadataJson?: string;
|
|
337
355
|
}
|
|
338
356
|
|
|
339
357
|
/**
|
|
@@ -437,6 +455,14 @@ interface AXPEntityDefinitionCrudService {
|
|
|
437
455
|
createQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
|
|
438
456
|
updateQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
|
|
439
457
|
deleteQuery(id: string): Promise<void>;
|
|
458
|
+
listWidgets(): Promise<Array<{
|
|
459
|
+
id: string;
|
|
460
|
+
definition: AXPWidgetCatalogRecord;
|
|
461
|
+
}>>;
|
|
462
|
+
getWidget(id: string): Promise<AXPWidgetCatalogRecord | null>;
|
|
463
|
+
createWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
|
|
464
|
+
updateWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
|
|
465
|
+
deleteWidget(id: string): Promise<void>;
|
|
440
466
|
}
|
|
441
467
|
declare const AXP_ENTITY_DEFINITION_CRUD_SERVICE: InjectionToken<AXPEntityDefinitionCrudService | null>;
|
|
442
468
|
|
|
@@ -2350,4 +2376,4 @@ declare function provideDomainMiddleware(config: {
|
|
|
2350
2376
|
}): EnvironmentProviders;
|
|
2351
2377
|
|
|
2352
2378
|
export { AXPAggregateModel, AXPDomainActionSide, AXPDomainMiddlewareContext, AXPDomainModule, AXPDomainRegistry, AXPDomainService, AXPEntityCommandScope, AXPEntityFieldModel, AXPEntityModel, AXPEntityType, AXPModuleHelper, AXPModuleModel, AXPPropertyMiddlewareContext, AXPPropertyModel, AXPPropertyRegistry, AXPPropertyService, AXPRelationModel, AXPRelationshipCardinality, AXPRelationshipKind, AXP_AGGREGATE_MIDDLEWARE_SETUP, AXP_ENTITY_CRUD_SETUP, AXP_ENTITY_DEFINITION_CRUD_SERVICE, AXP_ENTITY_MIDDLEWARE_SETUP, AXP_MODULE_MIDDLEWARE_SETUP, AXP_PROPERTY_EXTENSION, AXP_PROPERTY_LOADER_SETUP, AXP_PROPERTY_MIDDLEWARE_SETUP, AXP_PROPERTY_SETUP, provideAggregateMiddleware, provideDomainLoader, provideDomainLoaders, provideDomainMiddleware, provideEntityMiddleware, provideModuleMiddleware, providePropertiesFromFactory, provideProperty, providePropertyLoaders, providePropertyMiddleware, providePropertySetups, toPropertyDefinition };
|
|
2353
|
-
export type { AXPAggregateDefinition, AXPAggregateEntityList, AXPCommandCapability, AXPCommandRegistryRecord, AXPDomainAction, AXPDomainDefinition, AXPDomainLoader, AXPDomainLoaderConfig, AXPDomainMiddleware, AXPDomainPathInfo, AXPDomainRealtedModuleEntity, AXPEntityDefinition, AXPEntityDefinitionCrudService, AXPEntityPropertyDefinition, AXPEntityPropertyFeatures, AXPInterfaceCategory, AXPInterfaceDefinition, AXPInterfaceDefinitionValue, AXPMenuDefinitionEntityListRef, AXPMenuDefinitionRecord, AXPMenuDefinitionStoredCommand, AXPModuleDefinition, AXPPermissionDefinitionRecord, AXPPermissionGroupDefinitionRecord, AXPPermissionLeafRecord, AXPPluginDefinition, AXPPluginDefinitionValue, AXPPropertyDefinition, AXPPropertyEntry, AXPPropertyFeatures, AXPPropertyLoader, AXPPropertyLoaderConfig, AXPPropertyMiddleware, AXPPropertyMiddlewareEntry, AXPPropertyRegistrationOptions, AXPQueryRegistryRecord, AXPRegisteredProperty, AXPRelationDefinition, AXPValidationRuleDefinition, AXPValidationRuleValue, AXPValidationRunAt };
|
|
2379
|
+
export type { AXPAggregateDefinition, AXPAggregateEntityList, AXPCommandCapability, AXPCommandRegistryRecord, AXPDomainAction, AXPDomainDefinition, AXPDomainLoader, AXPDomainLoaderConfig, AXPDomainMiddleware, AXPDomainPathInfo, AXPDomainRealtedModuleEntity, AXPEntityDefinition, AXPEntityDefinitionCrudService, AXPEntityPropertyDefinition, AXPEntityPropertyFeatures, AXPInterfaceCategory, AXPInterfaceDefinition, AXPInterfaceDefinitionValue, AXPMenuDefinitionEntityListRef, AXPMenuDefinitionRecord, AXPMenuDefinitionStoredCommand, AXPModuleDefinition, AXPPermissionDefinitionRecord, AXPPermissionGroupDefinitionRecord, AXPPermissionLeafRecord, AXPPluginDefinition, AXPPluginDefinitionValue, AXPPropertyDefinition, AXPPropertyEntry, AXPPropertyFeatures, AXPPropertyLoader, AXPPropertyLoaderConfig, AXPPropertyMiddleware, AXPPropertyMiddlewareEntry, AXPPropertyRegistrationOptions, AXPQueryRegistryRecord, AXPRegisteredProperty, AXPRelationDefinition, AXPValidationRuleDefinition, AXPValidationRuleValue, AXPValidationRunAt, AXPWidgetCatalogRecord };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnInit, EventEmitter } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { AXFormComponent } from '@acorex/components/form';
|
|
@@ -65,7 +65,7 @@ interface AXPDialogRef {
|
|
|
65
65
|
/**
|
|
66
66
|
* Manually close the dialog (optional - dialog closes automatically after user interaction)
|
|
67
67
|
*/
|
|
68
|
-
close(): void;
|
|
68
|
+
close(result?: any): void;
|
|
69
69
|
/**
|
|
70
70
|
* Get the form data from the dialog
|
|
71
71
|
*/
|
|
@@ -78,6 +78,17 @@ interface AXPDialogRef {
|
|
|
78
78
|
* Set the loading state of the dialog
|
|
79
79
|
*/
|
|
80
80
|
setLoading(loading: boolean): void;
|
|
81
|
+
/**
|
|
82
|
+
* Deep-merge partial values into the dialog layout context (e.g. after create returns an id).
|
|
83
|
+
*/
|
|
84
|
+
patchContext?(partial: Record<string, unknown>): void;
|
|
85
|
+
/**
|
|
86
|
+
* Invoke a registered widget's public `api()` method (e.g. step-wizard `next`).
|
|
87
|
+
*/
|
|
88
|
+
invokeWidget?(widgetName: string, method: string, options?: {
|
|
89
|
+
setLoading?: (loading: boolean) => void;
|
|
90
|
+
close?: (result?: any) => void;
|
|
91
|
+
}): Promise<void>;
|
|
81
92
|
}
|
|
82
93
|
interface LayoutWidgetOptions {
|
|
83
94
|
name?: string;
|
|
@@ -228,12 +239,18 @@ interface AXPFieldsetContainerOptions extends LayoutWidgetOptions {
|
|
|
228
239
|
isOpen?: boolean;
|
|
229
240
|
look?: 'fieldset' | 'card' | 'group' | 'container';
|
|
230
241
|
disabled?: boolean;
|
|
242
|
+
showTitle?: boolean;
|
|
231
243
|
showHeader?: boolean;
|
|
232
244
|
cols?: number;
|
|
233
245
|
}
|
|
246
|
+
/** How optional `hint` text is rendered in `form-field` layout widgets. */
|
|
247
|
+
type AXPFormFieldHintDisplayMode = 'icon' | 'note';
|
|
234
248
|
interface AXPFormFieldOptions extends LayoutWidgetOptions {
|
|
235
249
|
label?: string;
|
|
236
250
|
showLabel?: boolean;
|
|
251
|
+
/** Translated/helper copy; pairing with {@link hintDisplayMode}. */
|
|
252
|
+
hint?: AXPMultiLanguageString;
|
|
253
|
+
hintDisplayMode?: AXPFormFieldHintDisplayMode;
|
|
237
254
|
}
|
|
238
255
|
interface AXPDialogContainerOptions extends LayoutWidgetOptions {
|
|
239
256
|
title?: string;
|
|
@@ -246,6 +263,10 @@ interface RichTextOptions extends ValueWidgetOptions {
|
|
|
246
263
|
placeholder?: AXPMultiLanguageString;
|
|
247
264
|
toolbar?: string[];
|
|
248
265
|
readonly?: boolean;
|
|
266
|
+
/** Max height (px) for scrollable full preview when `showFullContent` is true. */
|
|
267
|
+
height?: number;
|
|
268
|
+
/** When true, view mode renders full HTML in a scrollable area instead of a truncated snippet. */
|
|
269
|
+
showFullContent?: boolean;
|
|
249
270
|
}
|
|
250
271
|
interface PasswordBoxOptions extends ValueWidgetOptions {
|
|
251
272
|
placeholder?: AXPMultiLanguageString;
|
|
@@ -650,38 +671,43 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
650
671
|
/**
|
|
651
672
|
* Form definition containing groups and fields OR widget tree
|
|
652
673
|
*/
|
|
653
|
-
layout:
|
|
674
|
+
layout: _angular_core.InputSignal<AXPWidgetNode | AXPDynamicFormDefinition>;
|
|
654
675
|
/**
|
|
655
676
|
* Form context/model data
|
|
656
677
|
*/
|
|
657
|
-
context:
|
|
678
|
+
context: _angular_core.ModelSignal<any>;
|
|
658
679
|
/**
|
|
659
680
|
* Form appearance and density styling (normal, compact, spacious)
|
|
660
681
|
*/
|
|
661
|
-
look:
|
|
682
|
+
look: _angular_core.InputSignal<AXPDynamicFormLook>;
|
|
662
683
|
/**
|
|
663
684
|
* Default form mode. Can be overridden by section/group and field.
|
|
664
685
|
*/
|
|
665
|
-
mode:
|
|
666
|
-
protected widgetTree:
|
|
686
|
+
mode: _angular_core.InputSignal<AXPDynamicFormMode>;
|
|
687
|
+
protected widgetTree: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
688
|
+
/**
|
|
689
|
+
* Prefer explicit {@link AXPWidgetNode.mode} on the root node (e.g. dialog flex `mode('view')`)
|
|
690
|
+
* so nested widgets resolve view vs edit correctly; fall back to the layout `mode` input.
|
|
691
|
+
*/
|
|
692
|
+
protected effectiveRenderMode: _angular_core.Signal<"view" | "edit" | "column" | "designer" | "print" | "filter">;
|
|
667
693
|
/**
|
|
668
694
|
* Convert layout data to widget tree when inputs change
|
|
669
695
|
*/
|
|
670
|
-
conversionEffect:
|
|
696
|
+
conversionEffect: _angular_core.EffectRef;
|
|
671
697
|
/**
|
|
672
698
|
* Emitted when context change is initiated
|
|
673
699
|
*/
|
|
674
|
-
contextInitiated:
|
|
700
|
+
contextInitiated: _angular_core.OutputEmitterRef<any>;
|
|
675
701
|
/**
|
|
676
702
|
* Emitted when form becomes valid/invalid
|
|
677
703
|
*/
|
|
678
|
-
validityChange:
|
|
704
|
+
validityChange: _angular_core.OutputEmitterRef<boolean>;
|
|
679
705
|
private form;
|
|
680
706
|
private container;
|
|
681
707
|
/**
|
|
682
708
|
* Internal context signal for reactivity
|
|
683
709
|
*/
|
|
684
|
-
protected internalContext:
|
|
710
|
+
protected internalContext: _angular_core.WritableSignal<any>;
|
|
685
711
|
/**
|
|
686
712
|
* Initial context for reset functionality
|
|
687
713
|
*/
|
|
@@ -735,14 +761,14 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
735
761
|
* Type guard to check if the input is a widget node
|
|
736
762
|
*/
|
|
737
763
|
private isWidgetNode;
|
|
738
|
-
static ɵfac:
|
|
739
|
-
static ɵcmp:
|
|
764
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutRendererComponent, never>;
|
|
765
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutRendererComponent, "axp-layout-renderer", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "context": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
|
|
740
766
|
}
|
|
741
767
|
|
|
742
768
|
declare class LayoutBuilderModule {
|
|
743
|
-
static ɵfac:
|
|
744
|
-
static ɵmod:
|
|
745
|
-
static ɵinj:
|
|
769
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutBuilderModule, never>;
|
|
770
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<LayoutBuilderModule, never, [typeof i1.CommonModule, typeof AXPLayoutRendererComponent], [typeof AXPLayoutRendererComponent]>;
|
|
771
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<LayoutBuilderModule>;
|
|
746
772
|
}
|
|
747
773
|
|
|
748
774
|
declare class AXPLayoutBuilderService {
|
|
@@ -751,8 +777,8 @@ declare class AXPLayoutBuilderService {
|
|
|
751
777
|
* Create a new layout builder
|
|
752
778
|
*/
|
|
753
779
|
create(): ILayoutBuilder;
|
|
754
|
-
static ɵfac:
|
|
755
|
-
static ɵprov:
|
|
780
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutBuilderService, never>;
|
|
781
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutBuilderService>;
|
|
756
782
|
}
|
|
757
783
|
|
|
758
784
|
declare class AXPLayoutConversionService {
|
|
@@ -817,8 +843,8 @@ declare class AXPLayoutConversionService {
|
|
|
817
843
|
* Create a simple hash from a string
|
|
818
844
|
*/
|
|
819
845
|
private createSimpleHash;
|
|
820
|
-
static ɵfac:
|
|
821
|
-
static ɵprov:
|
|
846
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutConversionService, never>;
|
|
847
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutConversionService>;
|
|
822
848
|
}
|
|
823
849
|
|
|
824
850
|
interface DialogRendererConfig {
|
|
@@ -849,12 +875,12 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
|
|
|
849
875
|
private widgetCoreService;
|
|
850
876
|
private expressionEvaluator;
|
|
851
877
|
private dialogResult?;
|
|
852
|
-
context:
|
|
878
|
+
context: _angular_core.WritableSignal<any>;
|
|
853
879
|
callBack: (dialogRef: AXPDialogRef) => void;
|
|
854
880
|
data: any;
|
|
855
881
|
private isDialogLoading;
|
|
856
|
-
footerPrefix:
|
|
857
|
-
footerSuffix:
|
|
882
|
+
footerPrefix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
883
|
+
footerSuffix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
858
884
|
ngOnInit(): void;
|
|
859
885
|
private layoutRenderer;
|
|
860
886
|
private debounceTimer?;
|
|
@@ -865,19 +891,25 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
|
|
|
865
891
|
isFormLoading(): boolean;
|
|
866
892
|
isSubmitting(): boolean;
|
|
867
893
|
executeAction(action: AXPWidgetCoreElementAction): Promise<void>;
|
|
894
|
+
/** Whether the layout form should be validated before running this footer command. */
|
|
895
|
+
private shouldValidateBeforeAction;
|
|
896
|
+
private createDialogRef;
|
|
897
|
+
private closeWithOptionalSkipValidate;
|
|
868
898
|
/** Resolves footer/widget action command to a string (e.g. `cancel`, `submit`, `widget:...`). */
|
|
869
899
|
private resolveActionCommandName;
|
|
870
900
|
private parseWidgetCommand;
|
|
871
|
-
private
|
|
901
|
+
private invokeWidget;
|
|
872
902
|
close(result?: DialogRendererResult): Promise<void>;
|
|
873
903
|
private aggregateAndEvaluateActions;
|
|
874
904
|
private collectWidgetActions;
|
|
875
905
|
private collectDialogActionsFromConfig;
|
|
876
906
|
private evaluatePredicates;
|
|
877
907
|
private evalBool;
|
|
908
|
+
/** Resolves footer action title when it contains {{ ... }} (e.g. wizard labels from dialog context). */
|
|
909
|
+
private evalActionTitle;
|
|
878
910
|
private resolveApi;
|
|
879
|
-
static ɵfac:
|
|
880
|
-
static ɵcmp:
|
|
911
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDialogRendererComponent, never>;
|
|
912
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, {}, { "result": "result"; }, never, never, true, never>;
|
|
881
913
|
}
|
|
882
914
|
|
|
883
915
|
/** Registration key for {@link AXPPreviewWidgetFieldCommand}; lives alone so `LayoutBuilderModule` can reference it without static-importing the command implementation. */
|
|
@@ -917,9 +949,9 @@ declare class AXPPreviewWidgetFieldCommand implements AXPCommand<AXPPreviewWidge
|
|
|
917
949
|
private resolveFieldTitleLabel;
|
|
918
950
|
private isCancelDialogOutcome;
|
|
919
951
|
private resolveWidgetDisplayTitle;
|
|
920
|
-
static ɵfac:
|
|
921
|
-
static ɵprov:
|
|
952
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPreviewWidgetFieldCommand, never>;
|
|
953
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPreviewWidgetFieldCommand>;
|
|
922
954
|
}
|
|
923
955
|
|
|
924
956
|
export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, AXPPreviewWidgetFieldCommand, AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY, LayoutBuilderModule };
|
|
925
|
-
export type { AXPDialogContainerOptions, AXPDialogRef, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldOptions, AXPGridContainerOptions, AXPListWidgetColumn, AXPListWidgetOptions, AXPListWidgetRowCommand, AXPPageContainerOptions, AXPPanelContainerOptions, AXPPreviewWidgetFieldCommandInput, AXPStepDefinition, AXPStepWizardContainerOptions, AXPStepWizardDefinition, AXPStepWizardGuardPayload, AXPStepWizardStatus, AXPTabsetContainerOptions, AXPWidgetConfiguration, AXPWidgetNodeExtendedProperties, AXPWizardActionDefinition, AXPWizardActions, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, DialogRendererConfig, DialogRendererResult, FormFieldBuilderState, IActionBuilder, IBaseContainerBuilder, IChildContainerBuilder, IDialogBuilder, IFieldsetContainerBuilder, IFlexContainerBuilder, IFormFieldBuilder, IGridContainerBuilder, ILayoutBuilder, ILayoutContainerBuilder, IListWidgetBuilder, IPageContainerBuilder, IPanelContainerBuilder, IStepBuilder, IStepWizardBuilder, ITabsetContainerBuilder, IWidgetBuilder, IWidgetContainerBuilder, InheritanceContext, InheritedProperties, LargeTextBoxOptions, LayoutBuilderState, LayoutWidgetOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, TextBoxOptions, ToggleSwitchOptions, ValueWidgetOptions, WidgetBuilderState };
|
|
957
|
+
export type { AXPDialogContainerOptions, AXPDialogRef, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldHintDisplayMode, AXPFormFieldOptions, AXPGridContainerOptions, AXPListWidgetColumn, AXPListWidgetOptions, AXPListWidgetRowCommand, AXPPageContainerOptions, AXPPanelContainerOptions, AXPPreviewWidgetFieldCommandInput, AXPStepDefinition, AXPStepWizardContainerOptions, AXPStepWizardDefinition, AXPStepWizardGuardPayload, AXPStepWizardStatus, AXPTabsetContainerOptions, AXPWidgetConfiguration, AXPWidgetNodeExtendedProperties, AXPWizardActionDefinition, AXPWizardActions, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, DialogRendererConfig, DialogRendererResult, FormFieldBuilderState, IActionBuilder, IBaseContainerBuilder, IChildContainerBuilder, IDialogBuilder, IFieldsetContainerBuilder, IFlexContainerBuilder, IFormFieldBuilder, IGridContainerBuilder, ILayoutBuilder, ILayoutContainerBuilder, IListWidgetBuilder, IPageContainerBuilder, IPanelContainerBuilder, IStepBuilder, IStepWizardBuilder, ITabsetContainerBuilder, IWidgetBuilder, IWidgetContainerBuilder, InheritanceContext, InheritedProperties, LargeTextBoxOptions, LayoutBuilderState, LayoutWidgetOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, TextBoxOptions, ToggleSwitchOptions, ValueWidgetOptions, WidgetBuilderState };
|
|
@@ -3,12 +3,12 @@ import * as _angular_core from '@angular/core';
|
|
|
3
3
|
import { EventEmitter, OnChanges, OnDestroy, WritableSignal, NgZone, ComponentRef, SimpleChanges } from '@angular/core';
|
|
4
4
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
5
5
|
import { AXTabStripChangedEvent } from '@acorex/components/tabs';
|
|
6
|
+
import { AXPMultiLanguageString, AXPDefinitionCategory, AXPBroadcastEventService, AXPContextChangeEvent } from '@acorex/platform/core';
|
|
6
7
|
import { AXPWidgetItemData, AXPWidgetItemClickEvent } from '@acorex/platform/layout/components';
|
|
7
8
|
import * as _acorex_platform_layout_widget_core from '@acorex/platform/layout/widget-core';
|
|
8
|
-
import { AXPWidgetConfig,
|
|
9
|
+
import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetNode, AXPBaseWidgetComponent, AXPWidgetRegistryService, AXPLayoutBaseWidgetComponent } from '@acorex/platform/layout/widget-core';
|
|
9
10
|
import { AXMenuItem } from '@acorex/components/menu';
|
|
10
11
|
import { Subject } from 'rxjs';
|
|
11
|
-
import { AXPBroadcastEventService, AXPContextChangeEvent } from '@acorex/platform/core';
|
|
12
12
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
13
13
|
import { AXPClipBoardService, AXPSettingsService } from '@acorex/platform/common';
|
|
14
14
|
|
|
@@ -72,53 +72,93 @@ declare class AXPDesignerGridDrawerComponent {
|
|
|
72
72
|
interface AXPDisplayWidgetConfig extends AXPWidgetConfig {
|
|
73
73
|
pinned: boolean;
|
|
74
74
|
}
|
|
75
|
+
interface AXPWidgetPickerSection {
|
|
76
|
+
trackKey: string;
|
|
77
|
+
title: AXPMultiLanguageString | null;
|
|
78
|
+
widgetItems: AXPWidgetItemData[];
|
|
79
|
+
}
|
|
75
80
|
declare class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
|
|
81
|
+
private readonly injector;
|
|
76
82
|
private settingsService;
|
|
77
83
|
private readonly mlResolver;
|
|
78
84
|
private readonly pinnedSettingKey;
|
|
85
|
+
/** Keeps the line indicator in sync when the selected index is set programmatically (e.g. restored tab). */
|
|
86
|
+
private readonly tabsHost;
|
|
87
|
+
constructor();
|
|
79
88
|
protected readonly i18n: {
|
|
80
89
|
readonly searchPlaceholder: "@form-template-management:designer.components.widget-picker.search-placeholder";
|
|
81
90
|
readonly selectedCount: "@form-template-management:designer.components.widget-picker.selected-count";
|
|
82
91
|
readonly tabAll: "@form-template-management:designer.components.widget-picker.tab-all";
|
|
92
|
+
readonly pinnedSectionTitle: "@form-template-management:designer.components.widget-picker.pinned-section-title";
|
|
83
93
|
};
|
|
84
94
|
protected searchTerm: _angular_core.ModelSignal<string>;
|
|
95
|
+
/** Populated by popup `data.tabPersistenceContext` (optional for tests). */
|
|
96
|
+
tabPersistenceContext?: string;
|
|
85
97
|
private widgets;
|
|
86
98
|
private allWidgets;
|
|
87
99
|
private pinnedWidgets;
|
|
88
|
-
private displayWidgets;
|
|
89
100
|
protected selectedWidgets: _angular_core.WritableSignal<AXPDisplayWidgetConfig[]>;
|
|
101
|
+
protected currentTabIndex: _angular_core.WritableSignal<number>;
|
|
102
|
+
/** Avoid persisting spurious tab events before restore + first paint complete. */
|
|
103
|
+
private allowTabPersistence;
|
|
104
|
+
private displayWidgets;
|
|
90
105
|
private orderedList;
|
|
91
106
|
protected pinnedList: _angular_core.Signal<AXPDisplayWidgetConfig[]>;
|
|
92
107
|
protected regularList: _angular_core.Signal<AXPDisplayWidgetConfig[]>;
|
|
93
108
|
protected pinnedWidgetItems: _angular_core.Signal<AXPWidgetItemData[]>;
|
|
94
|
-
protected
|
|
95
|
-
protected categories: _angular_core.Signal<
|
|
96
|
-
protected tabs: _angular_core.Signal<
|
|
109
|
+
protected regularGroupedSections: _angular_core.Signal<AXPWidgetPickerSection[]>;
|
|
110
|
+
protected categories: _angular_core.Signal<AXPDefinitionCategory[]>;
|
|
111
|
+
protected tabs: _angular_core.Signal<AXPDefinitionCategory[]>;
|
|
97
112
|
protected maxVisibleWidgets: _angular_core.Signal<number>;
|
|
98
|
-
protected
|
|
99
|
-
protected
|
|
113
|
+
protected selectedTab: _angular_core.Signal<AXPDefinitionCategory>;
|
|
114
|
+
protected pickerShellClass: _angular_core.Signal<string>;
|
|
100
115
|
protected ngOnInit(): Promise<void>;
|
|
101
|
-
|
|
116
|
+
private lastTabSettingKey;
|
|
117
|
+
private restoreLastTabFromSettings;
|
|
118
|
+
/**
|
|
119
|
+
* `ax-tab-item` [active] updates labels, but `ax-tabs` keeps the underline from its own index until `select` runs.
|
|
120
|
+
*/
|
|
121
|
+
private syncTabsStripToIndex;
|
|
122
|
+
private persistTabSelection;
|
|
123
|
+
/**
|
|
124
|
+
* Picks the primary parent category for the "All" tab (lowest `order` wins).
|
|
125
|
+
*/
|
|
126
|
+
private primaryCategory;
|
|
127
|
+
private buildAllTabSections;
|
|
128
|
+
private buildCategoryTabSections;
|
|
129
|
+
protected handleTabChange(event: AXTabStripChangedEvent): Promise<void>;
|
|
102
130
|
protected handleWidgetClick(clickEvent: AXPWidgetItemClickEvent): void;
|
|
103
131
|
protected handleWidgetPinClick(clickEvent: AXPWidgetItemClickEvent): Promise<void>;
|
|
132
|
+
protected handleConfirmSelection(): void;
|
|
104
133
|
protected isWidgetSelected(widget: AXPDisplayWidgetConfig): boolean;
|
|
105
134
|
protected isWidgetItemSelected(widgetItem: AXPWidgetItemData): boolean;
|
|
106
|
-
protected handleConfirmSelection(): void;
|
|
107
135
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDesignerWidgetPickerComponent, never>;
|
|
108
136
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDesignerWidgetPickerComponent, "ng-component", never, { "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
|
|
109
137
|
}
|
|
110
138
|
|
|
139
|
+
interface AXPWidgetPickerShowOptions {
|
|
140
|
+
groups: AXPWidgetGroupEnum[];
|
|
141
|
+
/** User-scoped last tab; unique per picker host (use `AXP_WIDGET_PICKER_TAB_CONTEXT`). */
|
|
142
|
+
tabPersistenceContext: string;
|
|
143
|
+
}
|
|
111
144
|
declare class AXPWidgetPickerService {
|
|
112
145
|
private popupService;
|
|
113
146
|
private widgetRegistryService;
|
|
114
147
|
private translationService;
|
|
115
|
-
showPicker(options:
|
|
116
|
-
groups: AXPWidgetGroupEnum[];
|
|
117
|
-
}): Promise<AXPWidgetNode[]>;
|
|
148
|
+
showPicker(options: AXPWidgetPickerShowOptions): Promise<AXPWidgetNode[]>;
|
|
118
149
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPickerService, never>;
|
|
119
150
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPickerService>;
|
|
120
151
|
}
|
|
121
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Suffixes for `forms:widgets:picker:last-tab:{id}` user settings keys.
|
|
155
|
+
* Use one id per distinct widget-picker host (different tab strips / widget sets).
|
|
156
|
+
*/
|
|
157
|
+
declare const AXP_WIDGET_PICKER_TAB_CONTEXT: {
|
|
158
|
+
readonly layoutDesignerFormElements: "layout-designer-form-elements";
|
|
159
|
+
readonly dashboardHome: "dashboard-home";
|
|
160
|
+
};
|
|
161
|
+
|
|
122
162
|
type AXPDesignerMode = {
|
|
123
163
|
id: 'designer';
|
|
124
164
|
title: 'Designer';
|
|
@@ -248,7 +288,7 @@ declare class AXPDesignerService {
|
|
|
248
288
|
readonly onRefresh: Subject<AXPDesignerRefreshEvent>;
|
|
249
289
|
readonly onUpdate: Subject<AXPDesignerUpdateEvent>;
|
|
250
290
|
readonly onFocused: Subject<AXPDesignerFocusEvent>;
|
|
251
|
-
|
|
291
|
+
readonly templateId: _angular_core.WritableSignal<string | null>;
|
|
252
292
|
private loadingStrategy;
|
|
253
293
|
constructor();
|
|
254
294
|
private can;
|
|
@@ -334,6 +374,38 @@ declare abstract class AXPDesignerConnector<T = string> {
|
|
|
334
374
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDesignerConnector<any>>;
|
|
335
375
|
}
|
|
336
376
|
|
|
377
|
+
/**
|
|
378
|
+
* Distributed hooks for extending the layout designer header menu without coupling the designer library to feature modules.
|
|
379
|
+
*
|
|
380
|
+
* - {@link AXPLayoutDesignerHeaderMenuHookKeys.root}: top-level bar items (siblings of File, Edit, …).
|
|
381
|
+
* - {@link AXPLayoutDesignerHeaderMenuHookKeys.submenu}: extra items inside a top-level menu (`file`, `edit`, `run`, `help`).
|
|
382
|
+
*/
|
|
383
|
+
declare const AXPLayoutDesignerHeaderMenuHookKeys: {
|
|
384
|
+
readonly root: "layout-designer.header-menu.root";
|
|
385
|
+
readonly submenu: "layout-designer.header-menu.submenu";
|
|
386
|
+
};
|
|
387
|
+
type AXPLayoutDesignerHeaderParentMenuId = 'file' | 'edit' | 'run' | 'help';
|
|
388
|
+
interface AXPLayoutDesignerHeaderMenuEntry {
|
|
389
|
+
id: string;
|
|
390
|
+
priority?: number;
|
|
391
|
+
/** i18n key (resolved by the menu host when set). */
|
|
392
|
+
labelKey?: string;
|
|
393
|
+
/** Plain label when no translation key is used. */
|
|
394
|
+
label?: string;
|
|
395
|
+
iconClass?: string;
|
|
396
|
+
run: () => void | Promise<void>;
|
|
397
|
+
}
|
|
398
|
+
interface AXPLayoutDesignerHeaderMenuRootPayload {
|
|
399
|
+
/** Current designer instance (typed as unknown to avoid circular imports in consumers). */
|
|
400
|
+
designer: unknown;
|
|
401
|
+
items: AXPLayoutDesignerHeaderMenuEntry[];
|
|
402
|
+
}
|
|
403
|
+
interface AXPLayoutDesignerHeaderMenuSubmenuPayload {
|
|
404
|
+
designer: unknown;
|
|
405
|
+
parentMenuId: AXPLayoutDesignerHeaderParentMenuId;
|
|
406
|
+
items: AXPLayoutDesignerHeaderMenuEntry[];
|
|
407
|
+
}
|
|
408
|
+
|
|
337
409
|
declare const AXP_DESIGNER_COPY_MENU: AXMenuItem;
|
|
338
410
|
declare const AXP_DESIGNER_CLONE_MENU: AXMenuItem;
|
|
339
411
|
declare const AXP_DESIGNER_CUT_MENU: AXMenuItem;
|
|
@@ -424,5 +496,5 @@ declare class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
|
|
|
424
496
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewComponent, "axp-layout-preview", never, {}, {}, never, never, true, never>;
|
|
425
497
|
}
|
|
426
498
|
|
|
427
|
-
export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, cloneWidgetMenu };
|
|
428
|
-
export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig };
|
|
499
|
+
export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerHeaderMenuHookKeys, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, AXP_WIDGET_PICKER_TAB_CONTEXT, cloneWidgetMenu };
|
|
500
|
+
export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig, AXPLayoutDesignerHeaderMenuEntry, AXPLayoutDesignerHeaderMenuRootPayload, AXPLayoutDesignerHeaderMenuSubmenuPayload, AXPLayoutDesignerHeaderParentMenuId, AXPWidgetPickerShowOptions };
|