@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.
Files changed (132) hide show
  1. package/package.json +2 -2
  2. package/src/generators/app-module/files/src/app/app.config.ts.template +63 -13
  3. package/src/generators/app-module/files/src/app/basic-interceptor.interceptor.ts.template +4 -4
  4. package/src/generators/app-module/files/src/app/modules/auth/auth-root.module.ts.template +13 -34
  5. package/src/generators/app-module/files/src/app/{app-version.provider.ts.template → modules/common/app-version.provider.ts.template} +4 -2
  6. package/src/generators/app-module/files/src/app/modules/common/default-settings.providers.ts.template +38 -0
  7. package/src/generators/app-module/files/src/app/modules/common/translation-root.module.ts.template +2 -1
  8. package/src/generators/app-module/files/src/app/modules/layout/entity.loader.ts.template +26 -9
  9. package/src/generators/app-module/files/src/app/modules/layout/layout-root.module.ts.template +15 -17
  10. package/src/generators/app-module/files/src/app/modules/layout/menu.provider.ts.template +1 -15
  11. package/src/generators/app-module/files/src/app/modules/layout/theme-palette.provider.ts.template +57 -0
  12. package/src/generators/app-module/files/src/app/modules/root/const.ts.template +25 -5
  13. package/src/generators/app-module/files/src/app/modules/root/menu.keys.ts.template +9 -0
  14. package/src/generators/app-module/files/src/app/modules/root/menu.provider.ts.template +61 -0
  15. package/src/generators/app-module/files/src/app/modules/root/mock.data.ts.template +13 -37
  16. package/src/generators/app-module/files/src/app/modules/root/permission-definition.provider.ts.template +51 -0
  17. package/src/generators/app-module/files/src/app/modules/root/permission.keys.ts.template +17 -0
  18. package/src/generators/app-module/files/src/app/modules/root/root.module.ts.template +39 -10
  19. package/src/generators/app-module/files/src/app/modules/root/sample/index.ts.template +9 -0
  20. package/src/generators/app-module/files/src/app/modules/root/sample/sample.entity.ts.template +146 -225
  21. package/src/generators/app-module/files/src/app/modules/root/sample/sample.module.ts.template +13 -5
  22. package/src/generators/app-module/files/src/app/modules/root/sample/sample.service.ts.template +26 -6
  23. package/src/generators/app-module/files/src/app/modules/root/sample/sample.types.ts.template +49 -11
  24. package/src/generators/app-module/files/src/app/modules/root/search-command.provider.ts.template +37 -0
  25. package/src/generators/app-module/files/src/assets/i18n/en-US/acorex.json +285 -0
  26. package/src/generators/app-module/files/src/assets/i18n/en-US/activity-log.json +31 -0
  27. package/src/generators/app-module/files/src/assets/i18n/en-US/application-management.json +112 -0
  28. package/src/generators/app-module/files/src/assets/i18n/en-US/auth.json +38 -3
  29. package/src/generators/app-module/files/src/assets/i18n/en-US/calendar-management.json +170 -0
  30. package/src/generators/app-module/files/src/assets/i18n/en-US/contact-management.json +182 -0
  31. package/src/generators/app-module/files/src/assets/i18n/en-US/content-management.json +23 -0
  32. package/src/generators/app-module/files/src/assets/i18n/en-US/conversation.json +120 -0
  33. package/src/generators/app-module/files/src/assets/i18n/en-US/customer-management.json +130 -0
  34. package/src/generators/app-module/files/src/assets/i18n/en-US/dashboard.json +231 -5
  35. package/src/generators/app-module/files/src/assets/i18n/en-US/data-management.json +93 -0
  36. package/src/generators/app-module/files/src/assets/i18n/en-US/document-management.json +321 -22
  37. package/src/generators/app-module/files/src/assets/i18n/en-US/dynamic-form-designer.json +58 -0
  38. package/src/generators/app-module/files/src/assets/i18n/en-US/extra-properties.json +39 -0
  39. package/src/generators/app-module/files/src/assets/i18n/en-US/form-template-management.json +61 -0
  40. package/src/generators/app-module/files/src/assets/i18n/en-US/general-old.json +800 -0
  41. package/src/generators/app-module/files/src/assets/i18n/en-US/general.json +993 -4
  42. package/src/generators/app-module/files/src/assets/i18n/en-US/help-desk.json +55 -0
  43. package/src/generators/app-module/files/src/assets/i18n/en-US/human-capital-management.json +144 -0
  44. package/src/generators/app-module/files/src/assets/i18n/en-US/layout-designer.json +19 -0
  45. package/src/generators/app-module/files/src/assets/i18n/en-US/locale-management.json +30 -0
  46. package/src/generators/app-module/files/src/assets/i18n/en-US/location-management.json +46 -0
  47. package/src/generators/app-module/files/src/assets/i18n/en-US/lock-system.json +40 -0
  48. package/src/generators/app-module/files/src/assets/i18n/en-US/log-management.json +29 -21
  49. package/src/generators/app-module/files/src/assets/i18n/en-US/meeting-management.json +69 -0
  50. package/src/generators/app-module/files/src/assets/i18n/en-US/module.json.template +45 -0
  51. package/src/generators/app-module/files/src/assets/i18n/en-US/notification-management.json +37 -0
  52. package/src/generators/app-module/files/src/assets/i18n/en-US/organization-management.json +59 -138
  53. package/src/generators/app-module/files/src/assets/i18n/en-US/party-management.json +300 -0
  54. package/src/generators/app-module/files/src/assets/i18n/en-US/platform-management.json +20 -79
  55. package/src/generators/app-module/files/src/assets/i18n/en-US/project-management.json +157 -0
  56. package/src/generators/app-module/files/src/assets/i18n/en-US/questionnaire.json +118 -0
  57. package/src/generators/app-module/files/src/assets/i18n/en-US/regional.json +41 -8
  58. package/src/generators/app-module/files/src/assets/i18n/en-US/report-management.json +76 -0
  59. package/src/generators/app-module/files/src/assets/i18n/en-US/security-management.json +42 -3
  60. package/src/generators/app-module/files/src/assets/i18n/en-US/settings.json +17 -0
  61. package/src/generators/app-module/files/src/assets/i18n/en-US/task-management.json +151 -0
  62. package/src/generators/app-module/files/src/assets/i18n/en-US/text-template-management.json +3 -1
  63. package/src/generators/app-module/files/src/assets/i18n/en-US/training-management.json +50 -0
  64. package/src/generators/app-module/files/src/assets/i18n/en-US/workflow-management.json +21 -0
  65. package/src/generators/app-module/files/src/assets/i18n/fa-IR/acorex.json +285 -0
  66. package/src/generators/app-module/files/src/assets/i18n/fa-IR/activity-log.json +31 -0
  67. package/src/generators/app-module/files/src/assets/i18n/fa-IR/application-management.json +112 -0
  68. package/src/generators/app-module/files/src/assets/i18n/fa-IR/auth.json +74 -38
  69. package/src/generators/app-module/files/src/assets/i18n/fa-IR/calendar-management.json +170 -0
  70. package/src/generators/app-module/files/src/assets/i18n/fa-IR/contact-management.json +182 -0
  71. package/src/generators/app-module/files/src/assets/i18n/fa-IR/content-management.json +23 -0
  72. package/src/generators/app-module/files/src/assets/i18n/fa-IR/conversation.json +80 -0
  73. package/src/generators/app-module/files/src/assets/i18n/fa-IR/customer-management.json +130 -0
  74. package/src/generators/app-module/files/src/assets/i18n/fa-IR/dashboard.json +231 -5
  75. package/src/generators/app-module/files/src/assets/i18n/fa-IR/data-management.json +93 -0
  76. package/src/generators/app-module/files/src/assets/i18n/fa-IR/document-management.json +333 -29
  77. package/src/generators/app-module/files/src/assets/i18n/fa-IR/dynamic-form-designer.json +39 -0
  78. package/src/generators/app-module/files/src/assets/i18n/fa-IR/extra-properties.json +39 -0
  79. package/src/generators/app-module/files/src/assets/i18n/fa-IR/form-template-management.json +82 -21
  80. package/src/generators/app-module/files/src/assets/i18n/fa-IR/general-old.json +800 -0
  81. package/src/generators/app-module/files/src/assets/i18n/fa-IR/general.json +987 -9
  82. package/src/generators/app-module/files/src/assets/i18n/fa-IR/global-search.json +5 -5
  83. package/src/generators/app-module/files/src/assets/i18n/fa-IR/help-desk.json +55 -0
  84. package/src/generators/app-module/files/src/assets/i18n/fa-IR/human-capital-management.json +144 -0
  85. package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout-designer.json +19 -0
  86. package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout.json +14 -14
  87. package/src/generators/app-module/files/src/assets/i18n/fa-IR/locale-management.json +30 -0
  88. package/src/generators/app-module/files/src/assets/i18n/fa-IR/location-management.json +46 -0
  89. package/src/generators/app-module/files/src/assets/i18n/fa-IR/lock-system.json +40 -0
  90. package/src/generators/app-module/files/src/assets/i18n/fa-IR/log-management.json +99 -47
  91. package/src/generators/app-module/files/src/assets/i18n/fa-IR/meeting-management.json +69 -0
  92. package/src/generators/app-module/files/src/assets/i18n/fa-IR/module.json.template +45 -0
  93. package/src/generators/app-module/files/src/assets/i18n/fa-IR/notification-management.json +59 -22
  94. package/src/generators/app-module/files/src/assets/i18n/fa-IR/organization-management.json +74 -152
  95. package/src/generators/app-module/files/src/assets/i18n/fa-IR/party-management.json +300 -0
  96. package/src/generators/app-module/files/src/assets/i18n/fa-IR/platform-management.json +38 -93
  97. package/src/generators/app-module/files/src/assets/i18n/fa-IR/project-management.json +157 -0
  98. package/src/generators/app-module/files/src/assets/i18n/fa-IR/questionnaire.json +118 -0
  99. package/src/generators/app-module/files/src/assets/i18n/fa-IR/regional.json +71 -38
  100. package/src/generators/app-module/files/src/assets/i18n/fa-IR/report-management.json +76 -0
  101. package/src/generators/app-module/files/src/assets/i18n/fa-IR/scheduler-job-management.json +4 -4
  102. package/src/generators/app-module/files/src/assets/i18n/fa-IR/security-management.json +43 -4
  103. package/src/generators/app-module/files/src/assets/i18n/fa-IR/settings.json +33 -16
  104. package/src/generators/app-module/files/src/assets/i18n/fa-IR/task-management.json +151 -0
  105. package/src/generators/app-module/files/src/assets/i18n/fa-IR/text-template-management.json +8 -5
  106. package/src/generators/app-module/files/src/assets/i18n/fa-IR/training-management.json +50 -0
  107. package/src/generators/app-module/files/src/assets/i18n/fa-IR/workflow-management.json +20 -0
  108. package/src/generators/app-module/files/src/environments/environment.dev.ts.template +1 -0
  109. package/src/generators/app-module/files/src/environments/environment.ts.template +1 -0
  110. package/src/generators/app-module/generator.js +3 -0
  111. package/src/generators/app-module/generator.js.map +1 -1
  112. package/src/generators/create-module-entity/files/__entityFileName__.entity.ts__tmpl__ +1 -1
  113. package/src/generators/create-tag-entity/files/tag-__entityFileName__.entity.ts__tmpl__ +1 -1
  114. package/src/generators/create-widget/files/__fileName__-widget-column.component.ts__tmpl__ +1 -1
  115. package/src/generators/create-widget/files/__fileName__-widget-edit.component.ts__tmpl__ +1 -1
  116. package/src/generators/create-widget/files/__fileName__-widget-filter.component.ts__tmpl__ +1 -1
  117. package/src/generators/create-widget/files/__fileName__-widget-print.component.ts__tmpl__ +1 -1
  118. package/src/generators/create-widget/files/__fileName__-widget-view.component.ts__tmpl__ +1 -1
  119. package/src/generators/create-widget/files/__fileName__-widget.config.ts__tmpl__ +2 -2
  120. package/src/generators/app-module/files/src/app/app.config.api.ts.template +0 -105
  121. package/src/generators/app-module/files/src/app/app.module.api.ts.template +0 -108
  122. package/src/generators/app-module/files/src/app/app.module.ts.template +0 -113
  123. package/src/generators/app-module/files/src/app/modules/auth/application.loader.ts.template +0 -34
  124. package/src/generators/app-module/files/src/app/modules/auth/auth.strategy.ts.template +0 -93
  125. package/src/generators/app-module/files/src/app/modules/auth/feature.loader.ts.template +0 -17
  126. package/src/generators/app-module/files/src/app/modules/auth/permission.loader.ts.template +0 -20
  127. package/src/generators/app-module/files/src/app/modules/auth/tenant.loader.ts.template +0 -26
  128. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.html.template +0 -15
  129. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.scss.template +0 -10
  130. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.ts.template +0 -20
  131. package/src/generators/app-module/files/src/assets/i18n/en-US/vehicle-management.json +0 -146
  132. package/src/generators/app-module/files/src/assets/i18n/fa-IR/vehicle-management.json +0 -144
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/platform-generator",
3
- "version": "20.3.0-next.9",
3
+ "version": "20.4.0",
4
4
  "peerDependencies": {
5
- "@acorex/modules": ">=20.0.0"
5
+ "@acorex/modules": "20.4.0"
6
6
  },
