@acorex-platform/module-location-management-client 0.0.18 → 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.
Files changed (13) hide show
  1. package/fesm2022/{acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DmpN-yas.mjs → acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DECKrIBR.mjs} +13 -14
  2. package/fesm2022/acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DECKrIBR.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-location-management-client-contracts.mjs +57 -2400
  4. package/fesm2022/acorex-platform-module-location-management-client-contracts.mjs.map +1 -1
  5. package/fesm2022/{acorex-platform-module-location-management-client-create-location-with-assignment.command-D6VXtZRf.mjs → acorex-platform-module-location-management-client-create-location-with-assignment.command-Cl6KfruM.mjs} +17 -18
  6. package/fesm2022/acorex-platform-module-location-management-client-create-location-with-assignment.command-Cl6KfruM.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-location-management-client.mjs +141 -395
  8. package/fesm2022/acorex-platform-module-location-management-client.mjs.map +1 -1
  9. package/package.json +1 -1
  10. package/types/acorex-platform-module-location-management-client-contracts.d.ts +50 -47
  11. package/types/acorex-platform-module-location-management-client.d.ts +3 -14
  12. package/fesm2022/acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DmpN-yas.mjs.map +0 -1
  13. package/fesm2022/acorex-platform-module-location-management-client-create-location-with-assignment.command-D6VXtZRf.mjs.map +0 -1
@@ -1,21 +1,19 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, signal, effect, computed, HostBinding, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
- import { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
4
- import { AXPEntityService, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
5
- import { RootConfig, AXMLocationManagementPermissionsKeys, AXPLocationManagementMenuKeys, AXMLocationManagementDataSourceKeys, buildLocationAssignmentLocationSnapshot, buildLocationAssignmentPersonSnapshot } from '@acorex-platform/module-location-management-client/contracts';
3
+ import { AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
4
+ import { AXPEntityService, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
5
+ import { RootConfig, AXPPeopleOrganizationPermissionKeys, AXPLocationManagementMenuKeys, buildLocationAssignmentLocationSnapshot, buildLocationAssignmentPersonSnapshot } from '@acorex-platform/module-location-management-client/contracts';
6
6
  import { AXPSearchCommandProvider, createEntityCommandOptions, AXPSettingsService, AXPClipBoardService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
7
7
  import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
8
8
  import { AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_WIDGETS_EDITOR_CATEGORY, AXPValueWidgetComponent, AXPColumnWidgetComponent, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
9
9
  import * as i1 from '@angular/common';
10
10
  import { CommonModule } from '@angular/common';
11
11
  import { provideCommandSetups } from '@acorex-platform/framework-client/runtime';
12
- import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
13
- import { AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
14
- import { AXPWidgetsCatalog, AXPPlatformScope, formatAddressData, extractValue } from '@acorex-platform/framework-shared/core';
15
- import { AXDataSource } from '@acorex/cdk/common';
12
+ import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
16
13
  import { get, set, defaultTo, isEmpty, isEqual, isNil, isNull } from 'lodash';
17
14
  import { createSelectProperty, createBooleanProperty, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
18
15
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex-platform/framework-client/layout/widgets';
16
+ import { AXPPlatformScope, formatAddressData, extractValue, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';
19
17
  import * as i6 from '@acorex/components/button';
20
18
  import { AXButtonModule } from '@acorex/components/button';
21
19
  import * as i4 from '@acorex/components/decorators';
@@ -24,6 +22,7 @@ import * as i3 from '@acorex/components/form';
24
22
  import { AXFormModule } from '@acorex/components/form';
25
23
  import * as i5 from '@acorex/components/text-box';
26
24
  import { AXTextBoxModule } from '@acorex/components/text-box';
25
+ import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
27
26
  import { AXValidationModule } from '@acorex/core/validation';
28
27
  import { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';
29
28
  import * as i2 from '@angular/forms';
@@ -46,57 +45,30 @@ const LocationManagementManifest = {
46
45
  title: RootConfig.module.title,
47
46
  icon: RootConfig.module.icon,
48
47
  i18n: RootConfig.config.i18n,
48
+ type: 'platform',
49
+ domain: 'platform',
49
50
  required: true,
50
51
  // Module dependencies (optional)
51
52
  };
52
53
  //#endregion
53
54
 
55
+ //#endregion
56
+ //#region ---- Permission Definition Provider ----
57
+ /**
58
+ * Ensures People & Organization root exists for location-management.
59
+ */
54
60
  class AXMLocationManagementPermissionDefinitionProvider {
55
- constructor(injector) {
56
- this.injector = injector;
57
- this.translateService = this.injector.get(AXTranslationService);
58
- }
59
61
  async define(context) {
60
- const keys = AXMLocationManagementPermissionsKeys.LocationManagement;
61
- const moduleTitle = await this.translateService.translateAsync('@location-management:module.permissions.title');
62
- const moduleDescription = await this.translateService.translateAsync('@location-management:module.permissions.description');
63
- context.addGroup(RootConfig.module.name, moduleTitle, moduleDescription)
64
- // Locations Management
65
- .addPermission(keys.Locations.Management, await this.translateService.translateAsync('@location-management:locations.permissions.locations.title'), await this.translateService.translateAsync('@location-management:locations.permissions.locations.description'))
66
- .addChild(keys.Locations.View, await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.view.title'), await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.view.description'))
67
- .addChild(keys.Locations.Create, await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.create.title'), await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.create.description'))
68
- .addChild(keys.Locations.Edit, await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.edit.title'), await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.edit.description'))
69
- .addChild(keys.Locations.Delete, await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.delete.title'), await this.translateService.translateAsync('@location-management:locations.permissions.locations.actions.delete.description'))
70
- .endPermission()
71
- // Location Types Management
72
- .addPermission(keys.LocationTypes.Management, await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.title'), await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.description'))
73
- .addChild(keys.LocationTypes.View, await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.view.title'), await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.view.description'))
74
- .addChild(keys.LocationTypes.Create, await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.create.title'), await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.create.description'))
75
- .addChild(keys.LocationTypes.Edit, await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.edit.title'), await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.edit.description'))
76
- .addChild(keys.LocationTypes.Delete, await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.delete.title'), await this.translateService.translateAsync('@location-management:location-types.permissions.location-types.actions.delete.description'))
77
- .endPermission()
78
- // Location Roles Management
79
- .addPermission(keys.LocationRoles.Management, await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.title'), await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.description'))
80
- .addChild(keys.LocationRoles.View, await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.view.title'), await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.view.description'))
81
- .addChild(keys.LocationRoles.Create, await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.create.title'), await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.create.description'))
82
- .addChild(keys.LocationRoles.Edit, await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.edit.title'), await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.edit.description'))
83
- .addChild(keys.LocationRoles.Delete, await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.delete.title'), await this.translateService.translateAsync('@location-management:location-roles.permissions.location-roles.actions.delete.description'))
84
- .endPermission()
85
- // Geographic Regions Management
86
- .addPermission(keys.GeographicRegions.Management, await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.title'), await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.description'))
87
- .addChild(keys.GeographicRegions.View, await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.view.title'), await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.view.description'))
88
- .addChild(keys.GeographicRegions.Create, await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.create.title'), await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.create.description'))
89
- .addChild(keys.GeographicRegions.Edit, await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.edit.title'), await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.edit.description'))
90
- .addChild(keys.GeographicRegions.Delete, await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.delete.title'), await this.translateService.translateAsync('@location-management:geographic-regions.permissions.geographic-regions.actions.delete.description'))
91
- .endPermission()
92
- .endGroup();
62
+ const groups = AXPCommonPermissionGroupKeys;
63
+ const G = '@common:permission-groups';
64
+ context.addGroup(groups.PeopleOrganization.Root, `${G}.people-organization.title`, `${G}.people-organization.description`, { order: 10 });
93
65
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider }); }
96
68
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementPermissionDefinitionProvider, decorators: [{
98
70
  type: Injectable
99
- }], ctorParameters: () => [{ type: i0.Injector }] });
71
+ }] });
100
72
 
