@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.
- package/auth/lib/session.service.d.ts +8 -2
- package/common/index.d.ts +0 -1
- package/common/lib/app/application.types.d.ts +2 -2
- package/common/lib/common.module.d.ts +1 -2
- package/common/lib/data/index.d.ts +0 -4
- package/common/lib/file-type/file-type.provider.d.ts +3 -3
- package/common/lib/file-type/file-type.types.d.ts +12 -0
- package/common/lib/layout/menu/menu.types.d.ts +3 -2
- package/common/lib/layout/theme/components/slots/navbar-slot.component.d.ts +2 -4
- package/common/lib/search/search.types.d.ts +3 -5
- package/common/lib/settings/settings.service.d.ts +1 -1
- package/common/lib/utils/index.d.ts +0 -1
- package/common/lib/utils/regional-util.service.d.ts +2 -2
- package/core/index.d.ts +1 -5
- package/core/lib/data/data-generator.d.ts +26 -0
- package/core/lib/data/index.d.ts +1 -0
- package/core/lib/directives/element-data.directive.d.ts +20 -0
- package/core/lib/directives/index.d.ts +1 -0
- package/core/lib/event-service/event.service.d.ts +43 -0
- package/core/lib/event-service/index.d.ts +1 -0
- package/{common/lib/utils → core/lib/expression-evaluator}/expression-evaluator.service.d.ts +1 -1
- package/core/lib/expression-evaluator/index.d.ts +1 -0
- package/core/lib/index.d.ts +6 -0
- package/core/lib/types.d.ts +17 -0
- package/core/lib/utils/data-conditioner.d.ts +5 -0
- package/core/lib/utils/index.d.ts +4 -0
- package/fesm2022/acorex-platform-auth.mjs +53 -17
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +606 -869
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +364 -12
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +14 -3
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +99 -52
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +673 -34
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-search.mjs +4 -3
- package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-setting.mjs +4 -3
- package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
- 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
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-ewOei4ta.mjs.map +1 -0
- 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
- 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
- package/fesm2022/{acorex-platform-themes-default-search-popup.component-Ccouaqp4.mjs → acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-search-popup.component-Ccouaqp4.mjs.map → acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-setting-page.component-CJoBVXTl.mjs → acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs} +5 -4
- package/fesm2022/acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-setting-view.component-CsCug3Vu.mjs → acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs} +2 -2
- package/fesm2022/{acorex-platform-themes-default-setting-view.component-CsCug3Vu.mjs.map → acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs.map} +1 -1
- 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
- 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
- package/fesm2022/acorex-platform-themes-default.mjs +36 -24
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +27 -4
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- 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
- 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
- package/fesm2022/acorex-platform-widgets.mjs +1083 -98
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +17 -8
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/lib/builder/datasource-provider.service.d.ts +2 -2
- package/layout/builder/lib/builder/metadata/metadata.types.d.ts +2 -1
- package/layout/builder/lib/builder/widget-map.d.ts +5 -0
- package/layout/builder/lib/builder/widget.types.d.ts +1 -1
- package/layout/designer/lib/designer/designer.component.d.ts +2 -1
- package/layout/designer/lib/designer/shared/designer.service.d.ts +8 -4
- package/layout/designer/lib/designer/shared/designer.types.d.ts +24 -0
- package/layout/designer/lib/preview/preview-viewer.component.d.ts +5 -1
- package/layout/designer/lib/preview/preview.component.d.ts +2 -1
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -0
- package/{common/lib/data → layout/entity/lib}/entity-storage-service.d.ts +1 -0
- package/layout/entity/lib/index.d.ts +4 -0
- package/layout/entity/lib/widgets/tagable-box/index.d.ts +6 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-column.component.d.ts +11 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-edit.component.d.ts +19 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-filter.component.d.ts +6 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-print.component.d.ts +11 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-view.component.d.ts +11 -0
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget.config.d.ts +7 -0
- package/package.json +1 -1
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +2 -0
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +5 -0
- package/themes/shared/lib/components/layout-elements/index.d.ts +1 -0
- package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
- package/themes/shared/lib/components/layout-elements/layout-tool-bar.component.d.ts +5 -0
- package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +2 -1
- package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +4 -2
- package/widgets/lib/widgets/charts/sticky-note/sticky-note-widget-edit.component.d.ts +8 -0
- package/widgets/lib/widgets/editors/meta-data/index.d.ts +6 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-column.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-edit.component.d.ts +13 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-view.component.d.ts +8 -0
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/editors/number-unit/index.d.ts +6 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-column.component.d.ts +9 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-edit.component.d.ts +24 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-view.component.d.ts +12 -0
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/single-file-box/index.d.ts +6 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-column.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-edit.component.d.ts +19 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-view.component.d.ts +8 -0
- package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/index.d.ts +1 -0
- package/workflow/lib/actions/decide.action.d.ts +7 -0
- package/workflow/lib/workflow.service.d.ts +0 -1
- package/common/lib/store/common.actions.d.ts +0 -2
- package/common/lib/store/index.d.ts +0 -1
- package/core/utils/data-conditioner.d.ts +0 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DrHsaotw.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-setting-page.component-CJoBVXTl.mjs.map +0 -1
- /package/core/{utils → lib/utils}/countdown-timer.d.ts +0 -0
- /package/core/{utils → lib/utils}/highlighter.d.ts +0 -0
- /package/core/{utils → lib/utils}/html-utils.d.ts +0 -0
- /package/{common/lib/data → layout/entity/lib}/data.types.d.ts +0 -0
- /package/{common/lib/data → layout/entity/lib}/dexie-storage.service.d.ts +0 -0
- /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
|
|
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
|
@@ -155,7 +155,7 @@ export type AXPCommandActionCallback = string | {
|
|
|
155
155
|
};
|
|
156
156
|
metadata?: AXPMetaData;
|
|
157
157
|
};
|
|
158
|
-
export interface
|
|
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
|
|
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
|
|
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
|
|
4
|
+
export interface AXPFileTypeInfoProvider {
|
|
5
5
|
items(): Promise<AXPFileType[]>;
|
|
6
6
|
}
|
|
7
|
-
export declare const
|
|
8
|
-
export declare class AXPFileTypeProviderService implements
|
|
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?:
|
|
15
|
+
command?: AXPMenuItemCommand | undefined;
|
|
15
16
|
data?: any;
|
|
16
17
|
}
|
|
17
18
|
export interface AXPMenuFinderResult {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,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(
|
|
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
|
@@ -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';
|
package/{common/lib/utils → core/lib/expression-evaluator}/expression-evaluator.service.d.ts
RENAMED
|
@@ -6,7 +6,7 @@ export type AXPExpressionEvaluatorScope = {
|
|
|
6
6
|
};
|
|
7
7
|
export type AXPExpression = string;
|
|
8
8
|
export declare class AXPExpressionEvaluatorService {
|
|
9
|
-
|
|
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';
|
package/core/lib/types.d.ts
CHANGED
|
@@ -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>>;
|
|
@@ -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 {
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
434
|
-
return sessionData?.accessToken;
|
|
470
|
+
return this.getCookie(this.COOKIE_ACCESS_TOKEN) ?? undefined;
|
|
435
471
|
}
|
|
436
472
|
checkTokenValidation() {
|
|
437
473
|
let sessionData = this.getSessionData();
|