7
7
  "type": "commonjs",
8
8
  "main": "./src/index.js",
@@ -1,5 +1,5 @@
1
1
  import { ApplicationConfig, importProvidersFrom } from '@angular/core';
2
- import { provideRouter, withEnabledBlockingInitialNavigation, withComponentInputBinding, withNavigationErrorHandler, NavigationError, withDebugTracing } from '@angular/router';
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 { AXMSettingsManagementModule } from '@acorex/modules/settings-management';
15
- import { <%= className %>AuthRootModule } from './modules/auth/auth-root.module';
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 { AXCMockModule } from '@acorex/connectivity/mock';
25
- import { AXMSampleEntityModule } from './modules/<%= name %>/sample/sample.module';
26
- import { <%= upperCase(name) %>RootModule } from './modules/<%= name %>/<%= name %>-root.module';
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,AXPGlobalSearchModule } from '@acorex/modules/common';
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: 'Demo',
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 (this.token) {
23
- modifiedReq = modifiedReq.clone({ setHeaders: { Authorization: `Bearer ${this.token}` } });
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 && this.token) {
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 '../../../../package.json';
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
+
@@ -19,7 +19,8 @@ export class MyTranslationLoader implements AXTranslationLoader {
19
19
 
20
20
  load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {
21
21
  try {
22
- return this.http.get<AXTranslation>(`/assets/i18n/${options.lang}/${options.scope}.json`);
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
- return new Promise(async (resolve) => {
27
+ if (moduleName === RootConfig.module.name) {
11
28
  switch (entityName) {
12
- case 'sample': {
13
- const entity = (await import('../<%= name %>/sample/sample.entity')).sampleFactory;
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
@@ -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 { AXPLayoutBuilderModule, AXPWidgetsCatalog, AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/builder';
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
- AXPLayoutBuilderModule.forChild({
24
+ AXPWidgetCoreModule.forChild({
26
25
  widgets: [],
27
26
  extendedWidgets: [],
28
27
  }),
29
28
  AXPComponentSlotModule.forRoot({
30
- 'rootfooter-start': [
29
+ 'root-footer-start': [
31
30
  {
32
31
  name: 'version',
33
- component: AXPFooterTextSlotComponent,
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 a = inject(AXP_PLATFORM_CONFIG_TOKEN);
43
- return { text: a.copyright };
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
- context.addItems([
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
  }
@@ -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
- export const AXMSampleModuleConst = {
2
- moduleName: 'sample',
3
- moduleRoute: 'sample',
4
- categoryEntity: 'sample',
5
- templateEntity: 'templates',
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,9 @@
1
+ //#region ---- Menu Keys ----
2
+
3
+ export const <%= className %>ModuleMenuKeys = {
4
+ Root: '<%= name %>-module:menu',
5
+ Samples: '<%= name %>-module:menu:samples',
6
+ } as const;
7
+
8
+ //#endregion
9
+
@@ -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
+