101
73
  //#region ---- Imports ----
102
74
  //#endregion
@@ -107,7 +79,7 @@ class AXMLocationManagementMenuProvider {
107
79
  }
108
80
  async provide(context) {
109
81
  const module = RootConfig.module;
110
- // Ensure Contacts root menu exists before adding items (avoids dependency on provider order)
82
+ const keys = AXPPeopleOrganizationPermissionKeys;
111
83
  const contactsMenu = context.find(AXPCommonMenuKeys.Contacts);
112
84
  if (!contactsMenu.exists) {
113
85
  context.addItems([
@@ -121,7 +93,6 @@ class AXMLocationManagementMenuProvider {
121
93
  },
122
94
  ]);
123
95
  }
124
- // Add Locations entity list under Contact root menu
125
96
  context.find(AXPCommonMenuKeys.Contacts).addItems([
126
97
  {
127
98
  name: AXPLocationManagementMenuKeys.Locations,
@@ -131,11 +102,10 @@ class AXMLocationManagementMenuProvider {
131
102
  priority: 40,
132
103
  policy: {
133
104
  features: [module.name],
134
- permissions: [AXMLocationManagementPermissionsKeys.LocationManagement.Locations.View],
105
+ permissions: [keys.Setup],
135
106
  },
136
107
  },
137
108
  ]);
138
- // Add LocationTypes and GeographicRegions under Configuration/Region
139
109
  context.find(AXPCommonMenuKeys.Region).addItems([
140
110
  {
141
111
  name: AXPLocationManagementMenuKeys.LocationTypes,
@@ -145,7 +115,7 @@ class AXMLocationManagementMenuProvider {
145
115
  priority: 1,
146
116
  policy: {
147
117
  features: [module.name],
148
- permissions: [AXMLocationManagementPermissionsKeys.LocationManagement.LocationTypes.View],
118
+ permissions: [keys.Setup],
149
119
  },
150
120
  },
151
121
  {
@@ -156,7 +126,7 @@ class AXMLocationManagementMenuProvider {
156
126
  priority: 2,
157
127
  policy: {
158
128
  features: [module.name],
159
- permissions: [AXMLocationManagementPermissionsKeys.LocationManagement.LocationRoles.View],
129
+ permissions: [keys.Setup],
160
130
  },
161
131
  },
162
132
  {
@@ -167,51 +137,15 @@ class AXMLocationManagementMenuProvider {
167
137
  priority: 3,
168
138
  policy: {
169
139
  features: [module.name],
170
- permissions: [AXMLocationManagementPermissionsKeys.LocationManagement.GeographicRegions.View],
140
+ permissions: [keys.Setup],
171
141
  },
172
142
  },
173
143
  ]);
174
144
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementMenuProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
176
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementMenuProvider }); }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementMenuProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
146
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementMenuProvider }); }
177
147
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementMenuProvider, decorators: [{
179
- type: Injectable
180
- }] });
181
-
182
- class AXMLocationManagementEntityProvider {
183
- preload() {
184
- const module = RootConfig.module.name;
185
- return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
186
- module: module,
187
- entity: entity.name,
188
- }));
189
- }
190
- async get(moduleName, entityName) {
191
- if (moduleName == RootConfig.module.name) {
192
- switch (entityName) {
193
- case RootConfig.entities.location.name:
194
- return (await import('@acorex-platform/module-location-management-client/contracts')).locationFactory();
195
- case RootConfig.entities.locationType.name:
196
- return (await import('@acorex-platform/module-location-management-client/contracts')).locationTypeFactory();
197
- case RootConfig.entities.locationRole.name:
198
- return (await import('@acorex-platform/module-location-management-client/contracts')).locationRoleFactory();
199
- case RootConfig.entities.geographicRegion.name:
200
- return (await import('@acorex-platform/module-location-management-client/contracts')).geographicRegionFactory();
201
- case RootConfig.entities.locationAssignment.name:
202
- return (await import('@acorex-platform/module-location-management-client/contracts')).locationAssignmentFactory();
203
- }
204
- }
205
- return null;
206
- }
207
- async list() {
208
- const m = RootConfig.module.name;
209
- return Promise.resolve(Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m })));
210
- }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
212
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementEntityProvider }); }
213
- }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementEntityProvider, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementMenuProvider, decorators: [{
215
149
  type: Injectable
216
150
  }] });
