@acorex-platform/module-locale-management-client 0.0.21

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.
@@ -0,0 +1,149 @@
1
+ //#region ---- Locale & regional context definitions ----
2
+ const AXM_LOCALE_CONTEXT_DEFINITIONS = [
3
+ {
4
+ name: 'locale',
5
+ title: 'UI locale',
6
+ description: 'Active UI language code from the translation service (e.g. en-US, fa-IR). Controls labels and locale-aware explanations.',
7
+ order: 40,
8
+ capabilities: ['ai'],
9
+ },
10
+ {
11
+ name: 'calendarSystem',
12
+ title: 'Calendar system',
13
+ description: 'User regional setting for calendar system (e.g. Gregorian, Jalali). Used for date interpretation and scheduling answers.',
14
+ order: 50,
15
+ capabilities: ['ai'],
16
+ },
17
+ {
18
+ name: 'timeZone',
19
+ title: 'Time zone',
20
+ description: 'IANA time zone from user regional settings. Used with current local date/time for scheduling context.',
21
+ order: 60,
22
+ capabilities: ['ai'],
23
+ },
24
+ {
25
+ name: 'country',
26
+ title: 'Country',
27
+ description: 'User regional country setting. Informs locale-specific conventions and regional defaults.',
28
+ order: 70,
29
+ capabilities: ['ai'],
30
+ },
31
+ ];
32
+ //#endregion
33
+
34
+ const AXPLocaleManagementMenuKeys = {
35
+ Root: 'locale-management:menu',
36
+ Languages: 'locale-management:menu:languages',
37
+ Divider1: 'locale-management:menu:divider-1',
38
+ Timezones: 'locale-management:menu:timezones',
39
+ };
40
+
41
+ /**
42
+ * Applications & Platform capabilities used by this module.
43
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
44
+ */
45
+ const AXPApplicationsPlatformPermissionKeys = {
46
+ Access: 'ApplicationsPlatform:Permission:Access',
47
+ MaintainApplications: 'ApplicationsPlatform:Permission:MaintainApplications',
48
+ MaintainTenants: 'ApplicationsPlatform:Permission:MaintainTenants',
49
+ MaintainPlatformShell: 'ApplicationsPlatform:Permission:MaintainPlatformShell',
50
+ MaintainLandingPages: 'ApplicationsPlatform:Permission:MaintainLandingPages',
51
+ MaintainIdentifiers: 'ApplicationsPlatform:Permission:MaintainIdentifiers',
52
+ MaintainTenantSettings: 'ApplicationsPlatform:Permission:MaintainTenantSettings',
53
+ MaintainPlatformSettings: 'ApplicationsPlatform:Permission:MaintainPlatformSettings',
54
+ MaintainLocales: 'ApplicationsPlatform:Permission:MaintainLocales',
55
+ UseDevTools: 'ApplicationsPlatform:Permission:UseDevTools',
56
+ };
57
+ /**
58
+ * @deprecated Prefer {@link AXPApplicationsPlatformPermissionKeys}.
59
+ * Legacy nested shape kept so existing imports compile during migration.
60
+ */
61
+ const AXMPermissionsKeys = {
62
+ LocaleManagement: {
63
+ Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
64
+ Language: {
65
+ Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
66
+ View: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
67
+ Edit: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
68
+ Delete: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
69
+ Create: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
70
+ },
71
+ Timezone: {
72
+ Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
73
+ View: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
74
+ Edit: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
75
+ Delete: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
76
+ Create: AXPApplicationsPlatformPermissionKeys.MaintainLocales,
77
+ },
78
+ },
79
+ };
80
+
81
+ //#region ----- Locale profile catalog (Available Languages picker) -----
82
+ /**
83
+ * Optional allow-list of built-in locale profile codes for the Available Languages
84
+ * picker (`getLocaleProfiles`). Empty default (`null`) = all built-in profiles.
85
+ *
86
+ * Product/deploy apps call {@link configureLocaleProfileCatalogCodes} at boot
87
+ * (e.g. AU nest environment omits `fa-IR`).
88
+ */
89
+ let localeProfileCatalogCodes = null;
90
+ /**
91
+ * Restrict which built-in locale profiles appear in the Available Languages picker.
92
+ * Pass `null` or an empty list to restore the full built-in catalog.
93
+ */
94
+ function configureLocaleProfileCatalogCodes(codes) {
95
+ if (!Array.isArray(codes) || codes.length === 0) {
96
+ localeProfileCatalogCodes = null;
97
+ return;
98
+ }
99
+ localeProfileCatalogCodes = codes.map((code) => String(code).trim()).filter(Boolean);
100
+ if (localeProfileCatalogCodes.length === 0) {
101
+ localeProfileCatalogCodes = null;
102
+ }
103
+ }
104
+ /** Configured catalog allow-list, or `null` when the full built-in catalog is used. */
105
+ function getLocaleProfileCatalogCodes() {
106
+ return localeProfileCatalogCodes;
107
+ }
108
+ //#endregion
109
+
110
+ const config = {
111
+ i18n: 'locale-management',
112
+ };
113
+ const RootConfig = {
114
+ config,
115
+ module: {
116
+ name: 'LocaleManagement',
117
+ title: '@locale-management:module.title',
118
+ icon: 'fa-light fa-globe',
119
+ },
120
+ entities: {
121
+ languages: {
122
+ name: 'Languages',
123
+ title: '@locale-management:languages.entities.language.title',
124
+ titlePlural: '@locale-management:languages.entities.language.plural',
125
+ icon: 'fa-light fa-language',
126
+ },
127
+ locales: {
128
+ name: 'Locales',
129
+ title: '@locale-management:locales.entities.locale.title',
130
+ titlePlural: '@locale-management:locales.entities.locale.plural',
131
+ icon: 'fa-light fa-globe',
132
+ },
133
+ timezones: {
134
+ name: 'Timezones',
135
+ title: '@locale-management:timezones.entities.timezone.title',
136
+ titlePlural: '@locale-management:timezones.entities.timezone.plural',
137
+ icon: 'fa-light fa-clock',
138
+ },
139
+ },
140
+ };
141
+
142
+ //#region ---- Contracts barrel ----
143
+
144
+ /**
145
+ * Generated bundle index. Do not edit.
146
+ */
147
+
148
+ export { AXMPermissionsKeys, AXM_LOCALE_CONTEXT_DEFINITIONS, AXPApplicationsPlatformPermissionKeys, AXPLocaleManagementMenuKeys, RootConfig, configureLocaleProfileCatalogCodes, getLocaleProfileCatalogCodes };
149
+ //# sourceMappingURL=acorex-platform-module-locale-management-client-contracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-locale-management-client-contracts.mjs","sources":["../../../../libs/modules/locale-management/contracts/src/lib/context.definitions.ts","../../../../libs/modules/locale-management/contracts/src/menu.keys.ts","../../../../libs/modules/locale-management/contracts/src/permission.keys.ts","../../../../libs/modules/locale-management/contracts/src/locale-profile-catalog.configure.ts","../../../../libs/modules/locale-management/contracts/src/root-config.ts","../../../../libs/modules/locale-management/contracts/src/index.ts","../../../../libs/modules/locale-management/contracts/src/acorex-platform-module-locale-management-client-contracts.ts"],"sourcesContent":["import type { AXPContextDefinition } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Locale & regional context definitions ----\n\nexport const AXM_LOCALE_CONTEXT_DEFINITIONS: AXPContextDefinition[] = [\n {\n name: 'locale',\n title: 'UI locale',\n description:\n 'Active UI language code from the translation service (e.g. en-US, fa-IR). Controls labels and locale-aware explanations.',\n order: 40,\n capabilities: ['ai'],\n },\n {\n name: 'calendarSystem',\n title: 'Calendar system',\n description:\n 'User regional setting for calendar system (e.g. Gregorian, Jalali). Used for date interpretation and scheduling answers.',\n order: 50,\n capabilities: ['ai'],\n },\n {\n name: 'timeZone',\n title: 'Time zone',\n description: 'IANA time zone from user regional settings. Used with current local date/time for scheduling context.',\n order: 60,\n capabilities: ['ai'],\n },\n {\n name: 'country',\n title: 'Country',\n description: 'User regional country setting. Informs locale-specific conventions and regional defaults.',\n order: 70,\n capabilities: ['ai'],\n },\n];\n\n//#endregion\n","export const AXPLocaleManagementMenuKeys = {\n Root: 'locale-management:menu',\n Languages: 'locale-management:menu:languages',\n Divider1: 'locale-management:menu:divider-1',\n Timezones: 'locale-management:menu:timezones',\n} as const;\n\n","/**\n * Applications & Platform capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPApplicationsPlatformPermissionKeys = {\n Access: 'ApplicationsPlatform:Permission:Access',\n MaintainApplications: 'ApplicationsPlatform:Permission:MaintainApplications',\n MaintainTenants: 'ApplicationsPlatform:Permission:MaintainTenants',\n MaintainPlatformShell: 'ApplicationsPlatform:Permission:MaintainPlatformShell',\n MaintainLandingPages: 'ApplicationsPlatform:Permission:MaintainLandingPages',\n MaintainIdentifiers: 'ApplicationsPlatform:Permission:MaintainIdentifiers',\n MaintainTenantSettings: 'ApplicationsPlatform:Permission:MaintainTenantSettings',\n MaintainPlatformSettings: 'ApplicationsPlatform:Permission:MaintainPlatformSettings',\n MaintainLocales: 'ApplicationsPlatform:Permission:MaintainLocales',\n UseDevTools: 'ApplicationsPlatform:Permission:UseDevTools',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPApplicationsPlatformPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n LocaleManagement: {\n Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Language: {\n Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n View: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Edit: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Delete: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Create: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n },\n Timezone: {\n Management: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n View: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Edit: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Delete: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n Create: AXPApplicationsPlatformPermissionKeys.MaintainLocales,\n },\n },\n} as const;\n","//#region ----- Locale profile catalog (Available Languages picker) -----\n\n/**\n * Optional allow-list of built-in locale profile codes for the Available Languages\n * picker (`getLocaleProfiles`). Empty default (`null`) = all built-in profiles.\n *\n * Product/deploy apps call {@link configureLocaleProfileCatalogCodes} at boot\n * (e.g. AU nest environment omits `fa-IR`).\n */\nlet localeProfileCatalogCodes: readonly string[] | null = null;\n\n/**\n * Restrict which built-in locale profiles appear in the Available Languages picker.\n * Pass `null` or an empty list to restore the full built-in catalog.\n */\nexport function configureLocaleProfileCatalogCodes(codes: readonly string[] | null): void {\n if (!Array.isArray(codes) || codes.length === 0) {\n localeProfileCatalogCodes = null;\n return;\n }\n localeProfileCatalogCodes = codes.map((code) => String(code).trim()).filter(Boolean);\n if (localeProfileCatalogCodes.length === 0) {\n localeProfileCatalogCodes = null;\n }\n}\n\n/** Configured catalog allow-list, or `null` when the full built-in catalog is used. */\nexport function getLocaleProfileCatalogCodes(): readonly string[] | null {\n return localeProfileCatalogCodes;\n}\n\n//#endregion\n","const config = {\n i18n: 'locale-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: 'LocaleManagement',\n title: '@locale-management:module.title',\n icon: 'fa-light fa-globe',\n },\n entities: {\n languages: {\n name: 'Languages',\n title: '@locale-management:languages.entities.language.title',\n titlePlural: '@locale-management:languages.entities.language.plural',\n icon: 'fa-light fa-language',\n },\n locales: {\n name: 'Locales',\n title: '@locale-management:locales.entities.locale.title',\n titlePlural: '@locale-management:locales.entities.locale.plural',\n icon: 'fa-light fa-globe',\n },\n timezones: {\n name: 'Timezones',\n title: '@locale-management:timezones.entities.timezone.title',\n titlePlural: '@locale-management:timezones.entities.timezone.plural',\n icon: 'fa-light fa-clock',\n },\n },\n} as const;\n","//#region ---- Contracts barrel ----\n\nexport * from './lib/context.definitions';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './locale-profile-catalog.configure';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { resolveCollectionSkip, resolveCollectionTake } from '@acorex-platform/framework-shared/runtime';
2
+ import { runtimeQuerySuccessCollection, runtimeQueryFailure } from '@acorex-platform/framework-shared/core';
3
+ import { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';
4
+ import * as i0 from '@angular/core';
5
+ import { inject, Injectable } from '@angular/core';
6
+ import { AXMLocaleManagementService } from './acorex-platform-module-locale-management-client.mjs';
7
+
8
+ //#endregion
9
+ //#region ---- Query ----
10
+ /**
11
+ * Tenant-allowed locale profile catalog — replaces the `available-locale-profiles` DI data source.
12
+ */
13
+ class AXMListAvailableLocaleProfilesQuery {
14
+ constructor() {
15
+ //#region ---- Services & Dependencies ----
16
+ this.localeManagement = inject(AXMLocaleManagementService);
17
+ }
18
+ //#endregion
19
+ //#region ---- Query Execution ----
20
+ async fetch(input) {
21
+ try {
22
+ let items = [...(await this.localeManagement.getAvailableLocaleProfiles())];
23
+ if (input?.filter) {
24
+ items = applyFilterArray(items, [input.filter]);
25
+ }
26
+ const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];
27
+ const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'code', dir: 'asc' }];
28
+ items = applySortArray(items, sortOpt);
29
+ const skip = resolveCollectionSkip(input?.skip);
30
+ const take = resolveCollectionTake(input?.take);
31
+ const total = items.length;
32
+ const page = items.slice(skip, skip + take);
33
+ return runtimeQuerySuccessCollection({ items: page, total });
34
+ }
35
+ catch (error) {
36
+ return runtimeQueryFailure(error instanceof Error ? error.message : 'Unknown error occurred');
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListAvailableLocaleProfilesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListAvailableLocaleProfilesQuery, providedIn: 'root' }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListAvailableLocaleProfilesQuery, decorators: [{
43
+ type: Injectable,
44
+ args: [{ providedIn: 'root' }]
45
+ }] });
46
+
47
+ export { AXMListAvailableLocaleProfilesQuery };
48
+ //# sourceMappingURL=acorex-platform-module-locale-management-client-list-available-locale-profiles.query-30KT5v3V.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-locale-management-client-list-available-locale-profiles.query-30KT5v3V.mjs","sources":["../../../../libs/modules/locale-management/client/src/lib/features/queries/list-available-locale-profiles.query.ts"],"sourcesContent":["import {\n resolveCollectionSkip,\n resolveCollectionTake,\n type AXPCollectionQuery,\n type AXPCollectionQueryInput,\n type AXPQueryCollectionFetchResultPromise,\n} from '@acorex-platform/framework-shared/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessCollection,\n} from '@acorex-platform/framework-shared/core';\nimport { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';\nimport { AXPLocaleProfile } from '@acorex-platform/framework-client/common';\n\nimport { Injectable, inject } from '@angular/core';\n\nimport { AXMLocaleManagementService } from '../shared/locale-management.service';\n\n//#region ---- Types ----\n\nexport type AXMListAvailableLocaleProfilesQueryInput = AXPCollectionQueryInput;\n\nexport type AXMListAvailableLocaleProfilesQueryItem = AXPLocaleProfile;\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Tenant-allowed locale profile catalog — replaces the `available-locale-profiles` DI data source.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMListAvailableLocaleProfilesQuery\n implements\n AXPCollectionQuery<\n AXMListAvailableLocaleProfilesQueryInput,\n AXMListAvailableLocaleProfilesQueryItem\n >\n{\n //#region ---- Services & Dependencies ----\n\n private readonly localeManagement = inject(AXMLocaleManagementService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMListAvailableLocaleProfilesQueryInput | null,\n ): AXPQueryCollectionFetchResultPromise<AXMListAvailableLocaleProfilesQueryItem> {\n try {\n let items = [...(await this.localeManagement.getAvailableLocaleProfiles())];\n\n if (input?.filter) {\n items = applyFilterArray(items, [input.filter]);\n }\n\n const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];\n const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'code' as const, dir: 'asc' as const }];\n items = applySortArray(items, sortOpt);\n\n const skip = resolveCollectionSkip(input?.skip);\n const take = resolveCollectionTake(input?.take);\n const total = items.length;\n const page = items.slice(skip, skip + take);\n\n return runtimeQuerySuccessCollection({ items: page, total });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Unknown error occurred',\n );\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AAwBA;AAEA;AAEA;;AAEG;MAEU,mCAAmC,CAAA;AADhD,IAAA,WAAA,GAAA;;AAUmB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAkCvE,IAAA;;;IA5BC,MAAM,KAAK,CACT,KAAuD,EAAA;AAEvD,QAAA,IAAI;AACF,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAE3E,YAAA,IAAI,KAAK,EAAE,MAAM,EAAE;gBACjB,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD;AAEA,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACzF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,GAAG,EAAE,KAAc,EAAE,CAAC;AAChG,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;YAEtC,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;YAE3C,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC9D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,wBAAwB,CAClE;QACH;IACF;8GAxCW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cADtB,MAAM,EAAA,CAAA,CAAA;;2FACnB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
@@ -0,0 +1,48 @@
1
+ import { resolveCollectionSkip, resolveCollectionTake } from '@acorex-platform/framework-shared/runtime';
2
+ import { runtimeQuerySuccessCollection, runtimeQueryFailure } from '@acorex-platform/framework-shared/core';
3
+ import { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';
4
+ import * as i0 from '@angular/core';
5
+ import { inject, Injectable } from '@angular/core';
6
+ import { AXMLocaleManagementService } from './acorex-platform-module-locale-management-client.mjs';
7
+
8
+ //#endregion
9
+ //#region ---- Query ----
10
+ /**
11
+ * Built-in locale profile catalog — replaces the `locale-profiles` DI data source.
12
+ */
13
+ class AXMListLocaleProfilesQuery {
14
+ constructor() {
15
+ //#region ---- Services & Dependencies ----
16
+ this.localeManagement = inject(AXMLocaleManagementService);
17
+ }
18
+ //#endregion
19
+ //#region ---- Query Execution ----
20
+ async fetch(input) {
21
+ try {
22
+ let items = [...(await this.localeManagement.getLocaleProfiles())];
23
+ if (input?.filter) {
24
+ items = applyFilterArray(items, [input.filter]);
25
+ }
26
+ const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];
27
+ const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'code', dir: 'asc' }];
28
+ items = applySortArray(items, sortOpt);
29
+ const skip = resolveCollectionSkip(input?.skip);
30
+ const take = resolveCollectionTake(input?.take);
31
+ const total = items.length;
32
+ const page = items.slice(skip, skip + take);
33
+ return runtimeQuerySuccessCollection({ items: page, total });
34
+ }
35
+ catch (error) {
36
+ return runtimeQueryFailure(error instanceof Error ? error.message : 'Unknown error occurred');
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListLocaleProfilesQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListLocaleProfilesQuery, providedIn: 'root' }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListLocaleProfilesQuery, decorators: [{
43
+ type: Injectable,
44
+ args: [{ providedIn: 'root' }]
45
+ }] });
46
+
47
+ export { AXMListLocaleProfilesQuery };
48
+ //# sourceMappingURL=acorex-platform-module-locale-management-client-list-locale-profiles.query-D_PLL72r.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-locale-management-client-list-locale-profiles.query-D_PLL72r.mjs","sources":["../../../../libs/modules/locale-management/client/src/lib/features/queries/list-locale-profiles.query.ts"],"sourcesContent":["import {\n resolveCollectionSkip,\n resolveCollectionTake,\n type AXPCollectionQuery,\n type AXPCollectionQueryInput,\n type AXPQueryCollectionFetchResultPromise,\n} from '@acorex-platform/framework-shared/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessCollection,\n} from '@acorex-platform/framework-shared/core';\nimport { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';\nimport { AXPLocaleProfile } from '@acorex-platform/framework-client/common';\n\nimport { Injectable, inject } from '@angular/core';\n\nimport { AXMLocaleManagementService } from '../shared/locale-management.service';\n\n//#region ---- Types ----\n\nexport type AXMListLocaleProfilesQueryInput = AXPCollectionQueryInput;\n\nexport type AXMListLocaleProfilesQueryItem = AXPLocaleProfile;\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Built-in locale profile catalog — replaces the `locale-profiles` DI data source.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMListLocaleProfilesQuery\n implements AXPCollectionQuery<AXMListLocaleProfilesQueryInput, AXMListLocaleProfilesQueryItem>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly localeManagement = inject(AXMLocaleManagementService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMListLocaleProfilesQueryInput | null,\n ): AXPQueryCollectionFetchResultPromise<AXMListLocaleProfilesQueryItem> {\n try {\n let items = [...(await this.localeManagement.getLocaleProfiles())];\n\n if (input?.filter) {\n items = applyFilterArray(items, [input.filter]);\n }\n\n const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];\n const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'code' as const, dir: 'asc' as const }];\n items = applySortArray(items, sortOpt);\n\n const skip = resolveCollectionSkip(input?.skip);\n const take = resolveCollectionTake(input?.take);\n const total = items.length;\n const page = items.slice(skip, skip + take);\n\n return runtimeQuerySuccessCollection({ items: page, total });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Unknown error occurred',\n );\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AAwBA;AAEA;AAEA;;AAEG;MAEU,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAkCvE,IAAA;;;IA5BC,MAAM,KAAK,CACT,KAA8C,EAAA;AAE9C,QAAA,IAAI;AACF,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAElE,YAAA,IAAI,KAAK,EAAE,MAAM,EAAE;gBACjB,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD;AAEA,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACzF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,GAAG,EAAE,KAAc,EAAE,CAAC;AAChG,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;YAEtC,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;YAE3C,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC9D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,wBAAwB,CAClE;QACH;IACF;8GApCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
@@ -0,0 +1,101 @@
1
+ import { AXIRLocaleProfile, AXUSLocaleProfile, AXAULocaleProfile } from '@acorex/core/locale';
2
+
3
+ /**
4
+ * Temporary: `calendar.week.weekends` uses AXCalendarConfig.weekend indexes
5
+ * (what ax-calendar checks as dayOfWeek - 1), not JS Date#getDay().
6
+ * Fix properly in @acorex/core / @acorex/components later.
7
+ */
8
+ const profiles = [
9
+ {
10
+ ...AXIRLocaleProfile,
11
+ code: 'fa-IR',
12
+ title: 'Persian (Iran)',
13
+ nativeTitle: 'فارسی (ایران)',
14
+ calendar: {
15
+ ...AXIRLocaleProfile.calendar,
16
+ system: 'solar-hijri',
17
+ week: {
18
+ startsOn: 6,
19
+ weekends: [4, 5],
20
+ },
21
+ },
22
+ },
23
+ {
24
+ ...AXUSLocaleProfile,
25
+ code: 'en-US',
26
+ title: 'English (United States)',
27
+ nativeTitle: 'English (United States)',
28
+ calendar: {
29
+ ...AXUSLocaleProfile.calendar,
30
+ },
31
+ formats: {
32
+ ...AXUSLocaleProfile.formats,
33
+ date: {
34
+ ...(AXUSLocaleProfile.formats?.date ?? {}),
35
+ short: 'MM/DD/YYYY',
36
+ medium: 'MMM D, YYYY',
37
+ long: 'MMMM D, YYYY',
38
+ },
39
+ },
40
+ },
41
+ {
42
+ ...AXAULocaleProfile,
43
+ code: 'en-AU',
44
+ title: 'English (Australia)',
45
+ nativeTitle: 'English (Australia)',
46
+ calendar: {
47
+ ...AXAULocaleProfile.calendar,
48
+ },
49
+ formats: {
50
+ ...AXAULocaleProfile.formats,
51
+ date: {
52
+ ...(AXAULocaleProfile.formats?.date ?? {}),
53
+ short: 'DD/MM/YYYY',
54
+ medium: 'D/MM/YYYY',
55
+ long: 'D MMMM YYYY',
56
+ },
57
+ },
58
+ },
59
+ // en-NZ: same regional formats as en-AU until @acorex/core ships AXNZLocaleProfile.
60
+ {
61
+ ...AXAULocaleProfile,
62
+ code: 'en-NZ',
63
+ title: 'English (New Zealand)',
64
+ nativeTitle: 'English (New Zealand)',
65
+ localeInfo: {
66
+ ...AXAULocaleProfile.localeInfo,
67
+ code: 'en-NZ',
68
+ region: 'NZ',
69
+ timezone: 'Pacific/Auckland',
70
+ },
71
+ calendar: {
72
+ ...AXAULocaleProfile.calendar,
73
+ },
74
+ formats: {
75
+ ...AXAULocaleProfile.formats,
76
+ date: {
77
+ ...(AXAULocaleProfile.formats?.date ?? {}),
78
+ short: 'DD/MM/YYYY',
79
+ medium: 'D/MM/YYYY',
80
+ long: 'D MMMM YYYY',
81
+ },
82
+ numbers: {
83
+ ...AXAULocaleProfile.formats?.numbers,
84
+ currency: {
85
+ ...(AXAULocaleProfile.formats?.numbers?.currency ?? {}),
86
+ code: 'NZD',
87
+ },
88
+ },
89
+ },
90
+ i18nMeta: {
91
+ ...AXAULocaleProfile.i18nMeta,
92
+ supportedLanguages: ['en-NZ'],
93
+ fallbackLocales: ['en-US'],
94
+ },
95
+ },
96
+ ];
97
+ /** Default platform allow-list: every built-in locale profile code. */
98
+ const DEFAULT_AVAILABLE_LOCALE_PROFILE_CODES = profiles.map((p) => p.code);
99
+
100
+ export { DEFAULT_AVAILABLE_LOCALE_PROFILE_CODES, profiles };
101
+ //# sourceMappingURL=acorex-platform-module-locale-management-client-profiles-l46U-cgo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-locale-management-client-profiles-l46U-cgo.mjs","sources":["../../../../libs/modules/locale-management/client/src/lib/features/shared/data/profiles.ts"],"sourcesContent":["import { AXAULocaleProfile, AXIRLocaleProfile, AXUSLocaleProfile } from '@acorex/core/locale';\nimport { AXPLocaleProfile } from '@acorex-platform/framework-client/common';\n\n/**\n * Temporary: `calendar.week.weekends` uses AXCalendarConfig.weekend indexes\n * (what ax-calendar checks as dayOfWeek - 1), not JS Date#getDay().\n * Fix properly in @acorex/core / @acorex/components later.\n */\nexport const profiles: AXPLocaleProfile[] = [\n {\n ...AXIRLocaleProfile,\n code: 'fa-IR',\n title: 'Persian (Iran)',\n nativeTitle: 'فارسی (ایران)',\n calendar: {\n ...AXIRLocaleProfile.calendar,\n system: 'solar-hijri',\n week: {\n startsOn: 6,\n weekends: [4, 5],\n },\n },\n },\n {\n ...AXUSLocaleProfile,\n code: 'en-US',\n title: 'English (United States)',\n nativeTitle: 'English (United States)',\n calendar: {\n ...AXUSLocaleProfile.calendar,\n },\n formats: {\n ...AXUSLocaleProfile.formats,\n date: {\n ...(AXUSLocaleProfile.formats?.date ?? {}),\n short: 'MM/DD/YYYY',\n medium: 'MMM D, YYYY',\n long: 'MMMM D, YYYY',\n },\n },\n },\n {\n ...AXAULocaleProfile,\n code: 'en-AU',\n title: 'English (Australia)',\n nativeTitle: 'English (Australia)',\n calendar: {\n ...AXAULocaleProfile.calendar,\n },\n formats: {\n ...AXAULocaleProfile.formats,\n date: {\n ...(AXAULocaleProfile.formats?.date ?? {}),\n short: 'DD/MM/YYYY',\n medium: 'D/MM/YYYY',\n long: 'D MMMM YYYY',\n },\n },\n },\n // en-NZ: same regional formats as en-AU until @acorex/core ships AXNZLocaleProfile.\n {\n ...AXAULocaleProfile,\n code: 'en-NZ',\n title: 'English (New Zealand)',\n nativeTitle: 'English (New Zealand)',\n localeInfo: {\n ...AXAULocaleProfile.localeInfo,\n code: 'en-NZ',\n region: 'NZ',\n timezone: 'Pacific/Auckland',\n },\n calendar: {\n ...AXAULocaleProfile.calendar,\n },\n formats: {\n ...AXAULocaleProfile.formats,\n date: {\n ...(AXAULocaleProfile.formats?.date ?? {}),\n short: 'DD/MM/YYYY',\n medium: 'D/MM/YYYY',\n long: 'D MMMM YYYY',\n },\n numbers: {\n ...AXAULocaleProfile.formats?.numbers,\n currency: {\n ...(AXAULocaleProfile.formats?.numbers?.currency ?? {}),\n code: 'NZD',\n },\n },\n },\n i18nMeta: {\n ...AXAULocaleProfile.i18nMeta,\n supportedLanguages: ['en-NZ'],\n fallbackLocales: ['en-US'],\n },\n },\n];\n\n/** Default platform allow-list: every built-in locale profile code. */\nexport const DEFAULT_AVAILABLE_LOCALE_PROFILE_CODES: string[] = profiles.map((p) => p.code);\n"],"names":[],"mappings":"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"}