bpm-core 0.0.129 → 0.0.130
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/README.md +57 -4
- package/cli/deploy/build.js +1 -1
- package/cli/deploy/git-operations-handler.js +1 -1
- package/cli/deploy/index.js +1 -1
- package/cli/generate/index.js +2 -0
- package/cli/generate/mock/index.js +17 -15
- package/cli/generate/new/angular-template/.editorconfig +13 -0
- package/cli/generate/new/angular-template/README.md +7 -0
- package/cli/generate/new/angular-template/angular.json.ejs +167 -0
- package/cli/generate/new/angular-template/build.sh +6 -0
- package/cli/generate/new/angular-template/extra-webpack.config.js.ejs +5 -0
- package/cli/generate/new/angular-template/karma.conf.js +44 -0
- package/cli/generate/new/angular-template/package.json.ejs +67 -0
- package/cli/generate/new/angular-template/protractor.conf.js +28 -0
- package/cli/generate/new/angular-template/src/app/app.component.html +35 -0
- package/cli/generate/new/angular-template/src/app/app.component.scss +0 -0
- package/cli/generate/new/angular-template/src/app/app.component.ts +81 -0
- package/cli/generate/new/angular-template/src/app/config/segment-dynamic-loader.config.ts.ejs +8 -0
- package/cli/generate/new/angular-template/src/app/i18n/ar.ts.ejs +18 -0
- package/cli/generate/new/angular-template/src/app/i18n/en.ts.ejs +18 -0
- package/cli/generate/new/angular-template/src/app/page-components/@@comp-template@@/@@.component.html.ejs +33 -0
- package/cli/generate/new/angular-template/src/app/page-components/@@comp-template@@/@@.component.ts.ejs +128 -0
- package/cli/generate/new/angular-template/src/app/page-components/@@comp-template@@/_html-field.ejs +97 -0
- package/cli/generate/new/angular-template/src/app/page-components/@@comp-template@@/_html-table.ejs +27 -0
- package/cli/generate/new/angular-template/src/app/page-components/@@comp-template@@/_ts-field.ejs +3 -0
- package/cli/generate/new/angular-template/src/app/shared/pipes/translate.pipe.ts +32 -0
- package/cli/generate/new/angular-template/src/app/shared/services/i18n.service.ts +32 -0
- package/cli/generate/new/angular-template/src/app/shared/services/segment-dynamic-loader.service.ts.ejs +49 -0
- package/cli/generate/new/angular-template/src/app/shared/services/state-machine.service.ts +119 -0
- package/cli/generate/new/angular-template/src/app/shared/types/lov.enum.ts.ejs +7 -0
- package/cli/generate/new/angular-template/src/app/templates/print-section/print-section.component.html +5 -0
- package/cli/generate/new/angular-template/src/app/templates/print-section/print-section.component.scss +0 -0
- package/cli/generate/new/angular-template/src/app/templates/print-section/print-section.component.ts.ejs +156 -0
- package/cli/generate/new/angular-template/src/app/templates/print.ts.ejs +392 -0
- package/cli/generate/new/angular-template/src/environments/environment.local.ts.ejs +40 -0
- package/cli/generate/new/angular-template/src/environments/environment.prod.ts +25 -0
- package/cli/generate/new/angular-template/src/environments/environment.ts +25 -0
- package/cli/generate/new/angular-template/src/favicon.ico +0 -0
- package/cli/generate/new/angular-template/src/index.html.ejs +14 -0
- package/cli/generate/new/angular-template/src/main.ts +49 -0
- package/cli/generate/new/angular-template/src/polyfills.ts +65 -0
- package/cli/generate/new/angular-template/src/styles.scss.ejs +121 -0
- package/cli/generate/new/angular-template/src/test.ts +26 -0
- package/cli/generate/new/angular-template/tsconfig.app.json +15 -0
- package/cli/generate/new/angular-template/tsconfig.json +50 -0
- package/cli/generate/new/angular-template/tsconfig.spec.json +18 -0
- package/cli/generate/new/angular-template/tslint.json +143 -0
- package/cli/generate/new/copy-and-generate.js +120 -0
- package/cli/generate/new/field.js +4 -0
- package/cli/generate/new/index.js +47 -0
- package/cli/generate/new/service-data.js +284 -0
- package/fesm2022/bpm-core.mjs +244 -252
- package/fesm2022/bpm-core.mjs.map +1 -1
- package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +1 -2
- package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +4 -4
- package/lib/components/shared-components/form-field/index.d.ts +0 -1
- package/lib/components/shared-components/form-field/input/input.component.d.ts +3 -2
- package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +2 -0
- package/lib/components/shared-components/form-field/radio/radio.component.d.ts +39 -2
- package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +5 -5
- package/lib/components/shared-components/form-field/shared-imports.d.ts +1 -4
- package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +76 -1
- package/lib/components/shared-components/table/table.component.d.ts +3 -3
- package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-filters.d.ts +1 -0
- package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-map-filter.directive.d.ts +4 -1
- package/lib/testComponent/request-details-section/request-details-section.component.d.ts +8 -3
- package/package.json +7 -2
- package/public-api.d.ts +1 -0
- package/lib/directives/ar.directive.d.ts +0 -11
- package/lib/directives/en.directive.d.ts +0 -11
- package/lib/directives/number.directive.d.ts +0 -14
- /package/cli/{deploy → utilities}/utilities.js +0 -0
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/index.d.ts +0 -0
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-mappers.d.ts +0 -0
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/types.d.ts +0 -0
package/README.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
|
|
4
4
|
> Ensure your project is updated to Angular 19 to avoid compatibility issues.
|
|
5
5
|
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
- [Recently Added Features](#recently-added-features)
|
|
11
|
+
- [BPM Core CLI](#bpm-core-cli)
|
|
12
|
+
- [Input Mapping and Filtering](#input-mapping-and-filtering)
|
|
13
|
+
- [Time Picker](#time-picker)
|
|
14
|
+
- [Summary Section](#summary-section)
|
|
15
|
+
- [Changes Log](#changes-log)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
6
19
|
## [Recently Added Features](#recently-added-features)
|
|
7
20
|
- ### [BPM Core CLI](#bpm-core-cli)
|
|
8
21
|
A command-line interface tool that provides helper scripts to speed up common tasks.
|
|
@@ -20,7 +33,8 @@
|
|
|
20
33
|
|
|
21
34
|
---
|
|
22
35
|
|
|
23
|
-
- `deploy`
|
|
36
|
+
- `deploy` — *Supports only library services*.
|
|
37
|
+
|
|
24
38
|
Use this command to deploy your service to one of the following environments: `dev`, `sit`, or `bat`.
|
|
25
39
|
|
|
26
40
|
The deployment process includes:
|
|
@@ -40,10 +54,16 @@
|
|
|
40
54
|
```bash
|
|
41
55
|
npx bpm-core deploy --help
|
|
42
56
|
```
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
---
|
|
58
|
+
- `generate` (alias: `g`) — *Supports only library services*.
|
|
59
|
+
|
|
60
|
+
Provides the following subcommands:
|
|
61
|
+
- `mock` (alias: `m`).
|
|
62
|
+
|
|
63
|
+
Use this subcommand to generate mock data for your service. The generated mock data will be saved in your service root as a file named `mock-output.json`.
|
|
64
|
+
|
|
65
|
+
**Example usage**
|
|
45
66
|
|
|
46
|
-
**Example usage**
|
|
47
67
|
In your terminal, navigate to the service directory and run the following command:
|
|
48
68
|
|
|
49
69
|
```bash
|
|
@@ -51,7 +71,24 @@
|
|
|
51
71
|
# or using aliases
|
|
52
72
|
npx bpm-core g m
|
|
53
73
|
```
|
|
74
|
+
---
|
|
75
|
+
- `new` (alias: `n`)
|
|
54
76
|
|
|
77
|
+
Use this subcommand to generate a new service, just like the form builder does.
|
|
78
|
+
|
|
79
|
+
**Example usage**
|
|
80
|
+
|
|
81
|
+
First, create the service directory. Then, in your terminal, navigate to that directory and run the following command:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npx bpm-core generate new --config config.json --service-code MSM
|
|
85
|
+
# or using aliases
|
|
86
|
+
npx bpm-core g n --config config.json --service-code MSM
|
|
87
|
+
```
|
|
88
|
+
The required options are:
|
|
89
|
+
- `--config` the generation config path (like a form builder config).
|
|
90
|
+
- `--service-code` the service code.
|
|
91
|
+
---
|
|
55
92
|
|
|
56
93
|
|
|
57
94
|
- ### [Input Mapping and Filtering](#input-mapping-and-filtering)
|
|
@@ -212,6 +249,22 @@
|
|
|
212
249
|
|
|
213
250
|
## [Changes Log](#changes-log)
|
|
214
251
|
|
|
252
|
+
<a id="bpm-core00130-2025-09-18"></a>
|
|
253
|
+
### [bpm-core@0.0.130 — 2025-09-18](#bpm-core00130-2025-09-18)
|
|
254
|
+
- feat(cli): add `generate new` command to generate an initial service from a config like the form builder.
|
|
255
|
+
- fix(cli/mock-data): restructure LOVs in payload and enhance logged path generation.
|
|
256
|
+
- [BREAKING CHANGE] fix(custom-searchable): update the default value of the `key` input property to 'value' (was 'description').
|
|
257
|
+
- feat(radio): activate and enhance radio component.
|
|
258
|
+
- refactor: remove ngx-translate package.
|
|
259
|
+
- [BREAKING CHANGE] refactor(input & textarea): remove 'enOnly' and 'arOnly' type values, use filterFn instead.
|
|
260
|
+
- fix(input-number): prevent dropping text into input number.
|
|
261
|
+
- [BREAKING CHANGE] refactor(attachment-section): replace `isRequired` input with `descriptionRequired` input and add `commentsRequired` input.
|
|
262
|
+
- fix(attachment-section): hide label in read-only mode if no attachments.
|
|
263
|
+
- fix(custom-searchable): add padding for search and clear icons in RTL.
|
|
264
|
+
- feat(input): add `maxLength` input property.
|
|
265
|
+
- feat(datepicker): support typed inputs for `minDate`, `maxDate`, `customMinDate`, and `customMaxDate`.
|
|
266
|
+
- feat(search-employee): add `selectedEmployee` output to emit the full details of the selected employee.
|
|
267
|
+
|
|
215
268
|
<a id="bpm-core00129-2025-09-01"></a>
|
|
216
269
|
### [bpm-core@0.0.129 — 2025-09-01](#bpm-core00129-2025-09-01)
|
|
217
270
|
- feat(cli): add generate command with mock subcommand to produce mock data
|
package/cli/deploy/build.js
CHANGED
|
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.LibraryBuild = exports.Build = void 0;
|
|
27
|
-
const utilities_1 = require("
|
|
27
|
+
const utilities_1 = require("../utilities/utilities");
|
|
28
28
|
const fs = __importStar(require("fs"));
|
|
29
29
|
class Build {
|
|
30
30
|
constructor() { }
|
|
@@ -28,7 +28,7 @@ const fs = __importStar(require("fs"));
|
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
29
|
const util_1 = require("util");
|
|
30
30
|
const child_process_1 = require("child_process");
|
|
31
|
-
const utilities_1 = require("
|
|
31
|
+
const utilities_1 = require("../utilities/utilities");
|
|
32
32
|
class GitOperationsHandler {
|
|
33
33
|
constructor() { }
|
|
34
34
|
async sync(localBuildRepoPath, serviceRemoteDir, servicePath, commitMessage, logger, env) {
|
package/cli/deploy/index.js
CHANGED
|
@@ -29,7 +29,7 @@ const commander_1 = require("commander");
|
|
|
29
29
|
const build_1 = require("./build");
|
|
30
30
|
const git_operations_handler_1 = require("./git-operations-handler");
|
|
31
31
|
const jenkins_manager_1 = require("./jenkins-manager");
|
|
32
|
-
const utilities_1 = require("
|
|
32
|
+
const utilities_1 = require("../utilities/utilities");
|
|
33
33
|
exports.deployCommand = new commander_1.Command('deploy');
|
|
34
34
|
exports.deployCommand
|
|
35
35
|
.description('Deploy a service to a specific environment, deployment process includes building the service, syncing with the remote repository, and running a Jenkins job if credentials are provided.')
|
package/cli/generate/index.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateCommand = void 0;
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const mock_1 = require("./mock");
|
|
6
|
+
const new_1 = require("./new");
|
|
6
7
|
exports.generateCommand = new commander_1.Command('generate');
|
|
7
8
|
exports.generateCommand.alias('g');
|
|
8
9
|
exports.generateCommand.addCommand(mock_1.generateMockDataCommand);
|
|
10
|
+
exports.generateCommand.addCommand(new_1.generateNewProjectCommand);
|
|
@@ -169,20 +169,22 @@ function buildPayloadWithMockData(roleToStageMockMap, requestMock) {
|
|
|
169
169
|
}
|
|
170
170
|
},
|
|
171
171
|
"meta": {
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
172
|
+
"lovs": {
|
|
173
|
+
"decision": {
|
|
174
|
+
"options": [
|
|
175
|
+
{
|
|
176
|
+
"description": "Submit to Account manager",
|
|
177
|
+
"value": "SUBMIT_TO_ACCOUNT_MANAGER",
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"description": "Send Back",
|
|
181
|
+
"value": "SENDBACK",
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"type": "button"
|
|
185
|
+
},
|
|
186
|
+
...(0, lov_1.getLOVs)()
|
|
187
|
+
}
|
|
186
188
|
}
|
|
187
189
|
};
|
|
188
190
|
return output;
|
|
@@ -201,7 +203,7 @@ function main() {
|
|
|
201
203
|
const requestTemplatePath = path.join(projectRoot, '/src/app/page-components/request-details-section/request-details-section.component.html');
|
|
202
204
|
const requestMock = getTemplateMockData(requestTemplatePath);
|
|
203
205
|
const payload = buildPayloadWithMockData(stageMocks, requestMock);
|
|
204
|
-
const outputPath = projectRoot
|
|
206
|
+
const outputPath = path.join(projectRoot, '/mock-output.json');
|
|
205
207
|
fs.writeFileSync(outputPath, JSON.stringify(payload, null, 2), 'utf-8');
|
|
206
208
|
console.log(`Mock data written to: ${outputPath}`);
|
|
207
209
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Editor configuration, see http://editorconfig.org
|
|
2
|
+
root = true
|
|
3
|
+
|
|
4
|
+
[*]
|
|
5
|
+
charset = utf-8
|
|
6
|
+
indent_style = space
|
|
7
|
+
indent_size = 2
|
|
8
|
+
insert_final_newline = true
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
|
|
11
|
+
[*.md]
|
|
12
|
+
max_line_length = off
|
|
13
|
+
trim_trailing_whitespace = false
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# BPM Core CLI
|
|
2
|
+
|
|
3
|
+
This project was generated with [BPM Core CLI](https://www.npmjs.com/package/bpm-core?activeTab=readme#bpm-core-cli).
|
|
4
|
+
|
|
5
|
+
## Development server
|
|
6
|
+
|
|
7
|
+
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/` . The app will automatically reload if you change any of the source files.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"newProjectRoot": "projects",
|
|
5
|
+
"projects": {
|
|
6
|
+
"<%=serviceCode%>": {
|
|
7
|
+
"projectType": "application",
|
|
8
|
+
"schematics": {},
|
|
9
|
+
"root": "",
|
|
10
|
+
"sourceRoot": "src",
|
|
11
|
+
"prefix": "app",
|
|
12
|
+
"architect": {
|
|
13
|
+
"build": {
|
|
14
|
+
"builder": "@angular-builders/custom-webpack:browser",
|
|
15
|
+
"options": {
|
|
16
|
+
"customWebpackConfig": {
|
|
17
|
+
"path": "extra-webpack.config.js",
|
|
18
|
+
"mergeStrategies": {
|
|
19
|
+
"externals": "replace"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"allowedCommonJsDependencies": [
|
|
23
|
+
"file-saver","handlebars","moment"
|
|
24
|
+
],
|
|
25
|
+
"outputPath": "dist",
|
|
26
|
+
"index": "src/index.html",
|
|
27
|
+
"main": "src/main.ts",
|
|
28
|
+
"tsConfig": "tsconfig.app.json",
|
|
29
|
+
"polyfills": "src/polyfills.ts",
|
|
30
|
+
"aot": true,
|
|
31
|
+
"assets": [
|
|
32
|
+
"src/favicon.ico",
|
|
33
|
+
"src/assets",
|
|
34
|
+
{
|
|
35
|
+
"glob": "**/*",
|
|
36
|
+
"input": "node_modules/bpm-core/src/lib/assets",
|
|
37
|
+
"output": "/assets/"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"styles": [
|
|
41
|
+
"node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
|
|
42
|
+
"node_modules/intl-tel-input/build/css/intlTelInput.css",
|
|
43
|
+
"node_modules/ngx-toastr/toastr.css",
|
|
44
|
+
"node_modules/basic-ui-components/dist/assets/scss/base.scss",
|
|
45
|
+
"node_modules/bpm-core/src/lib/assets/scss/base.scss",
|
|
46
|
+
"src/styles.scss"
|
|
47
|
+
],
|
|
48
|
+
"scripts": [
|
|
49
|
+
"./node_modules/intl-tel-input/build/js/intlTelInput.min.js"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"configurations": {
|
|
53
|
+
"production": {
|
|
54
|
+
"fileReplacements": [
|
|
55
|
+
{
|
|
56
|
+
"replace": "src/environments/environment.ts",
|
|
57
|
+
"with": "src/environments/environment.prod.ts"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"optimization": true,
|
|
61
|
+
"outputHashing": "none",
|
|
62
|
+
"sourceMap": false,
|
|
63
|
+
"namedChunks": false,
|
|
64
|
+
"extractLicenses": true,
|
|
65
|
+
"vendorChunk": false,
|
|
66
|
+
"buildOptimizer": true,
|
|
67
|
+
"budgets": [
|
|
68
|
+
{
|
|
69
|
+
"type": "initial",
|
|
70
|
+
"maximumWarning": "4mb",
|
|
71
|
+
"maximumError": "6mb"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"type": "anyComponentStyle",
|
|
75
|
+
"maximumWarning": "6mb",
|
|
76
|
+
"maximumError": "6mb"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"local": {
|
|
81
|
+
"fileReplacements": [
|
|
82
|
+
{
|
|
83
|
+
"replace": "src/environments/environment.ts",
|
|
84
|
+
"with": "src/environments/environment.local.ts"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"development": {
|
|
89
|
+
"buildOptimizer": false,
|
|
90
|
+
"optimization": false,
|
|
91
|
+
"vendorChunk": true,
|
|
92
|
+
"extractLicenses": false,
|
|
93
|
+
"sourceMap": true,
|
|
94
|
+
"namedChunks": true,
|
|
95
|
+
"fileReplacements": [
|
|
96
|
+
{
|
|
97
|
+
"replace": "src/environments/environment.ts",
|
|
98
|
+
"with": "src/environments/environment.local.ts"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"serve": {
|
|
105
|
+
"builder": "@angular-devkit/build-angular:dev-server",
|
|
106
|
+
"options": {},
|
|
107
|
+
"configurations": {
|
|
108
|
+
"production": {
|
|
109
|
+
"buildTarget": "<%=serviceCode%>:build:production"
|
|
110
|
+
},
|
|
111
|
+
"local": {
|
|
112
|
+
"buildTarget": "<%=serviceCode%>:build:local"
|
|
113
|
+
},
|
|
114
|
+
"development": {
|
|
115
|
+
"buildTarget": "<%=serviceCode%>:build:development"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"defaultConfiguration": "development"
|
|
119
|
+
},
|
|
120
|
+
"extract-i18n": {
|
|
121
|
+
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
122
|
+
"options": {
|
|
123
|
+
"buildTarget": "<%=serviceCode%>:build"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"test": {
|
|
127
|
+
"builder": "@angular-devkit/build-angular:karma",
|
|
128
|
+
"options": {
|
|
129
|
+
"main": "src/test.ts",
|
|
130
|
+
"karmaConfig": "./karma.conf.js",
|
|
131
|
+
"polyfills": "src/polyfills.ts",
|
|
132
|
+
"tsConfig": "src/tsconfig.spec.json",
|
|
133
|
+
"assets": [
|
|
134
|
+
"src/favicon.ico",
|
|
135
|
+
"src/assets"
|
|
136
|
+
],
|
|
137
|
+
"styles": []
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"e2e": {
|
|
141
|
+
"builder": "@angular-devkit/build-angular:protractor",
|
|
142
|
+
"options": {
|
|
143
|
+
"protractorConfig": "e2e/protractor.conf.js"
|
|
144
|
+
},
|
|
145
|
+
"configurations": {
|
|
146
|
+
"production": {
|
|
147
|
+
"devServerTarget": "<%=serviceCode%>:serve:production"
|
|
148
|
+
},
|
|
149
|
+
"development": {
|
|
150
|
+
"devServerTarget": "<%=serviceCode%>:serve:development"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"defaultConfiguration": "development"
|
|
154
|
+
},
|
|
155
|
+
"lint": {
|
|
156
|
+
"builder": "@angular-eslint/builder:lint",
|
|
157
|
+
"options": {
|
|
158
|
+
"lintFilePatterns": [
|
|
159
|
+
"src/**/*.ts",
|
|
160
|
+
"src/**/*.html"
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
npx ng build --aot -c production --output-hashing none
|
|
2
|
+
mv ./dist/main.js ./dist/wm-main.bundle.js
|
|
3
|
+
mv ./dist/styles.css ./dist/wm-styles.bundle.css
|
|
4
|
+
mv ./dist/polyfills.js ./dist/wm-polyfills.bundle.js
|
|
5
|
+
mv ./dist/scripts.js ./dist/wm-scripts.bundle.js
|
|
6
|
+
mv ./dist/runtime.js ./dist/wm-inline.bundle.js
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Karma configuration file, see link for more information
|
|
2
|
+
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
3
|
+
|
|
4
|
+
module.exports = function (config) {
|
|
5
|
+
config.set({
|
|
6
|
+
basePath: '',
|
|
7
|
+
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
8
|
+
plugins: [
|
|
9
|
+
require('karma-jasmine'),
|
|
10
|
+
require('karma-chrome-launcher'),
|
|
11
|
+
require('karma-jasmine-html-reporter'),
|
|
12
|
+
require('karma-coverage'),
|
|
13
|
+
require('@angular-devkit/build-angular/plugins/karma')
|
|
14
|
+
],
|
|
15
|
+
client: {
|
|
16
|
+
jasmine: {
|
|
17
|
+
// you can add configuration options for Jasmine here
|
|
18
|
+
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
19
|
+
// for example, you can disable the random execution with `random: false`
|
|
20
|
+
// or set a specific seed with `seed: 4321`
|
|
21
|
+
},
|
|
22
|
+
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
23
|
+
},
|
|
24
|
+
jasmineHtmlReporter: {
|
|
25
|
+
suppressAll: true // removes the duplicated traces
|
|
26
|
+
},
|
|
27
|
+
coverageReporter: {
|
|
28
|
+
dir: require('path').join(__dirname, './coverage/contractor-service'),
|
|
29
|
+
subdir: '.',
|
|
30
|
+
reporters: [
|
|
31
|
+
{ type: 'html' },
|
|
32
|
+
{ type: 'text-summary' }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
reporters: ['progress', 'kjhtml'],
|
|
36
|
+
port: 9876,
|
|
37
|
+
colors: true,
|
|
38
|
+
logLevel: config.LOG_INFO,
|
|
39
|
+
autoWatch: true,
|
|
40
|
+
browsers: ['Chrome'],
|
|
41
|
+
singleRun: false,
|
|
42
|
+
restartOnFileChange: true
|
|
43
|
+
});
|
|
44
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%=serviceCode%>",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"ng": "ng",
|
|
7
|
+
"start": "ng serve",
|
|
8
|
+
"build": "ng build --configuration production",
|
|
9
|
+
"test": "ng test",
|
|
10
|
+
"lint": "ng lint",
|
|
11
|
+
"e2e": "ng e2e"
|
|
12
|
+
},
|
|
13
|
+
"private": true,
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@angular-builders/custom-webpack": "^19.0.0",
|
|
16
|
+
"@angular/animations": "^19.0.0",
|
|
17
|
+
"@angular/cdk": "^19.0.0",
|
|
18
|
+
"@angular/common": "^19.0.0",
|
|
19
|
+
"@angular/compiler": "^19.0.0",
|
|
20
|
+
"@angular/core": "^19.0.0",
|
|
21
|
+
"@angular/forms": "^19.0.0",
|
|
22
|
+
"@angular/localize": "^19.0.0",
|
|
23
|
+
"@angular/material": "^19.0.0",
|
|
24
|
+
"@angular/platform-browser": "^19.0.0",
|
|
25
|
+
"@angular/platform-browser-dynamic": "^19.0.0",
|
|
26
|
+
"@angular/platform-server": "^19.0.0",
|
|
27
|
+
"@angular/router": "^19.0.0",
|
|
28
|
+
"@ncstate/sat-popover": "^13.1.0",
|
|
29
|
+
"basic-ui-components": "^0.0.6992",
|
|
30
|
+
"bootstrap": "^5.3.3",
|
|
31
|
+
"bpm-core": "^0.0.124",
|
|
32
|
+
"date-fns": "^4.1.0",
|
|
33
|
+
"express": "^4.18.2",
|
|
34
|
+
"file-saver": "^2.0.5",
|
|
35
|
+
"google-libphonenumber": "^3.2.42",
|
|
36
|
+
"handlebars": "^4.7.7",
|
|
37
|
+
"handlebars-loader": "^1.7.2",
|
|
38
|
+
"intl-tel-input": "^24.5.0",
|
|
39
|
+
"moment": "^2.29.4",
|
|
40
|
+
"moment-hijri": "^2.30.0",
|
|
41
|
+
"ng-dynamic-component": "^10.7.0",
|
|
42
|
+
"ngx-bootstrap": "^19.0.2",
|
|
43
|
+
"ngx-intl-tel-input-gg": "^1.0.12",
|
|
44
|
+
"ngx-mask": "^18.0.0",
|
|
45
|
+
"ngx-scrollbar": "^15.1.3",
|
|
46
|
+
"ngx-toastr": "^19.0.0",
|
|
47
|
+
"rxjs": "~7.8.0",
|
|
48
|
+
"tslib": "^2.3.0",
|
|
49
|
+
"zone.js": "~0.14.10"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@angular-devkit/build-angular": "^19.0.0",
|
|
53
|
+
"@angular/cli": "^19.0.0",
|
|
54
|
+
"@angular/compiler-cli": "^19.0.0",
|
|
55
|
+
"@types/express": "^4.17.17",
|
|
56
|
+
"@types/jasmine": "~5.1.0",
|
|
57
|
+
"@types/node": "^18.18.0",
|
|
58
|
+
"jasmine-core": "~5.2.0",
|
|
59
|
+
"karma": "~6.4.0",
|
|
60
|
+
"karma-chrome-launcher": "~3.2.0",
|
|
61
|
+
"karma-coverage": "~2.2.0",
|
|
62
|
+
"karma-jasmine": "~5.1.0",
|
|
63
|
+
"karma-jasmine-html-reporter": "~2.1.0",
|
|
64
|
+
"ng-packagr": "^18.2.1",
|
|
65
|
+
"typescript": "~5.5.2"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Protractor configuration file, see link for more information
|
|
2
|
+
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
|
3
|
+
|
|
4
|
+
const { SpecReporter } = require('jasmine-spec-reporter');
|
|
5
|
+
|
|
6
|
+
exports.config = {
|
|
7
|
+
allScriptsTimeout: 11000,
|
|
8
|
+
specs: [
|
|
9
|
+
'./e2e/**/*.e2e-spec.ts'
|
|
10
|
+
],
|
|
11
|
+
capabilities: {
|
|
12
|
+
'browserName': 'chrome'
|
|
13
|
+
},
|
|
14
|
+
directConnect: true,
|
|
15
|
+
baseUrl: 'http://localhost:4200/',
|
|
16
|
+
framework: 'jasmine',
|
|
17
|
+
jasmineNodeOpts: {
|
|
18
|
+
showColors: true,
|
|
19
|
+
defaultTimeoutInterval: 30000,
|
|
20
|
+
print: function() {}
|
|
21
|
+
},
|
|
22
|
+
onPrepare() {
|
|
23
|
+
require('ts-node').register({
|
|
24
|
+
project: 'e2e/tsconfig.e2e.json'
|
|
25
|
+
});
|
|
26
|
+
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<core-layout>
|
|
2
|
+
@if (!loading['form']) {
|
|
3
|
+
@if (noError) {
|
|
4
|
+
<core-service-header
|
|
5
|
+
[isLoading]="false"
|
|
6
|
+
[formTitle]="'formTitle' | translate"
|
|
7
|
+
[form]="form">
|
|
8
|
+
<app-print-section [form]="form">
|
|
9
|
+
</app-print-section>
|
|
10
|
+
</core-service-header>
|
|
11
|
+
<app-workflow-section
|
|
12
|
+
workflow
|
|
13
|
+
[segmentDynamicLoaderService]="segmentDynamicLoader"
|
|
14
|
+
[form]="form" [sections]="form?.['sections']">
|
|
15
|
+
<app-request-details-section
|
|
16
|
+
[section]="form.sections[0]" [form]="form" [lov]="form?.lovs" className="form-section"
|
|
17
|
+
[isReadOnly]="form.sections[0].header.readOnly"></app-request-details-section>
|
|
18
|
+
</app-workflow-section>
|
|
19
|
+
} @else {
|
|
20
|
+
@if (errorMessage?.length) {
|
|
21
|
+
<ds-message></ds-message>
|
|
22
|
+
@for (item of errorMessage; track $index) {
|
|
23
|
+
<div class="d-flex justify-content-center">
|
|
24
|
+
<span class="fc-coral fs-18" [innerHTML]="item?.['message']"></span>
|
|
25
|
+
</div>
|
|
26
|
+
}
|
|
27
|
+
} @else {
|
|
28
|
+
<ds-message label="{{'errorOccurred' | translate}}"></ds-message>
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
} @else {
|
|
32
|
+
<core-service-header header [formTitle]="'formTitle' | translate" [isLoading]="true">
|
|
33
|
+
</core-service-header>
|
|
34
|
+
}
|
|
35
|
+
</core-layout>
|
|
File without changes
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA} from '@angular/core';
|
|
2
|
+
import {
|
|
3
|
+
CoreService,
|
|
4
|
+
Form,
|
|
5
|
+
LayoutComponent,
|
|
6
|
+
ServiceHeaderComponent,
|
|
7
|
+
SidenavService,
|
|
8
|
+
WorkflowSectionComponent,
|
|
9
|
+
CoreI18nService
|
|
10
|
+
} from 'bpm-core';
|
|
11
|
+
import {DynamicComponentInjectorToken} from 'ng-dynamic-component';
|
|
12
|
+
import {RequestDetailsSectionComponent} from "./page-components/request-details-section/request-details-section.component";
|
|
13
|
+
import {SegmentDynamicLoaderService} from './shared/services/segment-dynamic-loader.service';
|
|
14
|
+
import {DOCUMENT, isPlatformBrowser} from "@angular/common";
|
|
15
|
+
import { Inject, PLATFORM_ID} from '@angular/core';
|
|
16
|
+
import {Router} from "@angular/router";
|
|
17
|
+
import {PrintSectionComponent} from "./templates/print-section/print-section.component";
|
|
18
|
+
import {I18nService} from "./shared/services/i18n.service";
|
|
19
|
+
import { TranslatePipe } from './shared/pipes/translate.pipe';
|
|
20
|
+
|
|
21
|
+
@Component({
|
|
22
|
+
selector: 'app-wm-root',
|
|
23
|
+
standalone: true,
|
|
24
|
+
templateUrl: './app.component.html',
|
|
25
|
+
styleUrl: './app.component.scss',
|
|
26
|
+
imports: [
|
|
27
|
+
LayoutComponent,
|
|
28
|
+
ServiceHeaderComponent,
|
|
29
|
+
WorkflowSectionComponent,
|
|
30
|
+
RequestDetailsSectionComponent,
|
|
31
|
+
PrintSectionComponent,
|
|
32
|
+
TranslatePipe
|
|
33
|
+
],
|
|
34
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
|
|
35
|
+
providers: [
|
|
36
|
+
{provide: DynamicComponentInjectorToken, useValue: { /* your value here */}}
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
})
|
|
40
|
+
export class AppComponent implements AfterViewInit {
|
|
41
|
+
loading = {
|
|
42
|
+
form: false
|
|
43
|
+
}
|
|
44
|
+
form: Form
|
|
45
|
+
noError = true;
|
|
46
|
+
errorMessage: [];
|
|
47
|
+
constructor(
|
|
48
|
+
public segmentDynamicLoader: SegmentDynamicLoaderService,
|
|
49
|
+
@Inject(DOCUMENT) private readonly document: Document,
|
|
50
|
+
private readonly router: Router,
|
|
51
|
+
private readonly sidenavService: SidenavService,
|
|
52
|
+
public i18n: I18nService,
|
|
53
|
+
private readonly coreService: CoreService,
|
|
54
|
+
@Inject(PLATFORM_ID) private readonly platformId: any
|
|
55
|
+
) {
|
|
56
|
+
this.loading['form'] = true
|
|
57
|
+
this.coreService.loadForm().subscribe({
|
|
58
|
+
next: (form: any) => {
|
|
59
|
+
if (form instanceof Form) {
|
|
60
|
+
this.form = form;
|
|
61
|
+
} else {
|
|
62
|
+
this.noError = false;
|
|
63
|
+
}
|
|
64
|
+
this.loading['form'] = false;
|
|
65
|
+
},
|
|
66
|
+
error: (err) => {
|
|
67
|
+
this.noError = false;
|
|
68
|
+
this.loading['form'] = false;
|
|
69
|
+
this.errorMessage = err?.error?.meta?.messages;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
ngAfterViewInit() {
|
|
75
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
76
|
+
const direction = this.i18n.getLanguage() == 'en' ? 'ltr' : 'rtl';
|
|
77
|
+
document.documentElement.setAttribute('dir', direction);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
}
|