217
151
 
@@ -310,205 +244,6 @@ class AXMLocationManagementFeatureDefinitionProvider {
310
244
  }
311
245
  //#endregion
312
246
 
313
- class AXMGeographicRegionDataSourceDefinition {
314
- constructor() {
315
- this.entityService = inject(AXPEntityService);
316
- this.geographicRegionService = this.entityService
317
- .withEntity(RootConfig.module.name, RootConfig.entities.geographicRegion.name)
318
- .data();
319
- //#region ---- Country ----
320
- this.countries = {
321
- name: AXMLocationManagementDataSourceKeys.Countries,
322
- title: 'Countries',
323
- columns: [
324
- {
325
- name: 'code',
326
- title: 'Code',
327
- type: 'string',
328
- datatype: 'string',
329
- },
330
- {
331
- name: 'title',
332
- title: 'Title',
333
- type: 'string',
334
- datatype: 'string',
335
- },
336
- ],
337
- filters: [],
338
- textField: { name: 'title', title: 'Title' },
339
- valueField: { name: 'id', title: 'Id' },
340
- samples: [
341
- { id: 'US', title: 'United States' },
342
- { id: 'CA', title: 'Canada' },
343
- { id: 'GB', title: 'United Kingdom' },
344
- { id: 'AU', title: 'Australia' },
345
- { id: 'NZ', title: 'New Zealand' },
346
- { id: 'ZA', title: 'South Africa' },
347
- { id: 'IN', title: 'India' },
348
- ],
349
- source: () => {
350
- return new AXDataSource({
351
- pageSize: 50,
352
- key: 'id',
353
- load: async (e) => {
354
- const result = await this.geographicRegionService.query({
355
- ...e,
356
- filter: { field: 'type.code', operator: { type: 'equal' }, value: 'country' },
357
- sort: [{ field: 'title', dir: 'asc' }],
358
- });
359
- return {
360
- items: result.items,
361
- total: result.total,
362
- };
363
- },
364
- byKey: async (key) => {
365
- const item = await this.geographicRegionService.byKey(key);
366
- return item;
367
- },
368
- });
369
- },
370
- };
371
- //#endregion
372
- //#region ---- Provinces (States) ----
373
- this.provinces = {
374
- name: AXMLocationManagementDataSourceKeys.Provinces,
375
- title: 'Provinces',
376
- columns: [
377
- {
378
- name: 'code',
379
- title: 'Code',
380
- type: 'string',
381
- datatype: 'string',
382
- },
383
- {
384
- name: 'title',
385
- title: 'Title',
386
- type: 'string',
387
- datatype: 'string',
388
- },
389
- ],
390
- filters: [
391
- {
392
- field: 'parentId',
393
- title: 'Country',
394
- operator: { type: 'equal' },
395
- widget: {
396
- type: AXPWidgetsCatalog.selectFilter,
397
- options: {
398
- dataSource: AXMLocationManagementDataSourceKeys.Countries,
399
- valueField: 'id',
400
- textField: 'title',
401
- },
402
- },
403
- filterType: { advance: true, inline: true },
404
- },
405
- ],
406
- textField: { name: 'title', title: 'Title' },
407
- valueField: { name: 'id', title: 'Id' },
408
- source: () => {
409
- return new AXDataSource({
410
- pageSize: 50,
411
- key: 'id',
412
- load: async (e) => {
413
- console.log('[provinces datasource] load query:', { filter: e?.filter, take: e?.take, skip: e?.skip });
414
- const typeFilter = { field: 'type.code', operator: { type: 'equal' }, value: 'state' };
415
- const extraFilters = e?.filter?.filters ?? (e?.filter ? [e.filter] : []);
416
- const filter = extraFilters.length > 0
417
- ? { logic: 'and', filters: [typeFilter, ...extraFilters] }
418
- : typeFilter;
419
- console.log('[provinces datasource] extraFilters:', extraFilters, 'final filter:', filter);
420
- const result = await this.geographicRegionService.query({
421
- ...e,
422
- filter,
423
- sort: [{ field: 'title', dir: 'asc' }],
424
- });
425
- console.log('[provinces datasource] result:', result.items?.length, result.total);
426
- return {
427
- items: result.items,
428
- total: result.total,
429
- };
430
- },
431
- byKey: async (key) => {
432
- const item = await this.geographicRegionService.byKey(key);
433
- return item;
434
- },
435
- });
436
- },
437
- };
438
- //#endregion
439
- //#region ---- Cities ----
440
- this.cities = {
441
- name: AXMLocationManagementDataSourceKeys.Cities,
442
- title: 'Cities',
443
- columns: [
444
- {
445
- name: 'code',
446
- title: 'Code',
447
- type: 'string',
448
- datatype: 'string',
449
- },
450
- {
451
- name: 'title',
452
- title: 'Title',
453
- type: 'string',
454
- datatype: 'string',
455
- },
456
- ],
457
- filters: [
458
- {
459
- field: 'parentId',
460
- title: 'Province',
461
- operator: { type: 'equal' },
462
- widget: {
463
- type: AXPWidgetsCatalog.selectFilter,
464
- options: {
465
- dataSource: AXMLocationManagementDataSourceKeys.Provinces,
466
- valueField: 'id',
467
- textField: 'title',
468
- },
469
- },
470
- filterType: { advance: true, inline: true },
471
- },
472
- ],
473
- textField: { name: 'title', title: 'Title' },
474
- valueField: { name: 'id', title: 'Id' },
475
- source: () => {
476
- return new AXDataSource({
477
- pageSize: 50,
478
- key: 'id',
479
- load: async (e) => {
480
- console.log('[cities datasource] load query:', { filter: e?.filter, take: e?.take, skip: e?.skip });
481
- const typeFilter = { field: 'type.code', operator: { type: 'equal' }, value: 'city' };
482
- const extraFilters = e?.filter?.filters ?? (e?.filter ? [e.filter] : []);
483
- const filter = extraFilters.length > 0
484
- ? { logic: 'and', filters: [typeFilter, ...extraFilters] }
485
- : typeFilter;
486
- console.log('[cities datasource] extraFilters:', extraFilters, 'final filter:', filter);
487
- const result = await this.geographicRegionService.query({
488
- ...e,
489
- filter,
490
- sort: [{ field: 'title', dir: 'asc' }],
491
- });
492
- console.log('[cities datasource] result:', result.items?.length, result.total);
493
- return {
494
- items: result.items,
495
- total: result.total,
496
- };
497
- },
498
- byKey: async (key) => {
499
- const item = await this.geographicRegionService.byKey(key);
500
- return item;
501
- },
502
- });
503
- },
504
- };
505
- }
506
- //#endregion
507
- async items() {
508
- return [this.countries, this.provinces, this.cities];
509
- }
510
- }
511
-
512
247
  //#region ---- LocationAssignment nested hydration ----
