@acorex/platform 20.8.7 → 20.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +48 -45
- package/fesm2022/{acorex-platform-common-common-settings.provider-DqdSjjp6.mjs → acorex-platform-common-common-settings.provider-DVvuLUfF.mjs} +25 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-DVvuLUfF.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +63 -24
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +5 -4
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +374 -49
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2 -2
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DZeByyDy.mjs → acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs} +115 -9
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +2 -2
- package/layout/entity/index.d.ts +81 -5
- package/package.json +17 -17
- package/fesm2022/acorex-platform-common-common-settings.provider-DqdSjjp6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DZeByyDy.mjs.map +0 -1
package/common/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { AXDataSourceOperator, AXStyleColorType, AXDataSourceFilterOption } from
|
|
|
4
4
|
import * as i2 from '@acorex/components/popup';
|
|
5
5
|
import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
|
|
6
6
|
import * as i5 from '@acorex/platform/core';
|
|
7
|
-
import { AXPValueTransformerFunctions, AXPOptionsData, AXPExpression, AXPFilterDefinition, AXPMetaData, AXPSystemActionType, AXPValidationRules, AXPGridLayoutOptions, AXPLogoConfig, AXPFileListItem, AXPNavigateActionCommand, AXPExecuteCommand, AXPApplicationUserReference, AXPEntityReference, AXPPlatformScopeKey,
|
|
7
|
+
import { AXPValueTransformerFunctions, AXPOptionsData, AXPExpression, AXPFilterDefinition, AXPMetaData, AXPSystemActionType, AXPValidationRules, AXPGridLayoutOptions, AXPLogoConfig, AXPFileListItem, AXPNavigateActionCommand, AXPExecuteCommand, AXPApplicationUserReference, AXPEntityReference, AXPPlatformScopeKey, AXPWidgetTriggers, AXPPlatformScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';
|
|
8
8
|
import { AXPWidgetTypesMap, AXPMetaDataDefinition, AXPWidgetNode } from '@acorex/platform/layout/widget-core';
|
|
9
9
|
import * as i6 from '@angular/router';
|
|
10
10
|
import { Route, Routes } from '@angular/router';
|
|
@@ -585,7 +585,8 @@ declare enum AXPCommonSettings {
|
|
|
585
585
|
ApplyLayoutOrdering = "Common:Setting:Entity.ApplyLayoutOrdering",
|
|
586
586
|
RedirectToDetailsAfterCreate = "Common:Setting:Entity.RedirectToDetailsAfterCreate",
|
|
587
587
|
ShowPageBadge = "Common:Setting:Entity.ShowPageBadge",
|
|
588
|
-
ShowRowIndexColumn = "Common:Setting:Entity.ShowRowIndexColumn"
|
|
588
|
+
ShowRowIndexColumn = "Common:Setting:Entity.ShowRowIndexColumn",
|
|
589
|
+
EntityListPersistenceMode = "Common:Setting:Entity.ListPersistenceMode"
|
|
589
590
|
}
|
|
590
591
|
|
|
591
592
|
declare const AXP_ROOT_CONFIG_TOKEN: InjectionToken<AXPRootConfigs>;
|
|
@@ -1749,6 +1750,49 @@ declare abstract class AXPLockService {
|
|
|
1749
1750
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXPLockService>;
|
|
1750
1751
|
}
|
|
1751
1752
|
|
|
1753
|
+
declare class AXPSettingDefinitionProviderContext {
|
|
1754
|
+
private rootGroups;
|
|
1755
|
+
private groupMap;
|
|
1756
|
+
addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder;
|
|
1757
|
+
group(name: string): AXPSettingDefinitionGroupBuilder | null;
|
|
1758
|
+
getGroups(): AXPSettingDefinitionGroup[];
|
|
1759
|
+
hasGroup(name: string): boolean;
|
|
1760
|
+
getGroup(name: string): AXPSettingDefinitionGroup | undefined;
|
|
1761
|
+
}
|
|
1762
|
+
declare class AXPSettingDefinitionGroupBuilder {
|
|
1763
|
+
private context;
|
|
1764
|
+
private group;
|
|
1765
|
+
constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup);
|
|
1766
|
+
addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder;
|
|
1767
|
+
section(name: string): AXPSettingDefinitionSectionBuilder | null;
|
|
1768
|
+
addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder;
|
|
1769
|
+
endGroup(): AXPSettingDefinitionProviderContext;
|
|
1770
|
+
}
|
|
1771
|
+
declare class AXPSettingDefinitionSectionBuilder {
|
|
1772
|
+
private groupBuilder;
|
|
1773
|
+
private section;
|
|
1774
|
+
constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection);
|
|
1775
|
+
addSetting(setting: {
|
|
1776
|
+
key: string;
|
|
1777
|
+
title: string;
|
|
1778
|
+
scope: AXPPlatformScopeKey;
|
|
1779
|
+
widget: {
|
|
1780
|
+
type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
|
|
1781
|
+
options?: AXPOptionsData;
|
|
1782
|
+
triggers?: AXPWidgetTriggers;
|
|
1783
|
+
layout?: AXPGridLayoutOptions;
|
|
1784
|
+
};
|
|
1785
|
+
description?: string;
|
|
1786
|
+
isRequired?: boolean;
|
|
1787
|
+
isInherited?: boolean;
|
|
1788
|
+
isEncrypted?: boolean;
|
|
1789
|
+
defaultValue?: unknown;
|
|
1790
|
+
valueTransforms?: AXPValueTransformerFunctions;
|
|
1791
|
+
validationRules?: AXPValidationRules;
|
|
1792
|
+
}): this;
|
|
1793
|
+
endSection(): AXPSettingDefinitionGroupBuilder;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1752
1796
|
interface AXPSettingValueProvider {
|
|
1753
1797
|
get scope(): AXPPlatformScope;
|
|
1754
1798
|
load(): Promise<AXPSettingValue[]>;
|
|
@@ -1812,49 +1856,6 @@ interface AXPGroupSearchResult {
|
|
|
1812
1856
|
groups: AXPSettingDefinitionGroup[] | null;
|
|
1813
1857
|
}
|
|
1814
1858
|
|
|
1815
|
-
declare class AXPSettingDefinitionProviderContext {
|
|
1816
|
-
private rootGroups;
|
|
1817
|
-
private groupMap;
|
|
1818
|
-
addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder;
|
|
1819
|
-
group(name: string): AXPSettingDefinitionGroupBuilder | null;
|
|
1820
|
-
getGroups(): AXPSettingDefinitionGroup[];
|
|
1821
|
-
hasGroup(name: string): boolean;
|
|
1822
|
-
getGroup(name: string): AXPSettingDefinitionGroup | undefined;
|
|
1823
|
-
}
|
|
1824
|
-
declare class AXPSettingDefinitionGroupBuilder {
|
|
1825
|
-
private context;
|
|
1826
|
-
private group;
|
|
1827
|
-
constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup);
|
|
1828
|
-
addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder;
|
|
1829
|
-
section(name: string): AXPSettingDefinitionSectionBuilder | null;
|
|
1830
|
-
addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder;
|
|
1831
|
-
endGroup(): AXPSettingDefinitionProviderContext;
|
|
1832
|
-
}
|
|
1833
|
-
declare class AXPSettingDefinitionSectionBuilder {
|
|
1834
|
-
private groupBuilder;
|
|
1835
|
-
private section;
|
|
1836
|
-
constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection);
|
|
1837
|
-
addSetting(setting: {
|
|
1838
|
-
key: string;
|
|
1839
|
-
title: string;
|
|
1840
|
-
scope: AXPPlatformScopeKey;
|
|
1841
|
-
widget: {
|
|
1842
|
-
type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
|
|
1843
|
-
options?: AXPOptionsData;
|
|
1844
|
-
triggers?: AXPWidgetTriggers;
|
|
1845
|
-
layout?: AXPGridLayoutOptions;
|
|
1846
|
-
};
|
|
1847
|
-
description?: string;
|
|
1848
|
-
isRequired?: boolean;
|
|
1849
|
-
isInherited?: boolean;
|
|
1850
|
-
isEncrypted?: boolean;
|
|
1851
|
-
defaultValue?: unknown;
|
|
1852
|
-
valueTransforms?: AXPValueTransformerFunctions;
|
|
1853
|
-
validationRules?: AXPValidationRules;
|
|
1854
|
-
}): this;
|
|
1855
|
-
endSection(): AXPSettingDefinitionGroupBuilder;
|
|
1856
|
-
}
|
|
1857
|
-
|
|
1858
1859
|
interface AXPSettingDefinitionProvider {
|
|
1859
1860
|
provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
|
|
1860
1861
|
}
|
|
@@ -1867,6 +1868,7 @@ declare class AXPSettingDefinitionProviderService {
|
|
|
1867
1868
|
getListAsync(scope: AXPPlatformScopeKey): Promise<AXPSettingDefinitionGroup[]>;
|
|
1868
1869
|
getList(scope: AXPPlatformScopeKey): AXPSettingDefinitionGroup[];
|
|
1869
1870
|
defaultValues(): Promise<Record<string, unknown>>;
|
|
1871
|
+
settingScopeByKey(): Promise<Record<string, AXPPlatformScope>>;
|
|
1870
1872
|
findGroup(scope: AXPPlatformScopeKey, groupName: string): AXPGroupSearchResult;
|
|
1871
1873
|
private searchRecursive;
|
|
1872
1874
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingDefinitionProviderService, never>;
|
|
@@ -1904,6 +1906,7 @@ declare class AXPSettingsService implements AXPSettingsServiceInterface {
|
|
|
1904
1906
|
defaultValues(scope: AXPPlatformScope): Promise<Record<string, unknown>>;
|
|
1905
1907
|
scope(scope: AXPPlatformScope): ScopedSettingService;
|
|
1906
1908
|
invokeChangeEvent(event: AXPSettingChangedEvent): void;
|
|
1909
|
+
private seedMissingDefaults;
|
|
1907
1910
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingsService, never>;
|
|
1908
1911
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingsService>;
|
|
1909
1912
|
}
|
|
@@ -54,6 +54,30 @@ class AXPCommonSettingProvider {
|
|
|
54
54
|
},
|
|
55
55
|
},
|
|
56
56
|
description: await trans('general.entity.filter-apply-mode.description'),
|
|
57
|
+
})
|
|
58
|
+
.addSetting({
|
|
59
|
+
key: AXPCommonSettings.EntityListPersistenceMode,
|
|
60
|
+
title: await trans('general.entity.list-persistence-mode.title'),
|
|
61
|
+
scope: AXPPlatformScope.User,
|
|
62
|
+
isInherited: true,
|
|
63
|
+
defaultValue: 'persistent',
|
|
64
|
+
widget: {
|
|
65
|
+
type: AXPWidgetsCatalog.select,
|
|
66
|
+
options: {
|
|
67
|
+
label: null,
|
|
68
|
+
valueField: 'value',
|
|
69
|
+
textField: 'text',
|
|
70
|
+
dataSource: [
|
|
71
|
+
{ value: 'none', text: await trans('general.entity.list-persistence-mode.options.none') },
|
|
72
|
+
{
|
|
73
|
+
value: 'persistent',
|
|
74
|
+
text: await trans('general.entity.list-persistence-mode.options.persistent'),
|
|
75
|
+
},
|
|
76
|
+
{ value: 'route', text: await trans('general.entity.list-persistence-mode.options.route') },
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
description: await trans('general.entity.list-persistence-mode.description'),
|
|
57
81
|
})
|
|
58
82
|
.addSetting({
|
|
59
83
|
key: AXPCommonSettings.ShowCategoryColumnsByDefault,
|
|
@@ -138,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
138
162
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
139
163
|
|
|
140
164
|
export { AXPCommonSettingProvider };
|
|
141
|
-
//# sourceMappingURL=acorex-platform-common-common-settings.provider-
|
|
165
|
+
//# sourceMappingURL=acorex-platform-common-common-settings.provider-DVvuLUfF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-common-common-settings.provider-DVvuLUfF.mjs","sources":["../tmp-esm2022/common/lib/configs/common-settings.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXPCommonSettings } from './common-settings.key';\nimport * as i0 from \"@angular/core\";\nexport class AXPCommonSettingProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async provide(context) {\n const trans = async (key) => await this.translateService.translateAsync(`@general:settings.${key}`);\n // Define the 'General Settings' group\n context\n .group('general')\n ?.addSection('notifications', await trans('general.notifications.title'), await trans('general.notifications.description'))\n // Add the 'Enable Operation Toasts' setting\n .addSetting({\n key: AXPCommonSettings.EnableOperationToasts,\n title: await trans('general.notifications.enable-operation-toasts.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: true,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.notifications.enable-operation-toasts.description'),\n })\n // End the 'Notifications' section\n .endSection()\n .addSection('entity', await trans('general.entity.title'), await trans('general.entity.description'))\n // Add the 'Enable Operation Toasts' setting\n .addSetting({\n key: AXPCommonSettings.EntityFilterApplyMode,\n title: await trans('general.entity.filter-apply-mode.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: 'auto',\n widget: {\n type: AXPWidgetsCatalog.select,\n options: {\n label: null,\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'auto', text: await trans('general.entity.filter-apply-mode.options.auto') },\n { value: 'manual', text: await trans('general.entity.filter-apply-mode.options.manual') },\n ],\n },\n },\n description: await trans('general.entity.filter-apply-mode.description'),\n })\n .addSetting({\n key: AXPCommonSettings.EntityListPersistenceMode,\n title: await trans('general.entity.list-persistence-mode.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: 'persistent',\n widget: {\n type: AXPWidgetsCatalog.select,\n options: {\n label: null,\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'none', text: await trans('general.entity.list-persistence-mode.options.none') },\n {\n value: 'persistent',\n text: await trans('general.entity.list-persistence-mode.options.persistent'),\n },\n { value: 'route', text: await trans('general.entity.list-persistence-mode.options.route') },\n ],\n },\n },\n description: await trans('general.entity.list-persistence-mode.description'),\n })\n .addSetting({\n key: AXPCommonSettings.ShowCategoryColumnsByDefault,\n title: await trans('general.entity.show-category-columns-by-default.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: false,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.entity.show-category-columns-by-default.description'),\n })\n .addSetting({\n key: AXPCommonSettings.ApplyLayoutOrdering,\n title: await trans('general.entity.apply-layout-ordering.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: true,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.entity.apply-layout-ordering.description'),\n })\n .addSetting({\n key: AXPCommonSettings.RedirectToDetailsAfterCreate,\n title: await trans('general.entity.redirect-to-details-after-create.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: true,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.entity.redirect-to-details-after-create.description'),\n })\n .addSetting({\n key: AXPCommonSettings.ShowPageBadge,\n title: await trans('general.entity.show-page-badge.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: true,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.entity.show-page-badge.description'),\n })\n .addSetting({\n key: AXPCommonSettings.ShowRowIndexColumn,\n title: await trans('general.entity.show-row-index-column.title'),\n scope: AXPPlatformScope.User,\n isInherited: true,\n defaultValue: false,\n widget: {\n type: AXPWidgetsCatalog.toggle,\n options: {\n label: null,\n },\n },\n description: await trans('general.entity.show-row-index-column.description'),\n })\n // End the 'Entity Settings' section\n .endSection()\n // End the 'General Settings' group\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXPCommonSettingProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXPCommonSettingProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.19\", ngImport: i0, type: AXPCommonSettingProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNldHRpbmdzLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb21tb24vc3JjL2xpYi9jb25maWdzL2NvbW1vbi1zZXR0aW5ncy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHMUQsTUFBTSxPQUFPLHdCQUF3QjtJQUduQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRnJCLHFCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbEMsQ0FBQztJQUUzQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTRDO1FBQ3hELE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU1RyxzQ0FBc0M7UUFDdEMsT0FBTzthQUNKLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDakIsRUFBRSxVQUFVLENBQ1YsZUFBZSxFQUNmLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLEVBQzFDLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQ2pEO1lBQ0QsNENBQTRDO2FBQzNDLFVBQVUsQ0FBQztZQUNWLEdBQUcsRUFBRSxp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LElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO2dCQUM5QixPQUFPLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtZQUNELFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQztTQUN2RSxDQUFDO2FBQ0QsVUFBVSxDQUFDO1lBQ1YsR0FBRyxFQUFFLGlCQUFpQixDQUFDLGtCQUFrQjtZQUN6QyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsNENBQTRDLENBQUM7WUFDaEUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLElBQUk7WUFDNUIsV0FBVyxFQUFFLElBQUk7WUFDakIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO2dCQUM5QixPQUFPLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtZQUNELFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQztTQUM3RSxDQUFDO1lBRUYsb0NBQW9DO2FBQ25DLFVBQVUsRUFBRTtZQUNiLG1DQUFtQzthQUNsQyxRQUFRLEVBQUUsQ0FBQztJQUNoQixDQUFDOytHQTdKVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlciwgQVhQU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICcuLi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBBWFBDb21tb25TZXR0aW5ncyB9IGZyb20gJy4vY29tbW9uLXNldHRpbmdzLmtleSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBDb21tb25TZXR0aW5nUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cblxuICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUFNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHJhbnMgPSBhc3luYyAoa2V5OiBzdHJpbmcpID0+IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhgQGdlbmVyYWw6c2V0dGluZ3MuJHtrZXl9YCk7XG5cbiAgICAvLyBEZWZpbmUgdGhlICdHZW5lcmFsIFNldHRpbmdzJyBncm91cFxuICAgIGNvbnRleHRcbiAgICAgIC5ncm91cCgnZ2VuZXJhbCcpXG4gICAgICA/LmFkZFNlY3Rpb24oXG4gICAgICAgICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgYXdhaXQgdHJhbnMoJ2dlbmVyYWwubm90aWZpY2F0aW9ucy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0cmFucygnZ2VuZXJhbC5ub3RpZmljYXRpb25zLmRlc2NyaXB0aW9uJyksXG4gICAgICApXG4gICAgICAvLyBBZGQgdGhlICdFbmFibGUgT3BlcmF0aW9uIFRvYXN0cycgc2V0dGluZ1xuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLkVuYWJsZU9wZXJhdGlvblRvYXN0cyxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLm5vdGlmaWNhdGlvbnMuZW5hYmxlLW9wZXJhdGlvbi10b2FzdHMudGl0bGUnKSxcbiAgICAgICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUuVXNlcixcbiAgICAgICAgaXNJbmhlcml0ZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVzY3JpcHRpb246IGF3YWl0IHRyYW5zKCdnZW5lcmFsLm5vdGlmaWNhdGlvbnMuZW5hYmxlLW9wZXJhdGlvbi10b2FzdHMuZGVzY3JpcHRpb24nKSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEVuZCB0aGUgJ05vdGlmaWNhdGlvbnMnIHNlY3Rpb25cbiAgICAgIC5lbmRTZWN0aW9uKClcbiAgICAgIC5hZGRTZWN0aW9uKCdlbnRpdHknLCBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkudGl0bGUnKSwgYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LmRlc2NyaXB0aW9uJykpXG4gICAgICAvLyBBZGQgdGhlICdFbmFibGUgT3BlcmF0aW9uIFRvYXN0cycgc2V0dGluZ1xuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLkVudGl0eUZpbHRlckFwcGx5TW9kZSxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS50aXRsZScpLFxuICAgICAgICBzY29wZTogQVhQUGxhdGZvcm1TY29wZS5Vc2VyLFxuICAgICAgICBpc0luaGVyaXRlZDogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnYXV0bycsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2F1dG8nLCB0ZXh0OiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuZmlsdGVyLWFwcGx5LW1vZGUub3B0aW9ucy5hdXRvJykgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ21hbnVhbCcsIHRleHQ6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS5vcHRpb25zLm1hbnVhbCcpIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVzY3JpcHRpb246IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5maWx0ZXItYXBwbHktbW9kZS5kZXNjcmlwdGlvbicpLFxuICAgICAgfSlcbiAgICAgIC5hZGRTZXR0aW5nKHtcbiAgICAgICAga2V5OiBBWFBDb21tb25TZXR0aW5ncy5FbnRpdHlMaXN0UGVyc2lzdGVuY2VNb2RlLFxuICAgICAgICB0aXRsZTogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5Lmxpc3QtcGVyc2lzdGVuY2UtbW9kZS50aXRsZScpLFxuICAgICAgICBzY29wZTogQVhQUGxhdGZvcm1TY29wZS5Vc2VyLFxuICAgICAgICBpc0luaGVyaXRlZDogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAncGVyc2lzdGVudCcsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ25vbmUnLCB0ZXh0OiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkubGlzdC1wZXJzaXN0ZW5jZS1tb2RlLm9wdGlvbnMubm9uZScpIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ3BlcnNpc3RlbnQnLFxuICAgICAgICAgICAgICAgIHRleHQ6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5saXN0LXBlcnNpc3RlbmNlLW1vZGUub3B0aW9ucy5wZXJzaXN0ZW50JyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdyb3V0ZScsIHRleHQ6IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5saXN0LXBlcnNpc3RlbmNlLW1vZGUub3B0aW9ucy5yb3V0ZScpIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkubGlzdC1wZXJzaXN0ZW5jZS1tb2RlLmRlc2NyaXB0aW9uJyksXG4gICAgICB9KVxuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLlNob3dDYXRlZ29yeUNvbHVtbnNCeURlZmF1bHQsXG4gICAgICAgIHRpdGxlOiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuc2hvdy1jYXRlZ29yeS1jb2x1bW5zLWJ5LWRlZmF1bHQudGl0bGUnKSxcbiAgICAgICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUuVXNlcixcbiAgICAgICAgaXNJbmhlcml0ZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LnNob3ctY2F0ZWdvcnktY29sdW1ucy1ieS1kZWZhdWx0LmRlc2NyaXB0aW9uJyksXG4gICAgICB9KVxuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLkFwcGx5TGF5b3V0T3JkZXJpbmcsXG4gICAgICAgIHRpdGxlOiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuYXBwbHktbGF5b3V0LW9yZGVyaW5nLnRpdGxlJyksXG4gICAgICAgIHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLlVzZXIsXG4gICAgICAgIGlzSW5oZXJpdGVkOiB0cnVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LmFwcGx5LWxheW91dC1vcmRlcmluZy5kZXNjcmlwdGlvbicpLFxuICAgICAgfSlcbiAgICAgIC5hZGRTZXR0aW5nKHtcbiAgICAgICAga2V5OiBBWFBDb21tb25TZXR0aW5ncy5SZWRpcmVjdFRvRGV0YWlsc0FmdGVyQ3JlYXRlLFxuICAgICAgICB0aXRsZTogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LnJlZGlyZWN0LXRvLWRldGFpbHMtYWZ0ZXItY3JlYXRlLnRpdGxlJyksXG4gICAgICAgIHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLlVzZXIsXG4gICAgICAgIGlzSW5oZXJpdGVkOiB0cnVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LnJlZGlyZWN0LXRvLWRldGFpbHMtYWZ0ZXItY3JlYXRlLmRlc2NyaXB0aW9uJyksXG4gICAgICB9KVxuICAgICAgLmFkZFNldHRpbmcoe1xuICAgICAgICBrZXk6IEFYUENvbW1vblNldHRpbmdzLlNob3dQYWdlQmFkZ2UsXG4gICAgICAgIHRpdGxlOiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuc2hvdy1wYWdlLWJhZGdlLnRpdGxlJyksXG4gICAgICAgIHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLlVzZXIsXG4gICAgICAgIGlzSW5oZXJpdGVkOiB0cnVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIHdpZGdldDoge1xuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogYXdhaXQgdHJhbnMoJ2dlbmVyYWwuZW50aXR5LnNob3ctcGFnZS1iYWRnZS5kZXNjcmlwdGlvbicpLFxuICAgICAgfSlcbiAgICAgIC5hZGRTZXR0aW5nKHtcbiAgICAgICAga2V5OiBBWFBDb21tb25TZXR0aW5ncy5TaG93Um93SW5kZXhDb2x1bW4sXG4gICAgICAgIHRpdGxlOiBhd2FpdCB0cmFucygnZ2VuZXJhbC5lbnRpdHkuc2hvdy1yb3ctaW5kZXgtY29sdW1uLnRpdGxlJyksXG4gICAgICAgIHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLlVzZXIsXG4gICAgICAgIGlzSW5oZXJpdGVkOiB0cnVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB3aWRnZXQ6IHtcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY3JpcHRpb246IGF3YWl0IHRyYW5zKCdnZW5lcmFsLmVudGl0eS5zaG93LXJvdy1pbmRleC1jb2x1bW4uZGVzY3JpcHRpb24nKSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEVuZCB0aGUgJ0VudGl0eSBTZXR0aW5ncycgc2VjdGlvblxuICAgICAgLmVuZFNlY3Rpb24oKVxuICAgICAgLy8gRW5kIHRoZSAnR2VuZXJhbCBTZXR0aW5ncycgZ3JvdXBcbiAgICAgIC5lbmRHcm91cCgpO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -363,7 +363,8 @@ class AXPSettingDefinitionProviderService {
|
|
|
363
363
|
return groups
|
|
364
364
|
.map((group) => ({
|
|
365
365
|
...group,
|
|
366
|
-
sections: group.sections
|
|
366
|
+
sections: group.sections
|
|
367
|
+
.map((section) => ({
|
|
367
368
|
...section,
|
|
368
369
|
settings: section.settings.filter((setting) => {
|
|
369
370
|
const settingScopeIndex = scopeOrder.indexOf(setting.scope);
|
|
@@ -380,7 +381,8 @@ class AXPSettingDefinitionProviderService {
|
|
|
380
381
|
// 3. Exclude settings with a lower or irrelevant scope.
|
|
381
382
|
return false;
|
|
382
383
|
}),
|
|
383
|
-
}))
|
|
384
|
+
}))
|
|
385
|
+
.filter((section) => section.settings.length > 0), // Keep only sections with settings
|
|
384
386
|
groups: filterByScope(group.groups, currentScope), // Recursively filter nested groups
|
|
385
387
|
}))
|
|
386
388
|
.filter((group) => group.sections.length > 0 || group.groups.length > 0); // Keep groups with valid sections or nested groups
|
|
@@ -407,12 +409,33 @@ class AXPSettingDefinitionProviderService {
|
|
|
407
409
|
collectDefaults(this.cache);
|
|
408
410
|
return defaults;
|
|
409
411
|
}
|
|
412
|
+
async settingScopeByKey() {
|
|
413
|
+
const scopes = {};
|
|
414
|
+
const collect = (groups) => {
|
|
415
|
+
groups.forEach((group) => {
|
|
416
|
+
group.sections.forEach((section) => {
|
|
417
|
+
section.settings.forEach((setting) => {
|
|
418
|
+
scopes[setting.name] = setting.scope;
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
collect(group.groups);
|
|
422
|
+
});
|
|
423
|
+
};
|
|
424
|
+
if (!this.cache) {
|
|
425
|
+
await this.load();
|
|
426
|
+
}
|
|
427
|
+
collect(this.cache);
|
|
428
|
+
return scopes;
|
|
429
|
+
}
|
|
410
430
|
findGroup(scope, groupName) {
|
|
411
431
|
return this.searchRecursive(this.getList(scope), groupName, []); // Initialize with an empty breadcrumb
|
|
412
432
|
}
|
|
413
433
|
searchRecursive(groups, groupName, breadcrumb) {
|
|
414
434
|
for (const group of groups) {
|
|
415
|
-
const currentBreadcrumb = [
|
|
435
|
+
const currentBreadcrumb = [
|
|
436
|
+
...breadcrumb,
|
|
437
|
+
{ name: group.name, title: group.title, description: group.description },
|
|
438
|
+
];
|
|
416
439
|
// If the group name matches, return its details
|
|
417
440
|
if (group.name === groupName) {
|
|
418
441
|
return {
|
|
@@ -431,7 +454,7 @@ class AXPSettingDefinitionProviderService {
|
|
|
431
454
|
return {
|
|
432
455
|
breadcrumb: [],
|
|
433
456
|
groups: [],
|
|
434
|
-
sections: []
|
|
457
|
+
sections: [],
|
|
435
458
|
};
|
|
436
459
|
}
|
|
437
460
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSettingDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -482,9 +505,9 @@ const AXP_SETTING_VALUE_PROVIDER = new InjectionToken('AXP_SETTING_VALUE_PROVIDE
|
|
|
482
505
|
return [
|
|
483
506
|
new AXPSettingValueProviderDefault(AXPPlatformScope.Platform, injector),
|
|
484
507
|
new AXPSettingValueProviderDefault(AXPPlatformScope.Tenant, injector),
|
|
485
|
-
new AXPSettingValueProviderDefault(AXPPlatformScope.User, injector)
|
|
508
|
+
new AXPSettingValueProviderDefault(AXPPlatformScope.User, injector),
|
|
486
509
|
];
|
|
487
|
-
}
|
|
510
|
+
},
|
|
488
511
|
});
|
|
489
512
|
class AXPSettingValueProviderDefault {
|
|
490
513
|
constructor(_scope, injector) {
|
|
@@ -524,7 +547,7 @@ class AXPSettingValueProviderDefault {
|
|
|
524
547
|
Object.entries(parsedSettings).forEach(([key, value]) => {
|
|
525
548
|
this.cache.set(key, value);
|
|
526
549
|
});
|
|
527
|
-
return Promise.resolve(Array.from(this.cache.entries()).map(c => ({ key: c[0], value: c[1] })));
|
|
550
|
+
return Promise.resolve(Array.from(this.cache.entries()).map((c) => ({ key: c[0], value: c[1] })));
|
|
528
551
|
}
|
|
529
552
|
return Promise.resolve([]);
|
|
530
553
|
}
|
|
@@ -569,11 +592,7 @@ class AXPSettingsService {
|
|
|
569
592
|
this.onChanged = new Subject();
|
|
570
593
|
this.onLoaded = new Subject();
|
|
571
594
|
// Initialize scoped caches for dynamic scopes
|
|
572
|
-
const staticScopes = [
|
|
573
|
-
AXPPlatformScope.Platform,
|
|
574
|
-
AXPPlatformScope.Tenant,
|
|
575
|
-
AXPPlatformScope.User,
|
|
576
|
-
];
|
|
595
|
+
const staticScopes = [AXPPlatformScope.Platform, AXPPlatformScope.Tenant, AXPPlatformScope.User];
|
|
577
596
|
staticScopes.forEach((scope) => {
|
|
578
597
|
if (!this.scopedSettingsCache.has(scope)) {
|
|
579
598
|
this.scopedSettingsCache.set(scope, new Map());
|
|
@@ -608,6 +627,7 @@ class AXPSettingsService {
|
|
|
608
627
|
});
|
|
609
628
|
settingsList.push(...providerSettings);
|
|
610
629
|
}
|
|
630
|
+
await this.seedMissingDefaults();
|
|
611
631
|
this.onLoaded.next();
|
|
612
632
|
return settingsList;
|
|
613
633
|
}
|
|
@@ -620,11 +640,7 @@ class AXPSettingsService {
|
|
|
620
640
|
if (this.scopedSettingsCache.size === 0) {
|
|
621
641
|
await this.load();
|
|
622
642
|
}
|
|
623
|
-
const scopeOrder = [
|
|
624
|
-
AXPPlatformScope.User,
|
|
625
|
-
AXPPlatformScope.Tenant,
|
|
626
|
-
AXPPlatformScope.Platform,
|
|
627
|
-
];
|
|
643
|
+
const scopeOrder = [AXPPlatformScope.User, AXPPlatformScope.Tenant, AXPPlatformScope.Platform];
|
|
628
644
|
for (const scope of scopeOrder) {
|
|
629
645
|
const scopeCache = this.scopedSettingsCache.get(scope);
|
|
630
646
|
if (scopeCache && scopeCache.has(key)) {
|
|
@@ -638,11 +654,7 @@ class AXPSettingsService {
|
|
|
638
654
|
return get(defaults, key); // Fallback if no value is found
|
|
639
655
|
}
|
|
640
656
|
async defaultValues(scope) {
|
|
641
|
-
let scopeOrder = [
|
|
642
|
-
AXPPlatformScope.Platform,
|
|
643
|
-
AXPPlatformScope.Tenant,
|
|
644
|
-
AXPPlatformScope.User,
|
|
645
|
-
].reverse();
|
|
657
|
+
let scopeOrder = [AXPPlatformScope.Platform, AXPPlatformScope.Tenant, AXPPlatformScope.User].reverse();
|
|
646
658
|
const scopeIndex = scopeOrder.indexOf(scope);
|
|
647
659
|
if (scopeIndex === -1) {
|
|
648
660
|
throw new Error(`Invalid scope: ${scope}`);
|
|
@@ -676,6 +688,32 @@ class AXPSettingsService {
|
|
|
676
688
|
this.onChanged.next(event);
|
|
677
689
|
this.eventService.publish('AXPSettingChangedEvent', event);
|
|
678
690
|
}
|
|
691
|
+
async seedMissingDefaults() {
|
|
692
|
+
const definitionService = this.injector.get(AXPSettingDefinitionProviderService);
|
|
693
|
+
const aggregator = this.injector.get(AXPSettingDefaultValuesAggregatorService);
|
|
694
|
+
const [defaults, scopeByKey] = await Promise.all([
|
|
695
|
+
aggregator.getDefaults(),
|
|
696
|
+
definitionService.settingScopeByKey(),
|
|
697
|
+
]);
|
|
698
|
+
const persistedKeysByScope = new Map(await Promise.all(this.providers.map(async (provider) => {
|
|
699
|
+
const stored = await provider.load();
|
|
700
|
+
return [provider.scope, new Set(stored.map((s) => s.key))];
|
|
701
|
+
})));
|
|
702
|
+
const toPersist = {};
|
|
703
|
+
for (const [key, value] of Object.entries(defaults)) {
|
|
704
|
+
const scope = scopeByKey[key];
|
|
705
|
+
if (!scope || value === undefined || persistedKeysByScope.get(scope)?.has(key)) {
|
|
706
|
+
continue;
|
|
707
|
+
}
|
|
708
|
+
toPersist[scope] ??= {};
|
|
709
|
+
toPersist[scope][key] = value;
|
|
710
|
+
}
|
|
711
|
+
for (const [scope, values] of Object.entries(toPersist)) {
|
|
712
|
+
if (Object.keys(values).length > 0) {
|
|
713
|
+
await this.scope(scope).set(values);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
679
717
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
680
718
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSettingsService, providedIn: 'root' }); }
|
|
681
719
|
}
|
|
@@ -2728,6 +2766,7 @@ var AXPCommonSettings;
|
|
|
2728
2766
|
AXPCommonSettings["RedirectToDetailsAfterCreate"] = "Common:Setting:Entity.RedirectToDetailsAfterCreate";
|
|
2729
2767
|
AXPCommonSettings["ShowPageBadge"] = "Common:Setting:Entity.ShowPageBadge";
|
|
2730
2768
|
AXPCommonSettings["ShowRowIndexColumn"] = "Common:Setting:Entity.ShowRowIndexColumn";
|
|
2769
|
+
AXPCommonSettings["EntityListPersistenceMode"] = "Common:Setting:Entity.ListPersistenceMode";
|
|
2731
2770
|
})(AXPCommonSettings || (AXPCommonSettings = {}));
|
|
2732
2771
|
|
|
2733
2772
|
//TODO Loading, Redirect, Drawer, Show toast
|
|
@@ -2964,7 +3003,7 @@ class AXPCommonModule {
|
|
|
2964
3003
|
provide: AXP_SETTING_DEFINITION_PROVIDER,
|
|
2965
3004
|
useFactory: async () => {
|
|
2966
3005
|
const injector = inject(Injector);
|
|
2967
|
-
const provider = (await import('./acorex-platform-common-common-settings.provider-
|
|
3006
|
+
const provider = (await import('./acorex-platform-common-common-settings.provider-DVvuLUfF.mjs')).AXPCommonSettingProvider;
|
|
2968
3007
|
return new provider(injector);
|
|
2969
3008
|
},
|
|
2970
3009
|
multi: true,
|
|
@@ -3039,7 +3078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
3039
3078
|
provide: AXP_SETTING_DEFINITION_PROVIDER,
|
|
3040
3079
|
useFactory: async () => {
|
|
3041
3080
|
const injector = inject(Injector);
|
|
3042
|
-
const provider = (await import('./acorex-platform-common-common-settings.provider-
|
|
3081
|
+
const provider = (await import('./acorex-platform-common-common-settings.provider-DVvuLUfF.mjs')).AXPCommonSettingProvider;
|
|
3043
3082
|
return new provider(injector);
|
|
3044
3083
|
},
|
|
3045
3084
|
multi: true,
|