@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 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, AXPPlatformScope, AXPWidgetTriggers, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';
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-DqdSjjp6.mjs.map
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.map((section) => ({
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
- })).filter((section) => section.settings.length > 0), // Keep only sections with settings
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 = [...breadcrumb, { name: group.name, title: group.title, description: group.description }];
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-DqdSjjp6.mjs')).AXPCommonSettingProvider;
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-DqdSjjp6.mjs')).AXPCommonSettingProvider;
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,