513
248
  const LOCATION_ASSIGNMENT_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.locationAssignment.name}`;
514
249
  const LOCATION_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.location.name}`;
@@ -520,7 +255,7 @@ const PERSON_ENTITY = 'PersonCore.Person';
520
255
  const locationAssignmentLocationHydrateMiddleware = {
521
256
  target: { ops: ['getOne', 'getAll', 'query'], order: 13 },
522
257
  execute: async (ctx, next) => {
523
- const backend = inject(AXP_ENTITY_STORAGE_BACKEND);
258
+ const backend = ctx.entities;
524
259
  await next();
525
260
  if (ctx.entityName !== LOCATION_ASSIGNMENT_ENTITY) {
526
261
  return;
@@ -700,6 +435,7 @@ class AXPAddressWidgetService {
700
435
  allowCreate: 'quick',
701
436
  create: {
702
437
  enable: true,
438
+ title: '@location-management:locations.entities.location.fields.label-create-title',
703
439
  },
704
440
  expose: [
705
441
  { source: 'id', target: 'label.id' },
@@ -1021,7 +757,7 @@ class AXPAddressWidgetService {
1021
757
  * Uses titles from exposed fields, excludes coordinates
1022
758
  */
1023
759
  formatAddress(data) {
1024
- return formatAddressData(data);
760
+ return formatAddressData(data, this.translationService.getActiveLang() || 'en-US');
1025
761
  }
1026
762
  /**
1027
763
  * Collapse header parts: label title (semibold in template) + full address.
@@ -1150,11 +886,16 @@ class AXPAddressWidgetService {
1150
886
  return id?.trim() ? { id: id.trim() } : undefined;
1151
887
  }
1152
888
  async enrichLookupField(field) {
1153
- if (!field?.id || field.title?.trim()) {
889
+ if (!field?.id) {
1154
890
  return field;
1155
891
  }
892
+ const locale = this.translationService.getActiveLang() || 'en-US';
893
+ const existing = resolveMultiLanguageString(field.title, locale).trim();
894
+ if (existing) {
895
+ return { id: field.id, title: existing };
896
+ }
1156
897
  const title = await this.resolveGeographicRegionTitle(field.id);
1157
- return title ? { id: field.id, title } : field;
898
+ return title ? { id: field.id, title } : { id: field.id };
1158
899
  }
1159
900
  async resolveGeographicRegionTitle(id) {
1160
901
  if (this.geographicTitleCache.has(id)) {
@@ -1163,8 +904,9 @@ class AXPAddressWidgetService {
1163
904
  }
1164
905
  try {
1165
906
  const row = await this.entityService.withEntity(GEOGRAPHIC_REGION_ENTITY).data().byKey(id);
1166
- const title = extractValue(get(row, 'title'));
1167
- const normalized = title?.trim() ?? '';
907
+ const locale = this.translationService.getActiveLang() || 'en-US';
908
+ const raw = get(row, 'title');
909
+ const normalized = resolveMultiLanguageString(raw, locale).trim();
1168
910
  this.geographicTitleCache.set(id, normalized);
1169
911
  return normalized || undefined;
1170
912
  }
@@ -1173,10 +915,10 @@ class AXPAddressWidgetService {
1173
915
  return undefined;
1174
916
  }
1175
917
  }
1176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1177
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetService, providedIn: 'root' }); }
918
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
919
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetService, providedIn: 'root' }); }
1178
920
  }
1179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetService, decorators: [{
921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetService, decorators: [{
1180
922
  type: Injectable,
1181
923
  args: [{ providedIn: 'root' }]
1182
924
  }], ctorParameters: () => [] });
@@ -1186,11 +928,15 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1186
928
  super(...arguments);
1187
929
  this.addressService = inject(AXPAddressWidgetService);
1188
930
  /** Collapsible mode: true = panel collapsed (only full address visible), false = expanded (edit button visible) */
1189
- this.collapsibleCollapsed = signal(true, ...(ngDevMode ? [{ debugName: "collapsibleCollapsed" }] : /* istanbul ignore next */ []));
1190
- this.collapsibleHeaderLabel = signal(null, ...(ngDevMode ? [{ debugName: "collapsibleHeaderLabel" }] : /* istanbul ignore next */ []));
1191
- this.collapsibleHeaderAddress = signal('', ...(ngDevMode ? [{ debugName: "collapsibleHeaderAddress" }] : /* istanbul ignore next */ []));
931
+ this.collapsibleCollapsed = signal(true, /* @ts-ignore */
932
+ ...(ngDevMode ? [{ debugName: "collapsibleCollapsed" }] : /* istanbul ignore next */ []));
933
+ this.collapsibleHeaderLabel = signal(null, /* @ts-ignore */
934
+ ...(ngDevMode ? [{ debugName: "collapsibleHeaderLabel" }] : /* istanbul ignore next */ []));
935
+ this.collapsibleHeaderAddress = signal('', /* @ts-ignore */
936
+ ...(ngDevMode ? [{ debugName: "collapsibleHeaderAddress" }] : /* istanbul ignore next */ []));
1192
937
  /** Bumped on parent discard so the nested layout renderer remounts with reverted context. */
1193
- this.layoutRendererGeneration = signal(0, ...(ngDevMode ? [{ debugName: "layoutRendererGeneration" }] : /* istanbul ignore next */ []));
938
+ this.layoutRendererGeneration = signal(0, /* @ts-ignore */
939
+ ...(ngDevMode ? [{ debugName: "layoutRendererGeneration" }] : /* istanbul ignore next */ []));
1194
940
  this.parentContextWasRestored = false;
1195
941
  this.geographicDefaultsInitialized = false;
1196
942
  this.suppressContextSync = false;
@@ -1205,7 +951,8 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1205
951
  this.collapsibleCollapsed.set(false);
1206
952
  this.blockAutoCollapseUntil = Date.now() + 300;
1207
953
  }
1208
- }, ...(ngDevMode ? [{ debugName: "#expandEmptyAddressEffect" }] : /* istanbul ignore next */ []));
954
+ }, /* @ts-ignore */
955
+ ...(ngDevMode ? [{ debugName: "#expandEmptyAddressEffect" }] : /* istanbul ignore next */ []));
1209
956
  this.#resetNestedFormOnDiscard = effect(() => {
1210
957
  if (this.addressMode() !== 'expandable') {
1211
958
  return;
@@ -1215,7 +962,8 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1215
962
  this.layoutRendererGeneration.update((generation) => generation + 1);
1216
963
  }
1217
964
  this.parentContextWasRestored = isRestored;
1218
- }, ...(ngDevMode ? [{ debugName: "#resetNestedFormOnDiscard" }] : /* istanbul ignore next */ []));
965
+ }, /* @ts-ignore */
966
+ ...(ngDevMode ? [{ debugName: "#resetNestedFormOnDiscard" }] : /* istanbul ignore next */ []));
1219
967
  this.#collapsibleHeaderEffect = effect(() => {
