@acorex/platform 19.2.12 → 19.2.15

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 (128) hide show
  1. package/auth/lib/session.service.d.ts +8 -2
  2. package/common/index.d.ts +0 -1
  3. package/common/lib/app/application.types.d.ts +2 -2
  4. package/common/lib/common.module.d.ts +1 -2
  5. package/common/lib/data/index.d.ts +0 -4
  6. package/common/lib/file-type/file-type.provider.d.ts +3 -3
  7. package/common/lib/file-type/file-type.types.d.ts +12 -0
  8. package/common/lib/layout/menu/menu.types.d.ts +3 -2
  9. package/common/lib/layout/theme/components/slots/navbar-slot.component.d.ts +2 -4
  10. package/common/lib/search/search.types.d.ts +3 -5
  11. package/common/lib/settings/settings.service.d.ts +1 -1
  12. package/common/lib/utils/index.d.ts +0 -1
  13. package/common/lib/utils/regional-util.service.d.ts +2 -2
  14. package/core/index.d.ts +1 -5
  15. package/core/lib/data/data-generator.d.ts +26 -0
  16. package/core/lib/data/index.d.ts +1 -0
  17. package/core/lib/directives/element-data.directive.d.ts +20 -0
  18. package/core/lib/directives/index.d.ts +1 -0
  19. package/core/lib/event-service/event.service.d.ts +43 -0
  20. package/core/lib/event-service/index.d.ts +1 -0
  21. package/{common/lib/utils → core/lib/expression-evaluator}/expression-evaluator.service.d.ts +1 -1
  22. package/core/lib/expression-evaluator/index.d.ts +1 -0
  23. package/core/lib/index.d.ts +6 -0
  24. package/core/lib/types.d.ts +17 -0
  25. package/core/lib/utils/data-conditioner.d.ts +5 -0
  26. package/core/lib/utils/index.d.ts +4 -0
  27. package/fesm2022/acorex-platform-auth.mjs +53 -17
  28. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-common.mjs +606 -869
  30. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-core.mjs +364 -12
  32. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  33. package/fesm2022/acorex-platform-layout-builder.mjs +14 -3
  34. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  35. package/fesm2022/acorex-platform-layout-designer.mjs +99 -52
  36. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  37. package/fesm2022/acorex-platform-layout-entity.mjs +673 -34
  38. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-layout-search.mjs +4 -3
  40. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-layout-setting.mjs +4 -3
  42. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  43. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DrHsaotw.mjs → acorex-platform-themes-default-entity-master-list-view.component-ewOei4ta.mjs} +11 -3
  44. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-ewOei4ta.mjs.map +1 -0
  45. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BGUrwL2P.mjs → acorex-platform-themes-default-entity-master-single-view.component-DcSk0ia4.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BGUrwL2P.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-DcSk0ia4.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-themes-default-search-popup.component-Ccouaqp4.mjs → acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs} +4 -4
  48. package/fesm2022/{acorex-platform-themes-default-search-popup.component-Ccouaqp4.mjs.map → acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs.map} +1 -1
  49. package/fesm2022/{acorex-platform-themes-default-setting-page.component-CJoBVXTl.mjs → acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs} +5 -4
  50. package/fesm2022/acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-setting-view.component-CsCug3Vu.mjs → acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs} +2 -2
  52. package/fesm2022/{acorex-platform-themes-default-setting-view.component-CsCug3Vu.mjs.map → acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-themes-default-theme-palette-preview.page-D-yzbISw.mjs → acorex-platform-themes-default-theme-palette-preview.page-DkjAgWLn.mjs} +2 -2
  54. package/fesm2022/{acorex-platform-themes-default-theme-palette-preview.page-D-yzbISw.mjs.map → acorex-platform-themes-default-theme-palette-preview.page-DkjAgWLn.mjs.map} +1 -1
  55. package/fesm2022/acorex-platform-themes-default.mjs +36 -24
  56. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-themes-shared.mjs +27 -4
  58. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  59. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-Ba_DdBAl.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-Emh145xN.mjs} +3 -3
  60. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-Ba_DdBAl.mjs.map → acorex-platform-widgets-tabular-data-edit-popup.component-Emh145xN.mjs.map} +1 -1
  61. package/fesm2022/acorex-platform-widgets.mjs +1083 -98
  62. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  63. package/fesm2022/acorex-platform-workflow.mjs +17 -8
  64. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  65. package/layout/builder/lib/builder/datasource-provider.service.d.ts +2 -2
  66. package/layout/builder/lib/builder/metadata/metadata.types.d.ts +2 -1
  67. package/layout/builder/lib/builder/widget-map.d.ts +5 -0
  68. package/layout/builder/lib/builder/widget.types.d.ts +1 -1
  69. package/layout/designer/lib/designer/designer.component.d.ts +2 -1
  70. package/layout/designer/lib/designer/shared/designer.service.d.ts +8 -4
  71. package/layout/designer/lib/designer/shared/designer.types.d.ts +24 -0
  72. package/layout/designer/lib/preview/preview-viewer.component.d.ts +5 -1
  73. package/layout/designer/lib/preview/preview.component.d.ts +2 -1
  74. package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -0
  75. package/{common/lib/data → layout/entity/lib}/entity-storage-service.d.ts +1 -0
  76. package/layout/entity/lib/index.d.ts +4 -0
  77. package/layout/entity/lib/widgets/tagable-box/index.d.ts +6 -0
  78. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-column.component.d.ts +11 -0
  79. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-edit.component.d.ts +19 -0
  80. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-filter.component.d.ts +6 -0
  81. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-print.component.d.ts +11 -0
  82. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-view.component.d.ts +11 -0
  83. package/layout/entity/lib/widgets/tagable-box/tagable-box-widget.config.d.ts +7 -0
  84. package/package.json +1 -1
  85. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +2 -0
  86. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +5 -0
  87. package/themes/shared/lib/components/layout-elements/index.d.ts +1 -0
  88. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  89. package/themes/shared/lib/components/layout-elements/layout-tool-bar.component.d.ts +5 -0
  90. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +2 -1
  91. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +4 -2
  92. package/widgets/lib/widgets/charts/sticky-note/sticky-note-widget-edit.component.d.ts +8 -0
  93. package/widgets/lib/widgets/editors/meta-data/index.d.ts +6 -0
  94. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-column.component.d.ts +6 -0
  95. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-edit.component.d.ts +13 -0
  96. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-filter.component.d.ts +6 -0
  97. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-print.component.d.ts +6 -0
  98. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-view.component.d.ts +8 -0
  99. package/widgets/lib/widgets/editors/meta-data/meta-data-widget.config.d.ts +7 -0
  100. package/widgets/lib/widgets/editors/number-unit/index.d.ts +6 -0
  101. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-column.component.d.ts +9 -0
  102. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-edit.component.d.ts +24 -0
  103. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-filter.component.d.ts +6 -0
  104. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-print.component.d.ts +6 -0
  105. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-view.component.d.ts +12 -0
  106. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget.config.d.ts +7 -0
  107. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
  108. package/widgets/lib/widgets/editors/single-file-box/index.d.ts +6 -0
  109. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-column.component.d.ts +6 -0
  110. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-edit.component.d.ts +19 -0
  111. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-filter.component.d.ts +6 -0
  112. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-print.component.d.ts +6 -0
  113. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-view.component.d.ts +8 -0
  114. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget.config.d.ts +7 -0
  115. package/widgets/lib/widgets/index.d.ts +1 -0
  116. package/workflow/lib/actions/decide.action.d.ts +7 -0
  117. package/workflow/lib/workflow.service.d.ts +0 -1
  118. package/common/lib/store/common.actions.d.ts +0 -2
  119. package/common/lib/store/index.d.ts +0 -1
  120. package/core/utils/data-conditioner.d.ts +0 -3
  121. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DrHsaotw.mjs.map +0 -1
  122. package/fesm2022/acorex-platform-themes-default-setting-page.component-CJoBVXTl.mjs.map +0 -1
  123. /package/core/{utils → lib/utils}/countdown-timer.d.ts +0 -0
  124. /package/core/{utils → lib/utils}/highlighter.d.ts +0 -0
  125. /package/core/{utils → lib/utils}/html-utils.d.ts +0 -0
  126. /package/{common/lib/data → layout/entity/lib}/data.types.d.ts +0 -0
  127. /package/{common/lib/data → layout/entity/lib}/dexie-storage.service.d.ts +0 -0
  128. /package/{common/lib/data → layout/entity/lib}/entity-data-seeder.d.ts +0 -0
