@acorex/platform-generator 20.3.0-next.9 → 20.4.0
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/package.json +2 -2
- package/src/generators/app-module/files/src/app/app.config.ts.template +63 -13
- package/src/generators/app-module/files/src/app/basic-interceptor.interceptor.ts.template +4 -4
- package/src/generators/app-module/files/src/app/modules/auth/auth-root.module.ts.template +13 -34
- package/src/generators/app-module/files/src/app/{app-version.provider.ts.template → modules/common/app-version.provider.ts.template} +4 -2
- package/src/generators/app-module/files/src/app/modules/common/default-settings.providers.ts.template +38 -0
- package/src/generators/app-module/files/src/app/modules/common/translation-root.module.ts.template +2 -1
- package/src/generators/app-module/files/src/app/modules/layout/entity.loader.ts.template +26 -9
- package/src/generators/app-module/files/src/app/modules/layout/layout-root.module.ts.template +15 -17
- package/src/generators/app-module/files/src/app/modules/layout/menu.provider.ts.template +1 -15
- package/src/generators/app-module/files/src/app/modules/layout/theme-palette.provider.ts.template +57 -0
- package/src/generators/app-module/files/src/app/modules/root/const.ts.template +25 -5
- package/src/generators/app-module/files/src/app/modules/root/menu.keys.ts.template +9 -0
- package/src/generators/app-module/files/src/app/modules/root/menu.provider.ts.template +61 -0
- package/src/generators/app-module/files/src/app/modules/root/mock.data.ts.template +13 -37
- package/src/generators/app-module/files/src/app/modules/root/permission-definition.provider.ts.template +51 -0
- package/src/generators/app-module/files/src/app/modules/root/permission.keys.ts.template +17 -0
- package/src/generators/app-module/files/src/app/modules/root/root.module.ts.template +39 -10
- package/src/generators/app-module/files/src/app/modules/root/sample/index.ts.template +9 -0
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.entity.ts.template +146 -225
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.module.ts.template +13 -5
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.service.ts.template +26 -6
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.types.ts.template +49 -11
- package/src/generators/app-module/files/src/app/modules/root/search-command.provider.ts.template +37 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/acorex.json +285 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/activity-log.json +31 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/application-management.json +112 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/auth.json +38 -3
- package/src/generators/app-module/files/src/assets/i18n/en-US/calendar-management.json +170 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/contact-management.json +182 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/content-management.json +23 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/conversation.json +120 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/customer-management.json +130 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/dashboard.json +231 -5
- package/src/generators/app-module/files/src/assets/i18n/en-US/data-management.json +93 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/document-management.json +321 -22
- package/src/generators/app-module/files/src/assets/i18n/en-US/dynamic-form-designer.json +58 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/extra-properties.json +39 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/form-template-management.json +61 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/general-old.json +800 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/general.json +993 -4
- package/src/generators/app-module/files/src/assets/i18n/en-US/help-desk.json +55 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/human-capital-management.json +144 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/layout-designer.json +19 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/locale-management.json +30 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/location-management.json +46 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/lock-system.json +40 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/log-management.json +29 -21
- package/src/generators/app-module/files/src/assets/i18n/en-US/meeting-management.json +69 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/module.json.template +45 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/notification-management.json +37 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/organization-management.json +59 -138
- package/src/generators/app-module/files/src/assets/i18n/en-US/party-management.json +300 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/platform-management.json +20 -79
- package/src/generators/app-module/files/src/assets/i18n/en-US/project-management.json +157 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/questionnaire.json +118 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/regional.json +41 -8
- package/src/generators/app-module/files/src/assets/i18n/en-US/report-management.json +76 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/security-management.json +42 -3
- package/src/generators/app-module/files/src/assets/i18n/en-US/settings.json +17 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/task-management.json +151 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/text-template-management.json +3 -1
- package/src/generators/app-module/files/src/assets/i18n/en-US/training-management.json +50 -0
- package/src/generators/app-module/files/src/assets/i18n/en-US/workflow-management.json +21 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/acorex.json +285 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/activity-log.json +31 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/application-management.json +112 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/auth.json +74 -38
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/calendar-management.json +170 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/contact-management.json +182 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/content-management.json +23 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/conversation.json +80 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/customer-management.json +130 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/dashboard.json +231 -5
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/data-management.json +93 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/document-management.json +333 -29
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/dynamic-form-designer.json +39 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/extra-properties.json +39 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/form-template-management.json +82 -21
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/general-old.json +800 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/general.json +987 -9
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/global-search.json +5 -5
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/help-desk.json +55 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/human-capital-management.json +144 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout-designer.json +19 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout.json +14 -14
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/locale-management.json +30 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/location-management.json +46 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/lock-system.json +40 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/log-management.json +99 -47
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/meeting-management.json +69 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/module.json.template +45 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/notification-management.json +59 -22
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/organization-management.json +74 -152
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/party-management.json +300 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/platform-management.json +38 -93
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/project-management.json +157 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/questionnaire.json +118 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/regional.json +71 -38
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/report-management.json +76 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/scheduler-job-management.json +4 -4
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/security-management.json +43 -4
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/settings.json +33 -16
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/task-management.json +151 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/text-template-management.json +8 -5
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/training-management.json +50 -0
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/workflow-management.json +20 -0
- package/src/generators/app-module/files/src/environments/environment.dev.ts.template +1 -0
- package/src/generators/app-module/files/src/environments/environment.ts.template +1 -0
- package/src/generators/app-module/generator.js +3 -0
- package/src/generators/app-module/generator.js.map +1 -1
- package/src/generators/create-module-entity/files/__entityFileName__.entity.ts__tmpl__ +1 -1
- package/src/generators/create-tag-entity/files/tag-__entityFileName__.entity.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget-column.component.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget-edit.component.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget-filter.component.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget-print.component.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget-view.component.ts__tmpl__ +1 -1
- package/src/generators/create-widget/files/__fileName__-widget.config.ts__tmpl__ +2 -2
- package/src/generators/app-module/files/src/app/app.config.api.ts.template +0 -105
- package/src/generators/app-module/files/src/app/app.module.api.ts.template +0 -108
- package/src/generators/app-module/files/src/app/app.module.ts.template +0 -113
- package/src/generators/app-module/files/src/app/modules/auth/application.loader.ts.template +0 -34
- package/src/generators/app-module/files/src/app/modules/auth/auth.strategy.ts.template +0 -93
- package/src/generators/app-module/files/src/app/modules/auth/feature.loader.ts.template +0 -17
- package/src/generators/app-module/files/src/app/modules/auth/permission.loader.ts.template +0 -20
- package/src/generators/app-module/files/src/app/modules/auth/tenant.loader.ts.template +0 -26
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.html.template +0 -15
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.scss.template +0 -10
- package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.ts.template +0 -20
- package/src/generators/app-module/files/src/assets/i18n/en-US/vehicle-management.json +0 -146
- package/src/generators/app-module/files/src/assets/i18n/fa-IR/vehicle-management.json +0 -144
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApplicationConfig, importProvidersFrom } from '@angular/core';
|
|
2
|
-
import { provideRouter, withEnabledBlockingInitialNavigation, withComponentInputBinding
|
|
2
|
+
import { provideRouter, withEnabledBlockingInitialNavigation, withComponentInputBinding } from '@angular/router';
|
|
3
3
|
import { appRoutes } from './app.routes';
|
|
4
4
|
import { BrowserModule } from '@angular/platform-browser';
|
|
5
5
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
@@ -11,19 +11,35 @@ import { AXFormatModule } from '@acorex/core/format';
|
|
|
11
11
|
import { AXValidationModule } from '@acorex/core/validation';
|
|
12
12
|
import { AXPTranslationRootModule } from './modules/common/translation-root.module';
|
|
13
13
|
import { AXPLayoutRootModule } from './modules/layout/layout-root.module';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { AXMPlatformManagementModule } from '@acorex/modules/platform-management';
|
|
14
|
+
import { AXCMockModule, AXCUserPassStrategyMock } from '@acorex/connectivity/mock';
|
|
15
|
+
import { AXPAuthModule } from '@acorex/platform/auth';
|
|
17
16
|
import { AXMNotificationManagementModule } from '@acorex/modules/notification-management';
|
|
17
|
+
import { AXMSettingsManagementModule } from '@acorex/modules/settings-management';
|
|
18
|
+
import { AXMHelpDeskModule } from '@acorex/modules/help-desk';
|
|
19
|
+
import { AXMDashboardManagementModule } from '@acorex/modules/dashboard-management';
|
|
20
|
+
import { AXMHumanCapitalManagementModule } from '@acorex/modules/human-capital-management';
|
|
18
21
|
import { AXMFormTemplateManagementModule } from '@acorex/modules/form-template-management';
|
|
19
|
-
import { AXMTextTemplateManagementModule } from '@acorex/modules/text-template-management';
|
|
20
22
|
import { AXMSecurityManagementModule } from '@acorex/modules/security-management';
|
|
21
23
|
import { AXMOrganizationManagementModule } from '@acorex/modules/organization-management';
|
|
22
24
|
import { AXMLogManagementModule } from '@acorex/modules/log-management';
|
|
23
25
|
import { AXMDocumentManagementModule } from '@acorex/modules/document-management';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
26
|
+
import { AXMProjectManagementModule } from '@acorex/modules/project-management';
|
|
27
|
+
import { AXMTrainingManagementModule } from '@acorex/modules/training-management';
|
|
28
|
+
import { AXMWorkflowManagementModule } from '@acorex/modules/workflow-management';
|
|
29
|
+
import { AXMContentManagementModule } from '@acorex/modules/content-management';
|
|
30
|
+
import { AXMConversationModule } from '@acorex/modules/conversation';
|
|
31
|
+
import { AXMPlatformManagementModule } from '@acorex/modules/platform-management';
|
|
32
|
+
import { AXMDataManagementModule } from '@acorex/modules/data-management';
|
|
33
|
+
import { AXMReportManagementModule } from '@acorex/modules/report-management';
|
|
34
|
+
import { AXMCalendarManagementModule } from '@acorex/modules/calendar-management';
|
|
35
|
+
import { AXMLocationManagementModule } from '@acorex/modules/location-management';
|
|
36
|
+
import { AXMPartyManagementModule } from '@acorex/modules/party-management';
|
|
37
|
+
import { AXMContactManagementModule } from '@acorex/modules/contact-management';
|
|
38
|
+
import { AXMLocaleManagementModule } from '@acorex/modules/locale-management';
|
|
39
|
+
import { AXMMeetingManagementModule } from '@acorex/modules/meeting-management';
|
|
40
|
+
import { AXMTaskManagementModule } from '@acorex/modules/task-management';
|
|
41
|
+
import { AXMIdentifierManagementModule } from '@acorex/modules/identifier-management';
|
|
42
|
+
import { AXMApplicationManagementModule } from '@acorex/modules/application-management';
|
|
27
43
|
|
|
28
44
|
import {
|
|
29
45
|
AXPHomePageModule,
|
|
@@ -37,12 +53,17 @@ import {
|
|
|
37
53
|
import { AXPImageUrlLogoConfig } from '@acorex/platform/core';
|
|
38
54
|
|
|
39
55
|
import { environment } from '../environments/environment';
|
|
40
|
-
import { <%= className %>AppVersionProvider } from './app-version.provider';
|
|
41
|
-
import { AXMCommonModule
|
|
56
|
+
import { <%= className %>AppVersionProvider } from './modules/common/app-version.provider';
|
|
57
|
+
import { AXMCommonModule } from '@acorex/modules/common';
|
|
58
|
+
import { AXPGlobalSearchModule } from '@acorex/modules/common';
|
|
59
|
+
import { APP_DEFAULT_SETTINGS_PROVIDERS } from './modules/common/default-settings.providers';
|
|
60
|
+
import { <%= className %>AuthRootModule } from './modules/auth/auth-root.module';
|
|
61
|
+
import { <%= upperCase(name) %>RootModule } from './modules/<%= name %>/<%= name %>-root.module';
|
|
42
62
|
|
|
43
63
|
|
|
44
64
|
export const appConfig: ApplicationConfig = {
|
|
45
65
|
providers: [
|
|
66
|
+
APP_DEFAULT_SETTINGS_PROVIDERS,
|
|
46
67
|
provideHttpClient(withInterceptorsFromDi()),
|
|
47
68
|
provideRouter(appRoutes, withEnabledBlockingInitialNavigation(), withComponentInputBinding()),
|
|
48
69
|
//
|
|
@@ -71,7 +92,7 @@ export const appConfig: ApplicationConfig = {
|
|
|
71
92
|
light: new AXPImageUrlLogoConfig('assets/images/logos/full-light.svg', 160),
|
|
72
93
|
},
|
|
73
94
|
},
|
|
74
|
-
title: '
|
|
95
|
+
title: '<%= title %>',
|
|
75
96
|
copyright: '© 2024',
|
|
76
97
|
}),
|
|
77
98
|
},
|
|
@@ -90,16 +111,45 @@ export const appConfig: ApplicationConfig = {
|
|
|
90
111
|
AXValidationModule.forRoot(),
|
|
91
112
|
//
|
|
92
113
|
AXPGlobalSearchModule,
|
|
93
|
-
AXMSettingsManagementModule,
|
|
94
114
|
//
|
|
95
115
|
AXMCommonModule,
|
|
96
116
|
AXPHomePageModule,
|
|
97
117
|
//
|
|
98
118
|
AXPTranslationRootModule,
|
|
99
119
|
AXPLayoutRootModule,
|
|
120
|
+
// Management Modules (Mock)
|
|
121
|
+
AXMSettingsManagementModule,
|
|
122
|
+
AXMHelpDeskModule,
|
|
123
|
+
AXMDashboardManagementModule,
|
|
124
|
+
AXMNotificationManagementModule,
|
|
125
|
+
AXMFormTemplateManagementModule,
|
|
126
|
+
AXMSecurityManagementModule,
|
|
127
|
+
AXMOrganizationManagementModule,
|
|
128
|
+
AXMHumanCapitalManagementModule,
|
|
129
|
+
AXMLogManagementModule,
|
|
130
|
+
AXMDocumentManagementModule,
|
|
131
|
+
AXMProjectManagementModule,
|
|
132
|
+
AXMTrainingManagementModule,
|
|
133
|
+
AXMWorkflowManagementModule,
|
|
134
|
+
AXMContentManagementModule,
|
|
135
|
+
AXMConversationModule,
|
|
136
|
+
AXMPlatformManagementModule,
|
|
137
|
+
AXMDataManagementModule,
|
|
138
|
+
AXMReportManagementModule,
|
|
139
|
+
AXMCalendarManagementModule,
|
|
140
|
+
AXMLocationManagementModule,
|
|
141
|
+
AXMPartyManagementModule,
|
|
142
|
+
AXMContactManagementModule,
|
|
143
|
+
AXMLocaleManagementModule,
|
|
144
|
+
AXMMeetingManagementModule,
|
|
145
|
+
AXMTaskManagementModule,
|
|
146
|
+
AXMIdentifierManagementModule,
|
|
147
|
+
AXMApplicationManagementModule,
|
|
100
148
|
//
|
|
101
|
-
AXMSampleEntityModule,
|
|
102
149
|
AXCMockModule,
|
|
150
|
+
AXPAuthModule.forRoot({
|
|
151
|
+
strategies: [AXCUserPassStrategyMock],
|
|
152
|
+
}),
|
|
103
153
|
//
|
|
104
154
|
<%= upperCase(name) %>RootModule,
|
|
105
155
|
<%= className %>AuthRootModule,
|
|
@@ -11,21 +11,21 @@ export class BasicInterceptor implements HttpInterceptor {
|
|
|
11
11
|
private isRefreshing = false;
|
|
12
12
|
|
|
13
13
|
session = inject(AXPSessionService);
|
|
14
|
-
token = this.session.getToken();
|
|
15
14
|
router = inject(Router);
|
|
16
15
|
|
|
17
16
|
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<any> {
|
|
17
|
+
const token = this.session.getToken();
|
|
18
18
|
let modifiedReq = request.clone();
|
|
19
19
|
if (!(request.body instanceof FormData) && !request.headers.has('Content-Type')) {
|
|
20
20
|
modifiedReq = modifiedReq.clone({ setHeaders: { 'Content-Type': 'application/json' } });
|
|
21
21
|
}
|
|
22
|
-
if (
|
|
23
|
-
modifiedReq = modifiedReq.clone({ setHeaders: { Authorization: `Bearer ${
|
|
22
|
+
if (token) {
|
|
23
|
+
modifiedReq = modifiedReq.clone({ setHeaders: { Authorization: `Bearer ${token}` } });
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
return next.handle(modifiedReq).pipe(
|
|
27
27
|
catchError((error: HttpErrorResponse) => {
|
|
28
|
-
if (error.status === 401 && !this.isRefreshing &&
|
|
28
|
+
if (error.status === 401 && !this.isRefreshing && token) {
|
|
29
29
|
return this.handle401Error(modifiedReq, next);
|
|
30
30
|
} else {
|
|
31
31
|
return throwError(() => error);
|
|
@@ -1,26 +1,9 @@
|
|
|
1
1
|
import { AXMAuthModule, AXMAuthenticationTypes, AXM_AUTH_CONFIG_TOKEN, configAuthModule } from '@acorex/modules/auth';
|
|
2
|
-
import {
|
|
3
|
-
AXPAuthModule,
|
|
4
|
-
AXP_APPLICATION_LOADER,
|
|
5
|
-
AXP_FEATURE_LOADER,
|
|
6
|
-
AXP_PERMISSION_LOADER,
|
|
7
|
-
AXP_TENANT_LOADER,
|
|
8
|
-
} from '@acorex/platform/auth';
|
|
9
2
|
import { NgModule } from '@angular/core';
|
|
10
3
|
import { environment } from '../../../environments/environment';
|
|
11
|
-
import { <%= className %>ApplicationLoader } from './application.loader';
|
|
12
|
-
import { <%= className %>Strategy } from './auth.strategy';
|
|
13
|
-
import { <%= className %>FeatureLoader } from './feature.loader';
|
|
14
|
-
import { <%= className %>PermissionLoader } from './permission.loader';
|
|
15
|
-
import { <%= className %>TenantLoader } from './tenant.loader';
|
|
16
4
|
|
|
17
5
|
@NgModule({
|
|
18
|
-
imports: [
|
|
19
|
-
AXMAuthModule,
|
|
20
|
-
AXPAuthModule.forRoot({
|
|
21
|
-
strategies: [<%= className %>Strategy],
|
|
22
|
-
}),
|
|
23
|
-
],
|
|
6
|
+
imports: [AXMAuthModule],
|
|
24
7
|
exports: [],
|
|
25
8
|
providers: [
|
|
26
9
|
{
|
|
@@ -28,6 +11,18 @@ import { <%= className %>TenantLoader } from './tenant.loader';
|
|
|
28
11
|
useValue: configAuthModule({
|
|
29
12
|
type: AXMAuthenticationTypes.UsernameEmailPassword,
|
|
30
13
|
authConfig: { ...environment.oidcConfig },
|
|
14
|
+
baseUrl: environment.baseUrl,
|
|
15
|
+
logoutUrl: environment.logoutUrl,
|
|
16
|
+
signup: {
|
|
17
|
+
enable: true,
|
|
18
|
+
url: '/auth/register',
|
|
19
|
+
},
|
|
20
|
+
defaultStrategyName: 'user-pass',
|
|
21
|
+
externalProviders: {
|
|
22
|
+
google: {
|
|
23
|
+
providerName: 'google',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
31
26
|
signinPage: {
|
|
32
27
|
description: `In this kind of post, the blogger introduces a person they've
|
|
33
28
|
interviewed and provides some background information about the
|
|
@@ -37,22 +32,6 @@ import { <%= className %>TenantLoader } from './tenant.loader';
|
|
|
37
32
|
},
|
|
38
33
|
}),
|
|
39
34
|
},
|
|
40
|
-
{
|
|
41
|
-
provide: AXP_TENANT_LOADER,
|
|
42
|
-
useClass: <%= className %>TenantLoader,
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
provide: AXP_APPLICATION_LOADER,
|
|
46
|
-
useClass: <%= className %>ApplicationLoader,
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
provide: AXP_PERMISSION_LOADER,
|
|
50
|
-
useClass: <%= className %>PermissionLoader,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
provide: AXP_FEATURE_LOADER,
|
|
54
|
-
useClass: <%= className %>FeatureLoader,
|
|
55
|
-
},
|
|
56
35
|
],
|
|
57
36
|
})
|
|
58
37
|
export class <%= className %>AuthRootModule {}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AXPAppVersion, AXPAppVersionProvider } from '@acorex/platform/common';
|
|
2
|
-
import pkg from '
|
|
2
|
+
import pkg from '../../../../../../package.json';
|
|
3
3
|
|
|
4
4
|
export class <%= className %>AppVersionProvider implements AXPAppVersionProvider {
|
|
5
5
|
provider(): Promise<AXPAppVersion> {
|
|
@@ -9,4 +9,6 @@ export class <%= className %>AppVersionProvider implements AXPAppVersionProvider
|
|
|
9
9
|
date: new Date(),
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
|
-
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region ---- Imports ----
|
|
2
|
+
|
|
3
|
+
import { AXPRegionalSetting } from '@acorex/modules/locale-management';
|
|
4
|
+
import {
|
|
5
|
+
AXP_SETTING_DEFAULT_VALUES_PROVIDERS,
|
|
6
|
+
AXPCommonSettings,
|
|
7
|
+
AXPSettingDefaultValuesProvider,
|
|
8
|
+
} from '@acorex/platform/common';
|
|
9
|
+
import { AXPThemeLayoutSetting } from '@acorex/platform/themes/shared';
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
|
|
13
|
+
//#region ---- App Default Settings Providers ----
|
|
14
|
+
|
|
15
|
+
export const APP_DEFAULT_SETTINGS_PROVIDER: AXPSettingDefaultValuesProvider = {
|
|
16
|
+
priority: 50,
|
|
17
|
+
async provide() {
|
|
18
|
+
return {
|
|
19
|
+
[AXPRegionalSetting.LocaleProfile]: 'en-US',
|
|
20
|
+
[AXPRegionalSetting.Language]: 'en-US',
|
|
21
|
+
[AXPRegionalSetting.TimeZone]: 'UTC',
|
|
22
|
+
[AXPRegionalSetting.FirstDayOfWeek]: 1,
|
|
23
|
+
[AXPThemeLayoutSetting.Palette]: 'golden-dusk',
|
|
24
|
+
[AXPThemeLayoutSetting.MenuBadgeVisible]: true,
|
|
25
|
+
[AXPCommonSettings.EnableOperationToasts]: true,
|
|
26
|
+
} as Record<string, unknown>;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const APP_DEFAULT_SETTINGS_PROVIDERS = {
|
|
31
|
+
provide: AXP_SETTING_DEFAULT_VALUES_PROVIDERS,
|
|
32
|
+
useValue: APP_DEFAULT_SETTINGS_PROVIDER,
|
|
33
|
+
multi: true,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
|
|
38
|
+
|
package/src/generators/app-module/files/src/app/modules/common/translation-root.module.ts.template
CHANGED
|
@@ -19,7 +19,8 @@ export class MyTranslationLoader implements AXTranslationLoader {
|
|
|
19
19
|
|
|
20
20
|
load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {
|
|
21
21
|
try {
|
|
22
|
-
|
|
22
|
+
const scope = options.scope?.startsWith('general-') ? options.scope?.replace('-', '/') : options.scope;
|
|
23
|
+
return this.http.get<AXTranslation>(`/assets/i18n/${options.lang}/${scope}.json`);
|
|
23
24
|
} catch (error) {
|
|
24
25
|
console.error(error);
|
|
25
26
|
return of({});
|
|
@@ -1,22 +1,39 @@
|
|
|
1
|
+
//#region ---- Imports ----
|
|
2
|
+
|
|
1
3
|
import { AXPEntity } from '@acorex/platform/common';
|
|
2
4
|
import { AXPEntityDefinitionLoader } from '@acorex/platform/layout/entity';
|
|
3
5
|
import { Injectable, Injector, inject } from '@angular/core';
|
|
6
|
+
import { RootConfig } from '../<%= name %>/const';
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
|
|
10
|
+
//#region ---- Root Entity Loader ----
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Entity definition loader for <%= className %> module entities
|
|
14
|
+
*/
|
|
5
15
|
@Injectable()
|
|
6
16
|
export class AXPRootEntityLoader implements AXPEntityDefinitionLoader {
|
|
17
|
+
|
|
18
|
+
//#region ---- Services ----
|
|
19
|
+
|
|
7
20
|
private injector = inject(Injector);
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
|
|
24
|
+
//#region ---- Get Method ----
|
|
8
25
|
|
|
9
26
|
async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {
|
|
10
|
-
|
|
27
|
+
if (moduleName === RootConfig.module.name) {
|
|
11
28
|
switch (entityName) {
|
|
12
|
-
case
|
|
13
|
-
|
|
14
|
-
resolve(entity(this.injector) as any);
|
|
15
|
-
break;
|
|
16
|
-
}
|
|
17
|
-
default:
|
|
18
|
-
resolve(null);
|
|
29
|
+
case RootConfig.entities.sample.name:
|
|
30
|
+
return (await import('../<%= name %>/sample/sample.entity')).sampleFactory(this.injector);
|
|
19
31
|
}
|
|
20
|
-
}
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
21
34
|
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
22
37
|
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
package/src/generators/app-module/files/src/app/modules/layout/layout-root.module.ts.template
CHANGED
|
@@ -1,46 +1,44 @@
|
|
|
1
|
+
import { AXMAppVersionSlotComponent } from '@acorex/modules/platform-management';
|
|
1
2
|
import {
|
|
2
3
|
AXPCommonModule,
|
|
3
4
|
AXPFooterTextSlotComponent,
|
|
4
5
|
AXPNavBarSlotComponent,
|
|
6
|
+
AXPSettingService,
|
|
5
7
|
AXP_MENU_PROVIDER,
|
|
6
8
|
AXP_PLATFORM_CONFIG_TOKEN,
|
|
7
9
|
} from '@acorex/platform/common';
|
|
8
|
-
import {
|
|
10
|
+
import { AXPWidgetCoreModule, AXPWidgetGroupEnum, AXPWidgetsCatalog, AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';
|
|
9
11
|
import { AXPEntityModule, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
|
10
12
|
import { AXPDefaultThemeModule } from '@acorex/platform/themes/default';
|
|
11
13
|
import { AXP_THEME_PALETTE_PROVIDER } from '@acorex/platform/themes/shared';
|
|
12
|
-
import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
|
|
13
|
-
|
|
14
|
-
|
|
15
14
|
import { NgModule, inject } from '@angular/core';
|
|
16
|
-
import pkg from '../../../../../../package.json';
|
|
17
15
|
import { AXPRootEntityLoader } from './entity.loader';
|
|
18
16
|
import { AXPRootMenuProvider } from './menu.provider';
|
|
19
|
-
|
|
17
|
+
import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
|
|
18
|
+
import { AXPPlatformScope } from '@acorex/platform/core';
|
|
20
19
|
@NgModule({
|
|
21
20
|
imports: [
|
|
22
21
|
AXPDefaultThemeModule,
|
|
23
22
|
AXPCommonModule,
|
|
24
23
|
AXPEntityModule,
|
|
25
|
-
|
|
24
|
+
AXPWidgetCoreModule.forChild({
|
|
26
25
|
widgets: [],
|
|
27
26
|
extendedWidgets: [],
|
|
28
27
|
}),
|
|
29
28
|
AXPComponentSlotModule.forRoot({
|
|
30
|
-
'
|
|
29
|
+
'root-footer-start': [
|
|
31
30
|
{
|
|
32
31
|
name: 'version',
|
|
33
|
-
component:
|
|
34
|
-
options: () => {
|
|
35
|
-
return { text: `v${pkg.version}` };
|
|
36
|
-
},
|
|
32
|
+
component: AXMAppVersionSlotComponent,
|
|
37
33
|
},
|
|
38
34
|
{
|
|
39
35
|
name: 'copyright',
|
|
40
36
|
component: AXPFooterTextSlotComponent,
|
|
41
|
-
options: () => {
|
|
42
|
-
const
|
|
43
|
-
|
|
37
|
+
options: async () => {
|
|
38
|
+
const platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
|
|
39
|
+
const settingService = inject(AXPSettingService);
|
|
40
|
+
const copyrightText = await settingService.scope(AXPPlatformScope.Tenant).get("organization:copyright-text");
|
|
41
|
+
return { text: copyrightText ?? platformConfig.copyright };
|
|
44
42
|
},
|
|
45
43
|
},
|
|
46
44
|
],
|
|
@@ -52,7 +50,7 @@ import { AXPRootMenuProvider } from './menu.provider';
|
|
|
52
50
|
],
|
|
53
51
|
}),
|
|
54
52
|
],
|
|
55
|
-
exports: [],
|
|
53
|
+
exports: [AXPDefaultThemeModule],
|
|
56
54
|
providers: [
|
|
57
55
|
{
|
|
58
56
|
provide: AXP_MENU_PROVIDER,
|
|
@@ -73,4 +71,4 @@ import { AXPRootMenuProvider } from './menu.provider';
|
|
|
73
71
|
},
|
|
74
72
|
],
|
|
75
73
|
})
|
|
76
|
-
export class AXPLayoutRootModule {}
|
|
74
|
+
export class AXPLayoutRootModule { }
|
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
import { AXPMenuProviderContext, AXPMenuProvider } from '@acorex/platform/common';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { Router } from '@angular/router';
|
|
4
|
-
import { cloneDeep, omit } from 'lodash-es';
|
|
5
|
-
import { Observable, of } from 'rxjs';
|
|
6
3
|
|
|
7
4
|
@Injectable()
|
|
8
5
|
export class AXPRootMenuProvider implements AXPMenuProvider {
|
|
9
6
|
async provide(context: AXPMenuProviderContext): Promise<void> {
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
text: 'Sample',
|
|
13
|
-
path: '/<%= name %>/m/sample/e/sample/list',
|
|
14
|
-
icon: 'fa-solid fa-grid-2',
|
|
15
|
-
data: {
|
|
16
|
-
//requiredPermission: '',
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
]);
|
|
7
|
+
// Intentionally empty; feature modules should register their own menus.
|
|
20
8
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
9
|
}
|
package/src/generators/app-module/files/src/app/modules/layout/theme-palette.provider.ts.template
CHANGED
|
@@ -213,6 +213,63 @@ export class AXPRootThemePaletteProvider implements AXPThemePaletteProvider {
|
|
|
213
213
|
light: '#fafafa',
|
|
214
214
|
},
|
|
215
215
|
},
|
|
216
|
+
{
|
|
217
|
+
name: 'cherry-blossom',
|
|
218
|
+
title: 'Cherry Blossom',
|
|
219
|
+
colors: {
|
|
220
|
+
primary: '#d63384',
|
|
221
|
+
secondary: '#f8b4cb',
|
|
222
|
+
success: '#20c997',
|
|
223
|
+
warning: '#fd7e14',
|
|
224
|
+
danger: '#dc3545',
|
|
225
|
+
accents: ['#6f42c1', '#0dcaf0', '#6c757d'],
|
|
226
|
+
dark: '#251821',
|
|
227
|
+
light: '#ffffff',
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'autumn-harvest',
|
|
232
|
+
title: 'Autumn Harvest',
|
|
233
|
+
colors: {
|
|
234
|
+
primary: '#d2691e',
|
|
235
|
+
secondary: '#cd853f',
|
|
236
|
+
success: '#228b22',
|
|
237
|
+
warning: '#daa520',
|
|
238
|
+
danger: '#b22222',
|
|
239
|
+
accents: ['#8b4513', '#4682b4', '#2f4f4f'],
|
|
240
|
+
dark: '#25140e',
|
|
241
|
+
light: '#ffffff',
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'arctic-glacier',
|
|
246
|
+
title: 'Arctic Glacier',
|
|
247
|
+
colors: {
|
|
248
|
+
primary: '#4169e1',
|
|
249
|
+
secondary: '#87ceeb',
|
|
250
|
+
success: '#32cd32',
|
|
251
|
+
warning: '#ffa500',
|
|
252
|
+
danger: '#dc143c',
|
|
253
|
+
accents: ['#483d8b', '#20b2aa', '#708090'],
|
|
254
|
+
dark: '#172028',
|
|
255
|
+
light: '#ffffff',
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
name: 'teal-ocean',
|
|
260
|
+
title: 'Teal Ocean',
|
|
261
|
+
colors: {
|
|
262
|
+
primary: '#018b77',
|
|
263
|
+
secondary: '#00a693',
|
|
264
|
+
neutral: '#606c76',
|
|
265
|
+
success: '#2d9c67',
|
|
266
|
+
warning: '#e9a01b',
|
|
267
|
+
danger: '#c02f1d',
|
|
268
|
+
accents: ['#006b5c', '#4db6ac', '#80cbc4'],
|
|
269
|
+
dark: '#131f1c',
|
|
270
|
+
light: '#ffffff',
|
|
271
|
+
},
|
|
272
|
+
},
|
|
216
273
|
]);
|
|
217
274
|
}
|
|
218
275
|
}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
//#region ---- Module Configuration ----
|
|
2
|
+
|
|
3
|
+
const config = {
|
|
4
|
+
i18n: '<%= name %>-module',
|
|
5
|
+
module: '<%= className %>Module',
|
|
6
6
|
};
|
|
7
|
+
|
|
8
|
+
export const RootConfig = {
|
|
9
|
+
config,
|
|
10
|
+
module: {
|
|
11
|
+
route: '<%= name %>',
|
|
12
|
+
name: '<%= className %>Module',
|
|
13
|
+
title: `t('module-name', {scope:"${config.i18n}"})`,
|
|
14
|
+
icon: 'fa-light fa-cube',
|
|
15
|
+
},
|
|
16
|
+
entities: {
|
|
17
|
+
sample: {
|
|
18
|
+
name: 'Sample',
|
|
19
|
+
title: `t("sample.individual-title",{scope:"${config.i18n}"})`,
|
|
20
|
+
source: `${config.module}.Sample`,
|
|
21
|
+
icon: 'fa-light fa-box',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region ---- Imports ----
|
|
2
|
+
|
|
3
|
+
import { AXPSessionService } from '@acorex/platform/auth';
|
|
4
|
+
import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
|
|
5
|
+
import { AXPEntityService } from '@acorex/platform/layout/entity';
|
|
6
|
+
import { inject } from '@angular/core';
|
|
7
|
+
import { firstValueFrom } from 'rxjs';
|
|
8
|
+
import { RootConfig } from './const';
|
|
9
|
+
import { <%= className %>ModuleMenuKeys } from './menu.keys';
|
|
10
|
+
import { <%= className %>ModulePermissionsKeys } from './permission.keys';
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
|
|
14
|
+
//#region ---- Menu Provider ----
|
|
15
|
+
|
|
16
|
+
export class <%= className %>ModuleMenuProvider implements AXPMenuProvider {
|
|
17
|
+
|
|
18
|
+
//#region ---- Services ----
|
|
19
|
+
|
|
20
|
+
private entityService = inject(AXPEntityService);
|
|
21
|
+
private sessionService = inject(AXPSessionService);
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
|
|
25
|
+
//#region ---- Provider Method ----
|
|
26
|
+
|
|
27
|
+
async provide(context: AXPMenuProviderContext): Promise<void> {
|
|
28
|
+
const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);
|
|
29
|
+
if (!isAuthorized) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const scope = RootConfig.config.i18n;
|
|
34
|
+
const module = RootConfig.module;
|
|
35
|
+
|
|
36
|
+
context.addItems([
|
|
37
|
+
{
|
|
38
|
+
name: <%= className %>ModuleMenuKeys.Root,
|
|
39
|
+
priority: 9000,
|
|
40
|
+
text: `t('root-menu', {scope:"${scope}"})`,
|
|
41
|
+
icon: module.icon,
|
|
42
|
+
data: {},
|
|
43
|
+
children: [
|
|
44
|
+
{
|
|
45
|
+
name: <%= className %>ModuleMenuKeys.Samples,
|
|
46
|
+
text: `t('samples-menu', {scope:"${scope}"})`,
|
|
47
|
+
path: this.entityService.createPath(module.name, RootConfig.entities.sample.name),
|
|
48
|
+
icon: RootConfig.entities.sample.icon,
|
|
49
|
+
priority: 1,
|
|
50
|
+
data: {},
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
|