1220
968
  const value = this.valueAsObject();
1221
969
  this.formattedAddress();
@@ -1226,7 +974,8 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1226
974
  this.collapsibleHeaderLabel.set(header.labelText);
1227
975
  this.collapsibleHeaderAddress.set(header.addressText);
1228
976
  });
1229
- }, ...(ngDevMode ? [{ debugName: "#collapsibleHeaderEffect" }] : /* istanbul ignore next */ []));
977
+ }, /* @ts-ignore */
978
+ ...(ngDevMode ? [{ debugName: "#collapsibleHeaderEffect" }] : /* istanbul ignore next */ []));
1230
979
  this.#applyGeographicDefaultsEffect = effect(() => {
1231
980
  if (!this.useGeographicDefaults() || this.geographicDefaultsInitialized) {
1232
981
  return;
@@ -1243,14 +992,22 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1243
992
  normalized.full = this.addressService.formatAddress(normalized);
1244
993
  this.commitAddressValue(normalized);
1245
994
  });
1246
- }, ...(ngDevMode ? [{ debugName: "#applyGeographicDefaultsEffect" }] : /* istanbul ignore next */ []));
1247
- this.addressMode = computed(() => extractValue(this.options()['mode']) || 'simple', ...(ngDevMode ? [{ debugName: "addressMode" }] : /* istanbul ignore next */ []));
1248
- this.placeholder = computed(() => this.options()['placeholder'] || 'Enter address...', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
1249
- this.labelEntity = computed(() => this.options()['labelEntity'], ...(ngDevMode ? [{ debugName: "labelEntity" }] : /* istanbul ignore next */ []));
1250
- this.useGeographicDefaults = computed(() => this.options()['useGeographicDefaults'] ?? true, ...(ngDevMode ? [{ debugName: "useGeographicDefaults" }] : /* istanbul ignore next */ []));
1251
- this.disabled = computed(() => this.options()['disabled'] ?? false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
1252
- this.hasLabel = computed(() => this.options()['hasLabel'] ?? false, ...(ngDevMode ? [{ debugName: "hasLabel" }] : /* istanbul ignore next */ []));
1253
- this.hasMap = computed(() => this.options()['hasMap'] ?? true, ...(ngDevMode ? [{ debugName: "hasMap" }] : /* istanbul ignore next */ []));
995
+ }, /* @ts-ignore */
996
+ ...(ngDevMode ? [{ debugName: "#applyGeographicDefaultsEffect" }] : /* istanbul ignore next */ []));
997
+ this.addressMode = computed(() => extractValue(this.options()['mode']) || 'simple', /* @ts-ignore */
998
+ ...(ngDevMode ? [{ debugName: "addressMode" }] : /* istanbul ignore next */ []));
999
+ this.placeholder = computed(() => this.options()['placeholder'] || 'Enter address...', /* @ts-ignore */
1000
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
1001
+ this.labelEntity = computed(() => this.options()['labelEntity'], /* @ts-ignore */
1002
+ ...(ngDevMode ? [{ debugName: "labelEntity" }] : /* istanbul ignore next */ []));
1003
+ this.useGeographicDefaults = computed(() => this.options()['useGeographicDefaults'] ?? true, /* @ts-ignore */
1004
+ ...(ngDevMode ? [{ debugName: "useGeographicDefaults" }] : /* istanbul ignore next */ []));
1005
+ this.disabled = computed(() => this.options()['disabled'] ?? false, /* @ts-ignore */
1006
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
1007
+ this.hasLabel = computed(() => this.options()['hasLabel'] ?? false, /* @ts-ignore */
1008
+ ...(ngDevMode ? [{ debugName: "hasLabel" }] : /* istanbul ignore next */ []));
1009
+ this.hasMap = computed(() => this.options()['hasMap'] ?? true, /* @ts-ignore */
1010
+ ...(ngDevMode ? [{ debugName: "hasMap" }] : /* istanbul ignore next */ []));
1254
1011
  this.format = computed(() => {
1255
1012
  if (this.hasLabel() ||
1256
1013
  this.addressMode() === 'popup' ||
@@ -1258,22 +1015,27 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1258
1015
  return 'object';
1259
1016
  }
1260
1017
  return 'string';
1261
- }, ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
1262
- this.valueAsObject = computed(() => this.toObject(this.getValue()), ...(ngDevMode ? [{ debugName: "valueAsObject" }] : /* istanbul ignore next */ []));
1018
+ }, /* @ts-ignore */
1019
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
1020
+ this.valueAsObject = computed(() => this.toObject(this.getValue()), /* @ts-ignore */
1021
+ ...(ngDevMode ? [{ debugName: "valueAsObject" }] : /* istanbul ignore next */ []));
1263
1022
  this.formattedAddress = computed(() => {
1264
1023
  const value = this.valueAsObject();
1265
1024
  return value.full || this.addressService.formatAddress(value);
1266
- }, ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1025
+ }, /* @ts-ignore */
1026
+ ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1267
1027
  /** Layout node from create().flex().build() for inline renderer (expandable mode). */
1268
1028
  this.addressFormLayout = computed(() => this.addressService.getAddressFormLayout({
1269
1029
  hasLabel: this.hasLabel(),
1270
1030
  labelEntity: this.labelEntity(),
1271
1031
  hasMap: this.hasMap(),
1272
- }), ...(ngDevMode ? [{ debugName: "addressFormLayout" }] : /* istanbul ignore next */ []));
1032
+ }), /* @ts-ignore */
1033
+ ...(ngDevMode ? [{ debugName: "addressFormLayout" }] : /* istanbul ignore next */ []));
1273
1034
  /** Context for inline address form (expandable); includes showMap for map toggle. */