@@ -8,7 +8,7 @@ import { AXPTenant } from './tenant/tenant.types';
8
8
  import { AXPUser } from './user/user.types';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class AXPSessionService {
11
- private store;
11
+ private eventService;
12
12
  private authStrategyRegistry;
13
13
  static readonly SESSION_KEY = "AXP_SESSION";
14
14
  private readonly permissionLoader;
@@ -36,8 +36,11 @@ export declare class AXPSessionService {
36
36
  get features(): AXPFeature[];
37
37
  readonly isAuthenticated$: Observable<boolean>;
38
38
  readonly isAuthorized$: Observable<boolean>;
39
+ private readonly COOKIE_ACCESS_TOKEN;
40
+ private readonly COOKIE_REFRESH_TOKEN;
41
+ private readonly NON_REMEMBERED_DURATION;
39
42
  restoreSession(): Promise<void>;
40
- signin(credentials: AXPBaseCredentials): Promise<void>;
43
+ signin(credentials: AXPBaseCredentials, rememberMe?: boolean): Promise<void>;
41
44
  signout(): Promise<void>;
42
45
  refreshToken(): Promise<any>;
43
46
  setTenant(tenant: AXPTenant | null): Promise<void>;
@@ -45,6 +48,9 @@ export declare class AXPSessionService {
45
48
  private loadPermissions;
46
49
  private loadFeatures;
47
50
  signInComplete(): Promise<void>;
51
+ private setCookie;
52
+ private getCookie;
53
+ private deleteCookie;
48
54
  private setSession;
49
55
  private updateSession;
50
56
  getSessionData(): AXPSessionData | null;
package/common/index.d.ts CHANGED
@@ -11,6 +11,5 @@ export * from './lib/file-storage';
11
11
  export * from './lib/file-type';
12
12
  export * from './lib/search';
13
13
  export * from './lib/settings';
14
- export * from './lib/store';
15
14
  export * from './lib/utils';
16
15
  export * from './lib/workflows';
@@ -155,7 +155,7 @@ export type AXPCommandActionCallback = string | {
155
155
  };
156
156
  metadata?: AXPMetaData;
157
157
  };
158
- export interface AXPCommandAction extends Partial<AXPCommandActionLook> {
158
+ export interface AXPCommandActionDisplay extends Partial<AXPCommandActionLook> {
159
159
  name?: string;
160
160
  command: AXPCommandActionCallback;
161
161
  title: string;
@@ -166,7 +166,7 @@ export interface AXPCommandAction extends Partial<AXPCommandActionLook> {
166
166
  hidden?: boolean | string;
167
167
  disabled?: boolean | string;
168
168
  }
169
- export interface AXPEntityAction extends AXPCommandAction {
169
+ export interface AXPEntityAction extends AXPCommandActionDisplay {
170
170
  scope: AXPEntityCommandScope;
171
171
  }
172
172
  export interface AXPEntity {
@@ -1,6 +1,5 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
2
  import { AXPAppStartUpService } from './app/app-startup.service';
3
- import { AXPDataSeederService } from './data';
4
3
  import { AXPErrorHandler } from './errors';
5
4
  import { AXPSettingService } from './settings';
6
5
  import * as i0 from "@angular/core";
@@ -18,7 +17,7 @@ export declare class AXPCommonModule {
18
17
  /**
19
18
  * @ignore
20
19
  */
21
- constructor(instances: any[], appInitService: AXPAppStartUpService, settingsService: AXPSettingService, seederService: AXPDataSeederService);
20
+ constructor(instances: any[], appInitService: AXPAppStartUpService, settingsService: AXPSettingService);
22
21
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPCommonModule, never>;
23
22
  static ɵmod: i0.ɵɵNgModuleDeclaration<AXPCommonModule, never, [typeof i1.AXPWorkflowModule, typeof i2.AXPopupModule, typeof i3.AXDateTimeModule, typeof i4.AXToastModule], [typeof i5.RouterModule]>;
24
23
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPCommonModule>;
@@ -1,7 +1,3 @@
1
1
  export * from './data-provider.types';
2
- export * from './data.types';
3
- export * from './dexie-storage.service';
4
- export * from './entity-data-seeder';
5
- export * from './entity-storage-service';
6
2
  export * from './filter-middleware.service';
7
3
  export * from './operators.service';
@@ -1,11 +1,11 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { AXPFileType } from './file-type.types';
3
3
  import * as i0 from "@angular/core";
4
- export interface AXPFileProvider {
4
+ export interface AXPFileTypeInfoProvider {
5
5
  items(): Promise<AXPFileType[]>;
6
6
  }
7
- export declare const AXP_FILE_TYPE_PROVIDER: InjectionToken<AXPFileProvider[]>;
8
- export declare class AXPFileTypeProviderService implements AXPFileProvider {
7
+ export declare const AXP_FILE_TYPE_INFO_PROVIDER: InjectionToken<AXPFileTypeInfoProvider[]>;
8
+ export declare class AXPFileTypeProviderService implements AXPFileTypeInfoProvider {
9
9
  private providers;
10
10
  items(): Promise<AXPFileType[]>;
11
11
  get(name: string): Promise<AXPFileType | undefined>;
@@ -16,6 +16,10 @@ export interface AXPFileType {
16
16
  */
17
17
  description?: string;
18
18
  extensions: AXPFileExtension[];
19
+ /**
20
+ * The icon of the file type.
21
+ */
22
+ icon?: string;
19
23
  /**
20
24
  * The metadata associated with the file type.
21
25
  */
@@ -37,6 +41,14 @@ export interface AXPFileExtension {
37
41
  * The description of the file extension.
38
42
  */
39
43
  description?: string;
44
+ /**
45
+ * The icon of the file type.
46
+ */
47
+ icon?: string;
48
+ /**
49
+ * The color of the file type.
50
+ */
51
+ color?: string;
40
52
  /**
41
53
  * The metadata associated with the file extension.
42
54
  */
@@ -1,6 +1,7 @@
1
- import { AXPNavigateActionCommand } from '@acorex/platform/core';
1
+ import { AXPNavigateActionCommand, AXPExecuteCommand } from '@acorex/platform/core';
2
2
  export type AXPMenuInsertion = 'before' | 'after' | 'inside';
3
3
  export type AXPMenuType = 'menu' | 'group' | 'break';
4
+ export type AXPMenuItemCommand = AXPNavigateActionCommand<'modal' | 'router'> | AXPExecuteCommand;
4
5
  export interface AXPMenuItem {
5
6
  text: string;
6
7
  type?: AXPMenuType;
@@ -11,7 +12,7 @@ export interface AXPMenuItem {
11
12
  opened?: boolean;
12
13
  children?: AXPMenuItem[];
13
14
  path?: string;
14
- command?: AXPNavigateActionCommand<'modal' | 'router'>;
15
+ command?: AXPMenuItemCommand | undefined;
15
16
  data?: any;
16
17
  }
17
18
  export interface AXPMenuFinderResult {
@@ -1,10 +1,8 @@
1
- import { Action } from '@ngrx/store';
2
- import { AXPMenuItem } from '../../../menu';
1
+ import { AXPMenuItem, AXPMenuItemCommand } from '../../../menu';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class AXPNavBarSlotComponent {
5
4
  items: AXPMenuItem[];
6
- private store;
7
- protected handleCommand(action?: Action): void;
5
+ protected handleCommand(action?: AXPMenuItemCommand): void;
8
6
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPNavBarSlotComponent, never>;
9
7
  static ɵcmp: i0.ɵɵComponentDeclaration<AXPNavBarSlotComponent, "ng-component", never, { "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
10
8
  }
@@ -1,3 +1,4 @@
1
+ import { AXPExecuteCommand } from '@acorex/platform/core';
1
2
  import { AXPCommandActionLook, AXPCommandActionPriority, AXPCommandActionType } from '../app';
2
3
  export interface AXPSearchDefinitionDisplayFormat {
3
4
  title?: string;
@@ -18,9 +19,6 @@ export interface AXPSearchParentResult {
18
19
  title: string;
19
20
  data?: any;
20
21
  }
21
- export type AXPSearchCommands = {
22
- [name: string]: any;
23
- };
24
22
  export interface AXPSearchResult {
25
23
  id?: string;
26
24
  group: string;
@@ -28,7 +26,7 @@ export interface AXPSearchResult {
28
26
  title?: string;
29
27
  description?: string;
30
28
  icon?: string;
31
- commands?: AXPSearchCommands;
29
+ command: AXPExecuteCommand;
32
30
  parent?: AXPSearchParentResult;
33
31
  }
34
32
  export interface AXPSearchDisplayGroupResult {
@@ -47,7 +45,7 @@ export interface AXPSearchDisplayResult {
47
45
  icon: string;
48
46
  data?: any;
49
47
  order?: any;
50
- commands?: AXPSearchCommands;
48
+ command: AXPExecuteCommand;
51
49
  parent?: AXPSearchParentResult;
52
50
  actions: AXPSearchAction[];
53
51
  }
@@ -10,9 +10,9 @@ export interface AXPSettingServiceInterface {
10
10
  export declare class AXPSettingService implements AXPSettingServiceInterface {
11
11
  private readonly providers;
12
12
  private readonly injector;
13
+ private readonly eventService;
13
14
  private scopedSettingsCache;
14
15
  readonly onChanged: Subject<AXPSettingChangedEvent>;
15
- private readonly broadcastChannel;
16
16
  constructor();
17
17
  load(): Promise<AXPSettingValue[]>;
18
18
  get<T = any>(key: string): Promise<T>;
@@ -1,6 +1,5 @@
1
1
  export * from './clipboard-service';
2
2
  export * from './data-generator';
3
3
  export * from './export.service';
4
- export * from './expression-evaluator.service';
5
4
  export * from './regional-util.service';
6
5
  export * from './regional.types';
@@ -1,8 +1,8 @@
1
1
  import { AXPCity, AXPCountry, AXPCurrency, AXPLanguage, AXPProvince, AXPRegionalFormat, AXPTimeZone } from './regional.types';
2
2
  export declare abstract class AXPRegionalService {
3
3
  abstract getCountries(): Promise<AXPCountry[]>;
4
- abstract getProvinces(countryCode?: string): Promise<AXPProvince[]>;
5
- abstract getCities(filter: {
4
+ abstract getProvinces(countryId?: string): Promise<AXPProvince[]>;
5
+ abstract getCities(filter?: {
6
6
  countryId?: string;
7
7
  provinceId?: string;
8
8
  }): Promise<AXPCity[]>;
package/core/index.d.ts CHANGED
@@ -1,5 +1 @@
1
- export * from './lib/types';
2
- export * from './utils/countdown-timer';
3
- export * from './utils/data-conditioner';
4
- export * from './utils/html-utils';
5
- export * from './utils/highlighter';
1
+ export * from './lib/index';
@@ -0,0 +1,26 @@
1
+ export declare class AXPDataGenerator {
2
+ static uuid(): string;
3
+ static number(max: number): number;
4
+ static number(min: number, max: number): number;
5
+ static date(): Date;
6
+ static date(start: Date): Date;
7
+ static date(start: Date, end: Date): Date;
8
+ static array<T>(length: number | undefined, generator: () => T): T[];
9
+ static pick<T>(items: T[]): T;
10
+ static pick<T>(items: T[], count: number): T[];
11
+ static string(length?: number): string;
12
+ static boolean(): boolean;
13
+ static item<T>(array?: T[]): T | undefined;
14
+ static color(): string;
15
+ static alphanumeric(length?: number): string;
16
+ static alphabet(length?: number): string;
17
+ static phone(): string;
18
+ static firstName(): string;
19
+ static lastName(): string;
20
+ static email(): string;
21
+ static email(firstName: string, lastName: string): string;
22
+ static country(): string;
23
+ static city(): string;
24
+ static state(): string;
25
+ static address(): string;
26
+ }
@@ -0,0 +1 @@
1
+ export * from './data-generator';
@@ -0,0 +1,20 @@
1
+ import { ElementRef, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AXPElementDataDirective implements OnInit {
4
+ private elementRef;
5
+ data: import("@angular/core").InputSignal<any>;
6
+ path: import("@angular/core").InputSignal<string>;
7
+ constructor(elementRef: ElementRef<HTMLElement>);
8
+ ngOnInit(): void;
9
+ private updateEffect;
10
+ /**
11
+ * Get data from the element
12
+ */
13
+ getData(): any;
14
+ /**
15
+ * Update data at runtime
16
+ */
17
+ setData(data: any): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPElementDataDirective, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPElementDataDirective, "[axp-data]", never, { "data": { "alias": "axp-data"; "required": false; "isSignal": true; }; "path": { "alias": "axp-data-path"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
+ }
@@ -0,0 +1 @@
1
+ export * from './element-data.directive';
@@ -0,0 +1,43 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class AXPBroadcastEventService implements OnDestroy {
5
+ private channel;
6
+ private eventSubjects;
7
+ private pendingRequests;
8
+ private multiTabEventHistory;
9
+ constructor();
10
+ /**
11
+ * Publish an event without expecting a response
12
+ */
13
+ publish<T>(type: string, payload?: T): void;
14
+ /**
15
+ * Subscribe to an event
16
+ */
17
+ listen<T>(type: string): Observable<{
18
+ data: T;
19
+ requestId?: string;
20
+ }>;
21
+ /**
22
+ * Unsubscribe from an event
23
+ */
24
+ unsubscribe(type: string): void;
25
+ /**
26
+ * Send a message and wait for a response with retry logic
27
+ */
28
+ sendAndWaitForResponse<T, R>(type: string, payload?: T, options?: {
29
+ timeout: number;
30
+ retries: number;
31
+ retryDelay: number;
32
+ }): Promise<R>;
33
+ /**
34
+ * Respond to a request
35
+ */
36
+ respondToRequest(requestId: string, response: any): void;
37
+ /**
38
+ * Cleanup when the service is destroyed
39
+ */
40
+ ngOnDestroy(): void;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBroadcastEventService, never>;
42
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBroadcastEventService>;
43
+ }
@@ -0,0 +1 @@
1
+ export * from './event.service';
@@ -6,7 +6,7 @@ export type AXPExpressionEvaluatorScope = {
6
6
  };
7
7
  export type AXPExpression = string;
8
8
  export declare class AXPExpressionEvaluatorService {
9
- evaluateExpression(obj: any, templateExpression: any, scope: AXPExpressionEvaluatorScope): Promise<any>;
9
+ evaluate(templateExpression: any, scope: AXPExpressionEvaluatorScope): Promise<any>;
10
10
  private evaluateStringExpression;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPExpressionEvaluatorService, never>;
12
12
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPExpressionEvaluatorService>;
@@ -0,0 +1 @@
1
+ export * from './expression-evaluator.service';
@@ -0,0 +1,6 @@
1
+ export * from './data';
2
+ export * from './directives';
3
+ export * from './event-service';
4
+ export * from './expression-evaluator';
5
+ export * from './utils';
6
+ export * from './types';
@@ -13,6 +13,11 @@ export type AXPValidationRule = {
13
13
  };
14
14
  export type AXPValidationRules = AXPValidationRule[];
15
15
  export declare function getNestedKeys(obj: any, prefix?: string): string[];
16
+ export type AXPExecuteCommand = {
17
+ name: string;
18
+ options?: AXPMetaData;
19
+ metadata?: AXPMetaData;
20
+ };
16
21
  export type AXPNavigateActionOptions = {
17
22
  router: {
18
23
  path: string;
@@ -30,3 +35,15 @@ export interface AXPNavigateActionCommand<T extends keyof AXPNavigateActionOptio
30
35
  type: T;
31
36
  options: AXPNavigateActionOptions[T];
32
37
  }
38
+ export interface AXPValueUnit {
39
+ name: string;
40
+ title: string;
41
+ ratio: number;
42
+ order: number;
43
+ }
44
+ export interface AXPValueUnits {
45
+ name: string;
46
+ title: string;
47
+ items: AXPValueUnit[];
48
+ default: string;
49
+ }
@@ -0,0 +1,5 @@
1
+ import { AXDataSourceCallbackResult, AXDataSourceFilterOption, AXDataSourceQuery, AXDataSourceSortOption } from '@acorex/components/common';
2
+ export declare function applyFilterArray(dataArray: any[], filters?: AXDataSourceFilterOption[], logic?: 'and' | 'or'): any[];
3
+ export declare function applySortArray(dataArray: any, sorts: AXDataSourceSortOption[]): any;
4
+ export declare function applyPagination<T>(dataArray: T[], skip: number, take: number): T[];
5
+ export declare function applyQueryArray<T>(dataArray: T[], query: AXDataSourceQuery): Promise<AXDataSourceCallbackResult<T>>;
@@ -0,0 +1,4 @@
1
+ export * from './countdown-timer';
2
+ export * from './data-conditioner';
3
+ export * from './html-utils';
4
+ export * from './highlighter';
@@ -1,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injector, Injectable, signal, inject, Directive, Input, provideAppInitializer, NgModule, Optional, Inject } from '@angular/core';
3
3
  import { of, map, BehaviorSubject, shareReplay, defaultIfEmpty, firstValueFrom, first } from 'rxjs';
4
- import { AXPSignOutAction, AXPSignInAction } from '@acorex/platform/common';
5
- import { Store } from '@ngrx/store';
4
+ import { AXPBroadcastEventService } from '@acorex/platform/core';
6
5
  import { merge, isEmpty } from 'lodash-es';
7
6
 
8
7
  const AXP_APPLICATION_LOADER = new InjectionToken('AXP_APPLICATION_LOADER', {
@@ -209,7 +208,7 @@ var AXPSessionStatus;
209
208
 
210
209
  class AXPSessionService {
211
210
  constructor() {
212
- this.store = inject(Store);
211
+ this.eventService = inject(AXPBroadcastEventService);
213
212
  this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
214
213
  this.permissionLoader = inject(AXP_PERMISSION_LOADER);
215
214
  this.featureLoader = inject(AXP_FEATURE_LOADER);
@@ -229,6 +228,9 @@ class AXPSessionService {
229
228
  this.features$ = this.featuresSubject.asObservable().pipe(shareReplay(1), defaultIfEmpty([]));
230
229
  this.isAuthenticated$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized), shareReplay(1));
231
230
  this.isAuthorized$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authorized), shareReplay(1));
231
+ this.COOKIE_ACCESS_TOKEN = 'ax_access_token';
232
+ this.COOKIE_REFRESH_TOKEN = 'ax_refresh_token';
233
+ this.NON_REMEMBERED_DURATION = 24 * 60 * 60 * 1000; // 24 hours (adjust as needed)
232
234
  }
233
235
  static { this.SESSION_KEY = 'AXP_SESSION'; }
234
236
  get user() {
@@ -285,7 +287,7 @@ class AXPSessionService {
285
287
  this.status.next(AXPSessionStatus.Unauthorized);
286
288
  }
287
289
  }
288
- async signin(credentials) {
290
+ async signin(credentials, rememberMe) {
289
291
  const strategy = this.authStrategyRegistry.get(credentials.strategy);
290
292
  if (!strategy) {
291
293
  throw new Error(`Authentication strategy '${credentials.strategy}' is not supported`);
@@ -302,7 +304,7 @@ class AXPSessionService {
302
304
  tenant: result.data?.tenant,
303
305
  expiresIn: result.data?.expiresIn,
304
306
  idToken: result.data?.idToken ?? null,
305
- });
307
+ }, rememberMe);
306
308
  this.status.next(AXPSessionStatus.Authenticated);
307
309
  if (this.application && this.tenant)
308
310
  await this.signInComplete();
@@ -323,12 +325,16 @@ class AXPSessionService {
323
325
  //
324
326
  this.clearSession();
325
327
  this.status.next(AXPSessionStatus.SignedOut);
326
- this.store.dispatch(AXPSignOutAction());
328
+ this.eventService.publish(AXPSessionStatus.SignedOut, { id: this.user?.id });
327
329
  }
328
330
  async refreshToken() {
329
331
  return new Promise(async (resolve, reject) => {
332
+ const refreshToken = this.getCookie(this.COOKIE_REFRESH_TOKEN);
333
+ if (!refreshToken) {
334
+ return;
335
+ }
330
336
  const sessionData = this.getSessionData();
331
- if (!sessionData || !sessionData?.refreshToken) {
337
+ if (!sessionData) {
332
338
  return;
333
339
  }
334
340
  const strategy = this.authStrategyRegistry.get(sessionData.strategy);
@@ -385,18 +391,46 @@ class AXPSessionService {
385
391
  }
386
392
  async signInComplete() {
387
393
  this.status.next(AXPSessionStatus.Authorized);
388
- this.store.dispatch(AXPSignInAction());
394
+ //this.store.dispatch(AXPSignInAction());
395
+ }
396
+ setCookie(name, value, remember = false) {
397
+ const options = {
398
+ path: '/',
399
+ // secure: true,
400
+ sameSite: 'strict',
401
+ };
402
+ if (!remember) {
403
+ const expiryDate = new Date(Date.now() + this.NON_REMEMBERED_DURATION);
404
+ options['expires'] = expiryDate.toUTCString();
405
+ }
406
+ const cookieString = Object.entries(options).reduce((acc, [key, value]) => `${acc}; ${key}=${value}`, `${name}=${value}`);
407
+ document.cookie = cookieString;
408
+ }
409
+ getCookie(name) {
410
+ const value = `; ${document.cookie}`;
411
+ const parts = value.split(`; ${name}=`);
412
+ if (parts.length === 2) {
413
+ return parts.pop()?.split(';').shift() ?? null;
414
+ }
415
+ return null;
389
416
  }
390
- setSession(tokens) {
417
+ deleteCookie(name) {
418
+ document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
419
+ }
420
+ setSession(tokens, remember = false) {
421
+ // Store tokens in cookies
422
+ if (tokens.accessToken) {
423
+ this.setCookie(this.COOKIE_ACCESS_TOKEN, tokens.accessToken, remember);
424
+ }
425
+ if (tokens.refreshToken) {
426
+ this.setCookie(this.COOKIE_REFRESH_TOKEN, tokens.refreshToken, remember);
427
+ }
428
+ // Store non-sensitive session data in localStorage
391
429
  const sessionData = {
392
- accessToken: tokens.accessToken,
393
- refreshToken: tokens.refreshToken,
394
430
  strategy: tokens.strategy,
395
431
  user: this.user,
396
432
  application: tokens.application,
397
433
  tenant: tokens.tenant,
398
- expiresIn: tokens.expiresIn,
399
- idToken: tokens.idToken,
400
434
  };
401
435
  this.updateSession(sessionData);
402
436
  }
@@ -410,6 +444,11 @@ class AXPSessionService {
410
444
  return sessionDataString ? JSON.parse(sessionDataString) : null;
411
445
  }
412
446
  clearSession() {
447
+ // Clear cookies
448
+ this.deleteCookie(this.COOKIE_ACCESS_TOKEN);
449
+ this.deleteCookie(this.COOKIE_REFRESH_TOKEN);
450
+ // Clear localStorage
451
+ localStorage.removeItem(AXPSessionService.SESSION_KEY);
413
452
  //
414
453
  this.currentUserSubject.next(null);
415
454
  //
@@ -420,8 +459,6 @@ class AXPSessionService {
420
459
  this.permissionsSubject.next([]);
421
460
  //
422
461
  this.featuresSubject.next([]);
423
- //
424
- localStorage.removeItem(AXPSessionService.SESSION_KEY);
425
462
  }
426
463
  authorize(...keys) {
427
464
  return keys.every((k) => isEmpty(k) || this.permissions.indexOf(k) > -1);
@@ -430,8 +467,7 @@ class AXPSessionService {
430
467
  return keys.every((k) => isEmpty(k) || this.features.some((c) => c.name == k && c.value == true));
431
468
  }
432
469
  getToken() {
433
- const sessionData = this.getSessionData();
434
- return sessionData?.accessToken;
470
+ return this.getCookie(this.COOKIE_ACCESS_TOKEN) ?? undefined;
435
471
  }
436
472
  checkTokenValidation() {
437
473
  let sessionData = this.getSessionData();