1274
1035
  this.collapsibleFormContext = computed(() => this.addressService.buildAddressFormContext(this.valueAsObject(), {
1275
1036
  hasMap: this.hasMap(),
1276
- }), ...(ngDevMode ? [{ debugName: "collapsibleFormContext" }] : /* istanbul ignore next */ []));
1037
+ }), /* @ts-ignore */
1038
+ ...(ngDevMode ? [{ debugName: "collapsibleFormContext" }] : /* istanbul ignore next */ []));
1277
1039
  }
1278
1040
  /** Expand new repeater rows so users can enter values without clicking the header again. */
1279
1041
  #expandEmptyAddressEffect;
@@ -1368,8 +1130,8 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1368
1130
  get __class() {
1369
1131
  return 'block flex-1';
1370
1132
  }
1371
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1372
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPAddressWidgetEditComponent, isStandalone: true, selector: "axp-address-widget-edit", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
1133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAddressWidgetEditComponent, isStandalone: true, selector: "axp-address-widget-edit", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
1373
1135
  @if (addressMode() === 'simple') {
1374
1136
  <div class="grid grid-cols-12 gap-4 auto-cols-max">
1375
1137
  <ax-text-box
@@ -1384,7 +1146,7 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1384
1146
  @for (validation of validationRules(); track $index) {
1385
1147
  <ax-validation-rule
1386
1148
  [rule]="validation.rule"
1387
- [message]="validation.options?.message"
1149
+ [message]="$safeNavigationMigration(validation.options?.message)"
1388
1150
  [options]="validation.options"
1389
1151
  ></ax-validation-rule>
1390
1152
  }
@@ -1468,7 +1230,7 @@ class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent {
1468
1230
  }
1469
1231
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i3.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXAccordionModule }, { kind: "component", type: i7.AXAccordionItemComponent, selector: "ax-accordion-item", inputs: ["isCollapsed", "icon", "textdecoration", "caption", "isLoading", "headerTemplate", "look", "disabled"], outputs: ["isCollapsedChange", "isLoadingChange", "onClick"] }, { kind: "component", type: i7.AXAccordionGroupComponent, selector: "ax-accordion-group", inputs: ["accordion", "activeIndex", "look", "collapsedOnItemClick"], outputs: ["activeIndexChange"] }, { kind: "component", type: AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1470
1232
  }
1471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetEditComponent, decorators: [{
1233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetEditComponent, decorators: [{
1472
1234
  type: Component,
1473
1235
  args: [{
1474
1236
  selector: 'axp-address-widget-edit',
@@ -1487,7 +1249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1487
1249
  @for (validation of validationRules(); track $index) {
1488
1250
  <ax-validation-rule
1489
1251
  [rule]="validation.rule"
1490
- [message]="validation.options?.message"
1252
+ [message]="$safeNavigationMigration(validation.options?.message)"
1491
1253
  [options]="validation.options"
1492
1254
  ></ax-validation-rule>
1493
1255
  }
@@ -1598,23 +1360,28 @@ class AXPAddressWidgetViewComponent extends AXPValueWidgetComponent {
1598
1360
  constructor() {
1599
1361
  super(...arguments);
1600
1362
  this.addressService = inject(AXPAddressWidgetService);
1601
- this.hasLabel = computed(() => this.options()['hasLabel'] ?? false, ...(ngDevMode ? [{ debugName: "hasLabel" }] : /* istanbul ignore next */ []));
1602
- this.internalValue = computed(() => this.addressService.normalizeAddressData(this.getValue()), ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
1603
- this.labelText = computed(() => this.internalValue().label?.title?.trim() ?? '', ...(ngDevMode ? [{ debugName: "labelText" }] : /* istanbul ignore next */ []));
1363
+ this.hasLabel = computed(() => this.options()['hasLabel'] ?? false, /* @ts-ignore */
1364
+ ...(ngDevMode ? [{ debugName: "hasLabel" }] : /* istanbul ignore next */ []));
1365
+ this.internalValue = computed(() => this.addressService.normalizeAddressData(this.getValue()), /* @ts-ignore */
1366
+ ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
1367
+ this.labelText = computed(() => this.internalValue().label?.title?.trim() ?? '', /* @ts-ignore */
1368
+ ...(ngDevMode ? [{ debugName: "labelText" }] : /* istanbul ignore next */ []));
1604
1369
  this.formattedAddress = computed(() => {
1605
1370
  const value = this.internalValue();
1606
1371
  return value.full || this.addressService.formatAddress(value);
1607
- }, ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1372
+ }, /* @ts-ignore */
1373
+ ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1608
1374
  this.hasValue = computed(() => {
1609
1375
  const rawValue = this.getValue();
1610
1376
  if (isNull(rawValue))
1611
1377
  return false;
1612
1378
  const value = this.addressService.normalizeAddressData(rawValue);
1613
1379
  return !isEmpty(value.full);
1614
- }, ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
1380
+ }, /* @ts-ignore */
1381
+ ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
1615
1382
  }
1616
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1617
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPAddressWidgetViewComponent, isStandalone: true, selector: "axp-address-widget-view", usesInheritance: true, ngImport: i0, template: `
1383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAddressWidgetViewComponent, isStandalone: true, selector: "axp-address-widget-view", usesInheritance: true, ngImport: i0, template: `
1618
1385
  @if (hasValue()) {
1619
1386
  <div class="flex gap-2 items-center">
1620
1387
  <div class="flex gap-2 group items-center justify-center truncate">
@@ -1629,7 +1396,7 @@ class AXPAddressWidgetViewComponent extends AXPValueWidgetComponent {
1629
1396
  }
1630
1397
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$1.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1631
1398
  }
1632
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetViewComponent, decorators: [{
1399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetViewComponent, decorators: [{
1633
1400
  type: Component,
1634
1401
  args: [{
1635
1402
  selector: 'axp-address-widget-view',
@@ -1667,22 +1434,25 @@ class AXPAddressWidgetColumnComponent extends AXPColumnWidgetComponent {
1667
1434
  if (!raw)
1668
1435
  return null;
1669
1436
  return this.addressService.normalizeAddressData(raw);
1670
- }, ...(ngDevMode ? [{ debugName: "normalizedValue" }] : /* istanbul ignore next */ []));
1437
+ }, /* @ts-ignore */
1438
+ ...(ngDevMode ? [{ debugName: "normalizedValue" }] : /* istanbul ignore next */ []));
1671
1439
  this.formattedAddress = computed(() => {
1672
1440
  const value = this.normalizedValue();
1673
1441
  if (!value)
1674
1442
  return '';
1675
1443
  return value.full || this.addressService.formatAddress(value);
1676
- }, ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1444
+ }, /* @ts-ignore */
1445
+ ...(ngDevMode ? [{ debugName: "formattedAddress" }] : /* istanbul ignore next */ []));
1677
1446
  this.hasValue = computed(() => {
1678
1447
  const value = this.normalizedValue();
1679
1448
  if (!value)
1680
1449
  return false;
1681
1450
  return !isEmpty(value.full);
1682
- }, ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
1451
+ }, /* @ts-ignore */
1452
+ ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
1683
1453
  }
1684
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1685
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPAddressWidgetColumnComponent, isStandalone: true, selector: "axp-address-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
1454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAddressWidgetColumnComponent, isStandalone: true, selector: "axp-address-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
1686
1456
  @if (hasValue()) {
1687
1457
  <div class="flex justify-start items-center gap-2 group w-fit">
1688
1458
  <span class="truncate" [title]="formattedAddress()">{{ formattedAddress() }}</span>
@@ -1696,7 +1466,7 @@ class AXPAddressWidgetColumnComponent extends AXPColumnWidgetComponent {
1696
1466
  }
1697
1467
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1698
1468
  }
1699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAddressWidgetColumnComponent, decorators: [{
1469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAddressWidgetColumnComponent, decorators: [{
1700
1470
  type: Component,
1701
1471
  args: [{
1702
1472
  selector: 'axp-address-widget-column',
@@ -1735,18 +1505,18 @@ class AXMLocationManagementWidgetsProvider {
1735
1505
  getWidgets() {
1736
1506
  return LOCATION_WIDGETS;
1737
1507
  }
1738
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementWidgetsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1739
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementWidgetsProvider }); }
1508
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementWidgetsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1509
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementWidgetsProvider }); }
1740
1510
  }
1741
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementWidgetsProvider, decorators: [{
1511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementWidgetsProvider, decorators: [{
1742
1512
  type: Injectable
1743
1513
  }] });
1744
1514
 
1745
1515
  class AXMLocationManagementModule {
1746
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1747
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementModule, imports: [CommonModule,
1516
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1517
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementModule, imports: [CommonModule,
1748
1518
  AXPWidgetCoreModule] }); }
1749
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementModule, providers: [
1519
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementModule, providers: [
1750
1520
  // Module Manifest Provider
1751
1521
  {
1752
1522
  provide: AXP_MODULE_MANIFEST_PROVIDER,
@@ -1764,11 +1534,6 @@ class AXMLocationManagementModule {
1764
1534
  useClass: AXMLocationManagementMenuProvider,
1765
1535
  multi: true,
1766
1536
  },
1767
- {
1768
- provide: AXP_ENTITY_DEFINITION_LOADER,
1769
- useClass: AXMLocationManagementEntityProvider,
1770
- multi: true,
1771
- },
1772
1537
  {
1773
1538
  provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
1774
1539
  multi: true,
@@ -1789,11 +1554,6 @@ class AXMLocationManagementModule {
1789
1554
  useClass: AXMLocationManagementFeatureDefinitionProvider,
1790
1555
  multi: true,
1791
1556
  },
1792
- {
1793
- provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
1794
- useClass: AXMGeographicRegionDataSourceDefinition,
1795
- multi: true,
1796
- },
1797
1557
  {
1798
1558
  provide: AXP_WIDGET_DEFINITION_PROVIDER,
1799
1559
  useClass: AXMLocationManagementWidgetsProvider,
@@ -1802,17 +1562,17 @@ class AXMLocationManagementModule {
1802
1562
  provideCommandSetups([
1803
1563
  {
1804
1564
  key: `${RootConfig.module.name}.${RootConfig.entities.locationAssignment.name}:AssignExistingLocation`,
1805
- command: () => import('./acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DmpN-yas.mjs').then((c) => c.AXMLocationAssignmentAssignExistingLocationCommand),
1565
+ command: () => import('./acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DECKrIBR.mjs').then((c) => c.AXMLocationAssignmentAssignExistingLocationCommand),
1806
1566
  },
1807
1567
  {
1808
1568
  key: `${RootConfig.module.name}.${RootConfig.entities.locationAssignment.name}:CreateWithNewLocation`,
1809
- command: () => import('./acorex-platform-module-location-management-client-create-location-with-assignment.command-D6VXtZRf.mjs').then((c) => c.AXMLocationAssignmentCreateWithNewLocationCommand),
1569
+ command: () => import('./acorex-platform-module-location-management-client-create-location-with-assignment.command-Cl6KfruM.mjs').then((c) => c.AXMLocationAssignmentCreateWithNewLocationCommand),
1810
1570
  },
1811
1571
  ]),
1812
1572
  ], imports: [CommonModule,
1813
1573
  AXPWidgetCoreModule] }); }
1814
1574
  }
1815
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementModule, decorators: [{
1575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementModule, decorators: [{
1816
1576
  type: NgModule,
1817
1577
  args: [{
1818
1578
  imports: [
@@ -1839,11 +1599,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1839
1599
  useClass: AXMLocationManagementMenuProvider,
1840
1600
  multi: true,
1841
1601
  },
1842
- {
1843
- provide: AXP_ENTITY_DEFINITION_LOADER,
1844
- useClass: AXMLocationManagementEntityProvider,
1845
- multi: true,
1846
- },
1847
1602
  {
1848
1603
  provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
1849
1604
  multi: true,
@@ -1864,11 +1619,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1864
1619
  useClass: AXMLocationManagementFeatureDefinitionProvider,
1865
1620
  multi: true,
1866
1621
  },
1867
- {
1868
- provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
1869
- useClass: AXMGeographicRegionDataSourceDefinition,
1870
- multi: true,
1871
- },
1872
1622
  {
1873
1623
  provide: AXP_WIDGET_DEFINITION_PROVIDER,
1874
1624
  useClass: AXMLocationManagementWidgetsProvider,
@@ -1877,11 +1627,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1877
1627
  provideCommandSetups([
1878
1628
  {
1879
1629
  key: `${RootConfig.module.name}.${RootConfig.entities.locationAssignment.name}:AssignExistingLocation`,
1880
- command: () => import('./acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DmpN-yas.mjs').then((c) => c.AXMLocationAssignmentAssignExistingLocationCommand),
1630
+ command: () => import('./acorex-platform-module-location-management-client-assign-existing-location-to-party.command-DECKrIBR.mjs').then((c) => c.AXMLocationAssignmentAssignExistingLocationCommand),
1881
1631
  },
1882
1632
  {
1883
1633
  key: `${RootConfig.module.name}.${RootConfig.entities.locationAssignment.name}:CreateWithNewLocation`,
1884
- command: () => import('./acorex-platform-module-location-management-client-create-location-with-assignment.command-D6VXtZRf.mjs').then((c) => c.AXMLocationAssignmentCreateWithNewLocationCommand),
1634
+ command: () => import('./acorex-platform-module-location-management-client-create-location-with-assignment.command-Cl6KfruM.mjs').then((c) => c.AXMLocationAssignmentCreateWithNewLocationCommand),
1885
1635
  },
1886
1636
  ]),
1887
1637
  ]
@@ -1891,6 +1641,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1891
1641
  class AXMLocationManagementService {
1892
1642
  constructor() {
1893
1643
  this.entityService = inject(AXPEntityService);
1644
+ this.translationService = inject(AXTranslationService);
1894
1645
  this.geographicRegionDataAccessor = this.entityService
1895
1646
  .withEntity(RootConfig.module.name, RootConfig.entities.geographicRegion.name)
1896
1647
  .data();
@@ -1902,12 +1653,7 @@ class AXMLocationManagementService {
1902
1653
  filter: { field: 'type', operator: { type: 'equal' }, value: 'country' },
1903
1654
  sort: [{ field: 'title', dir: 'asc' }],
1904
1655
  });
1905
- return result.items.map((m) => ({
1906
- code: m.code,
1907
- title: m.title,
1908
- id: m.id,
1909
- timezone: m.timezone,
1910
- }));
1656
+ return result.items.map((m) => this.toGeoLocation(m));
1911
1657
  }
1912
1658
  async getProvinces(countryId) {
1913
1659
  const result = await this.geographicRegionDataAccessor.query({
@@ -1916,12 +1662,7 @@ class AXMLocationManagementService {
1916
1662
  filter: { field: 'type', operator: { type: 'equal' }, value: 'state' },
1917
1663
  sort: [{ field: 'title', dir: 'asc' }],
1918
1664
  });
1919
- return result.items.map((m) => ({
1920
- code: m.code,
1921
- title: m.title,
1922
- id: m.id,
1923
- timezone: m.timezone,
1924
- }));
1665
+ return result.items.map((m) => this.toGeoLocation(m));
1925
1666
  }
1926
1667
  async getCities(filter) {
1927
1668
  const result = await this.geographicRegionDataAccessor.query({
@@ -1930,20 +1671,25 @@ class AXMLocationManagementService {
1930
1671
  filter: { field: 'type', operator: { type: 'equal' }, value: 'city' },
1931
1672
  sort: [{ field: 'title', dir: 'asc' }],
1932
1673
  });
1933
- return result.items.map((m) => ({
1934
- code: m.code,
1935
- title: m.title,
1936
- id: m.id,
1937
- timezone: m.timezone,
1938
- }));
1674
+ return result.items.map((m) => this.toGeoLocation(m));
1675
+ }
1676
+ toGeoLocation(row) {
1677
+ const locale = this.translationService.getActiveLang() || 'en-US';
1678
+ const timezone = typeof row.timezone === 'string' ? row.timezone : (row.timezone?.code ?? undefined);
1679
+ return {
1680
+ id: row.id,
1681
+ code: row.code,
1682
+ title: resolveMultiLanguageString(row.title, locale),
1683
+ timezone,
1684
+ };
1939
1685
  }
1940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1941
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementService, providedIn: 'root' }); }
1686
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1687
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementService, providedIn: 'root' }); }
1942
1688
  }
1943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLocationManagementService, decorators: [{
1689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLocationManagementService, decorators: [{
1944
1690
  type: Injectable,
1945
1691
  args: [{
1946
- providedIn: 'root'
1692
+ providedIn: 'root',
1947
1693
  }]
1948
1694
  }] });
1949
1695
 
@@ -1951,5 +1697,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1951
1697
  * Generated bundle index. Do not edit.
1952
1698
  */
1953
1699
 
1954
- export { AXMLocationManagementEntityProvider, AXMLocationManagementMenuProvider, AXMLocationManagementModule, AXMLocationManagementService, AXMSearchCommandProvider, AXMSettingProvider };
1700
+ export { AXMLocationManagementMenuProvider, AXMLocationManagementModule, AXMLocationManagementService, AXMSearchCommandProvider, AXMSettingProvider };
1955
1701
  //# sourceMappingURL=acorex-platform-module-location-management-client.mjs.map