@eui/cli 21.0.0-alpha.9 → 21.0.0-next.10

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 (92) hide show
  1. package/README.md +1 -1
  2. package/bin/eui-cli.js +61 -41
  3. package/bin/scripts/build-app.js +12 -0
  4. package/bin/scripts/lint-app.js +22 -0
  5. package/bin/scripts/new.js +39 -0
  6. package/bin/scripts/serve-app.js +12 -0
  7. package/lib/app-utils/build.js +176 -0
  8. package/lib/app-utils/projects.js +41 -0
  9. package/lib/app-utils/serve.js +78 -0
  10. package/lib/build.js +14 -39
  11. package/lib/cli.js +22 -5
  12. package/lib/config.js +1 -0
  13. package/lib/generators.js +5 -8
  14. package/lib/install.js +7 -7
  15. package/lib/post-build.js +1 -3
  16. package/lib/skeletons/_angular/base/angular.json +12 -25
  17. package/lib/skeletons/_angular/base/eslint.config.js +43 -0
  18. package/lib/skeletons/_angular/base/package.json +29 -23
  19. package/lib/skeletons/_angular/base/src/app/app-starter.service.spec.ts +8 -6
  20. package/lib/skeletons/_angular/base/src/app/app.component.html +3 -3
  21. package/lib/skeletons/_angular/base/src/app/app.component.spec.ts +15 -13
  22. package/lib/skeletons/_angular/base/src/app/app.component.ts +2 -2
  23. package/lib/skeletons/_angular/base/src/app/features/home/home.component.html +1 -1
  24. package/lib/skeletons/_angular/base/src/app/features/home/home.component.ts +5 -3
  25. package/lib/skeletons/_angular/base/src/app/features/module1/components/page1/page1.component.html +1 -1
  26. package/lib/skeletons/_angular/base/src/app/features/module1/components/page2/page2.component.html +1 -1
  27. package/lib/skeletons/_angular/base/src/app/features/module1/module1.component.html +2 -4
  28. package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.html +1 -1
  29. package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.ts +1 -1
  30. package/lib/skeletons/_angular/base/src/dummy.spec.ts +2 -0
  31. package/lib/skeletons/_angular/base/src/karma.conf.js +42 -2
  32. package/lib/skeletons/_angular/base/src/tsconfig.app.json +3 -0
  33. package/lib/skeletons/_angular/base/src/tsconfig.spec.json +1 -5
  34. package/lib/skeletons/_angular/base/tsconfig.json +28 -24
  35. package/lib/skeletons/_angular/base-mobile/package.json +4 -4
  36. package/lib/skeletons/_angular/base-mobile/tsconfig.json +27 -0
  37. package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.ts +16 -16
  38. package/lib/skeletons/_angular/options/ecl-ec/src/app/features/home/home.component.ts +4 -4
  39. package/lib/skeletons/_angular/options/ecl-eu/src/app/app.component.ts +16 -16
  40. package/lib/skeletons/_angular/options/ecl-eu/src/app/features/home/home.component.ts +4 -4
  41. package/lib/skeletons/_angular/options/ecl-eu/src/app/shared/shared.module.ts +1 -5
  42. package/lib/skeletons/_angular/options/pnpm/package.json +72 -0
  43. package/lib/utils.js +204 -0
  44. package/package.json +10 -13
  45. package/.version.properties +0 -1
  46. package/lib/skeletons/_angular/base/.euirc.json +0 -8
  47. package/lib/skeletons/_angular/base/src/.eslintrc.json +0 -121
  48. package/lib/skeletons/web-symfony/myapp-web/angular.json +0 -169
  49. package/lib/skeletons/web-symfony/myapp-web/package.json +0 -23
  50. package/lib/skeletons/web-symfony/myapp-web/src/app/app-routing.module.ts +0 -18
  51. package/lib/skeletons/web-symfony/myapp-web/src/app/app.component.ts +0 -77
  52. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.html +0 -160
  53. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.scss +0 -0
  54. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/components/products.component.ts +0 -104
  55. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/models/product.model.ts +0 -6
  56. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products-routing.module.ts +0 -16
  57. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/products.module.ts +0 -16
  58. package/lib/skeletons/web-symfony/myapp-web/src/app/features/products/services/products.service.ts +0 -29
  59. package/lib/skeletons/web-symfony/myapp-web/src/environments/environment.ts +0 -17
  60. package/lib/skeletons/web-symfony/myapp-web-rest/.env +0 -28
  61. package/lib/skeletons/web-symfony/myapp-web-rest/bin/console +0 -42
  62. package/lib/skeletons/web-symfony/myapp-web-rest/composer.json +0 -67
  63. package/lib/skeletons/web-symfony/myapp-web-rest/composer.lock +0 -3572
  64. package/lib/skeletons/web-symfony/myapp-web-rest/config/bootstrap.php +0 -21
  65. package/lib/skeletons/web-symfony/myapp-web-rest/config/bundles.php +0 -12
  66. package/lib/skeletons/web-symfony/myapp-web-rest/config/config.yml +0 -0
  67. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/cache.yaml +0 -19
  68. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/dev/routing.yaml +0 -3
  69. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine.yaml +0 -29
  70. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/doctrine_migrations.yaml +0 -5
  71. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/framework.yaml +0 -17
  72. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/prod/doctrine.yaml +0 -32
  73. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/routing.yaml +0 -4
  74. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/sensio_framework_extra.yaml +0 -3
  75. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/framework.yaml +0 -4
  76. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/test/routing.yaml +0 -3
  77. package/lib/skeletons/web-symfony/myapp-web-rest/config/packages/twig.yaml +0 -4
  78. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/annotations.yaml +0 -3
  79. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes/dev/twig.yaml +0 -3
  80. package/lib/skeletons/web-symfony/myapp-web-rest/config/routes.yaml +0 -3
  81. package/lib/skeletons/web-symfony/myapp-web-rest/config/services.yaml +0 -27
  82. package/lib/skeletons/web-symfony/myapp-web-rest/public/index.php +0 -27
  83. package/lib/skeletons/web-symfony/myapp-web-rest/src/Controller/ProductController.php +0 -196
  84. package/lib/skeletons/web-symfony/myapp-web-rest/src/Entity/Product.php +0 -99
  85. package/lib/skeletons/web-symfony/myapp-web-rest/src/Kernel.php +0 -53
  86. package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101623.php +0 -31
  87. package/lib/skeletons/web-symfony/myapp-web-rest/src/Migrations/Version20190604101638.php +0 -35
  88. package/lib/skeletons/web-symfony/myapp-web-rest/src/Repository/ProductRepository.php +0 -51
  89. package/lib/skeletons/web-symfony/myapp-web-rest/symfony.lock +0 -274
  90. package/lib/skeletons/web-symfony/myapp-web-rest/templates/base.html.twig +0 -12
  91. package/lib/skeletons/web-symfony/myapp-web-rest/templates/lucky/number.html.twig +0 -1
  92. package/lib/skeletons/web-symfony/myapp-web-rest/templates/product/index.html.twig +0 -20
@@ -1,169 +0,0 @@
1
- {
2
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
- "version": 1,
4
- "newProjectRoot": "projects",
5
- "defaultProject": "app",
6
- "cli": {
7
- "analytics": false
8
- },
9
- "projects": {
10
- "app": {
11
- "root": "",
12
- "sourceRoot": "src",
13
- "projectType": "application",
14
- "prefix": "app",
15
- "schematics": {
16
- "@schematics/angular:component": {
17
- "styleext": "scss"
18
- }
19
- },
20
- "architect": {
21
- "build": {
22
- "builder": "ngx-build-plus:build",
23
- "options": {
24
- "outputPath": "dist",
25
- "index": "src/index.html",
26
- "main": "src/main.ts",
27
- "polyfills": "src/polyfills.ts",
28
- "tsConfig": "src/tsconfig.app.json",
29
- "assets": [
30
- "src/favicon.ico",
31
- "src/assets",
32
- {
33
- "glob": "**/*",
34
- "input": "node_modules/@eui/core/assets/",
35
- "output": "./assets"
36
- },
37
- {
38
- "glob": "**/*",
39
- "input": "node_modules/@eui/styles/dist/assets/images",
40
- "output": "./assets/images"
41
- }
42
- ],
43
- "styles": [
44
- "node_modules/@eui/styles/dist/styles/eui.css",
45
- "node_modules/@eui/styles/dist/styles/eui-utilities.css",
46
- "node_modules/@eui/styles/dist/styles/eui-legacy-bootstrap-utilities.css",
47
- "src/styles.scss"
48
- ]
49
- },
50
- "configurations": {
51
- "production": {
52
- "fileReplacements": [
53
- {
54
- "replace": "src/environments/environment.ts",
55
- "with": "src/environments/environment.prod.ts"
56
- }
57
- ],
58
- "optimization": true,
59
- "outputHashing": "all",
60
- "sourceMap": false,
61
- "extractCss": true,
62
- "namedChunks": true,
63
- "aot": true,
64
- "extractLicenses": true,
65
- "vendorChunk": false,
66
- "buildOptimizer": true,
67
- "budgets": [
68
- {
69
- "type": "initial",
70
- "maximumWarning": "3mb",
71
- "maximumError": "5mb"
72
- }
73
- ]
74
- },
75
- "dev": {
76
- "fileReplacements": [
77
- {
78
- "replace": "src/environments/environment.ts",
79
- "with": "src/environments/environment.dev.ts"
80
- }
81
- ]
82
- }
83
- }
84
- },
85
- "serve": {
86
- "builder": "@angular-devkit/build-angular:dev-server",
87
- "options": {
88
- "browserTarget": "app:build"
89
- },
90
- "configurations": {
91
- "proxy-mock": {
92
- "browserTarget": "app:build",
93
- "proxyConfig": "proxy-mock.conf.json"
94
- },
95
- "proxy": {
96
- "browserTarget": "app:build",
97
- "proxyConfig": "proxy.conf.json"
98
- },
99
- "production": {
100
- "browserTarget": "app:build:production"
101
- }
102
- }
103
- },
104
- "test": {
105
- "builder": "@angular-devkit/build-angular:karma",
106
- "options": {
107
- "main": "src/test.ts",
108
- "polyfills": "src/polyfills.ts",
109
- "tsConfig": "src/tsconfig.spec.json",
110
- "karmaConfig": "src/karma.conf.js",
111
- "styles": [
112
- "src/styles.scss"
113
- ],
114
- "scripts": [],
115
- "assets": [
116
- "src/favicon.ico",
117
- "src/assets",
118
- {
119
- "glob": "**/*",
120
- "input": "node_modules/@eui/core/assets/",
121
- "output": "./assets"
122
- }
123
- ]
124
- }
125
- },
126
- "lint": {
127
- "builder": "@angular-devkit/build-angular:tslint",
128
- "options": {
129
- "tsConfig": [
130
- "src/tsconfig.app.json",
131
- "src/tsconfig.spec.json"
132
- ],
133
- "exclude": [
134
- "**/node_modules/**"
135
- ]
136
- }
137
- }
138
- }
139
- },
140
- "app-e2e": {
141
- "root": "e2e/",
142
- "projectType": "application",
143
- "prefix": "",
144
- "architect": {
145
- "e2e": {
146
- "builder": "@angular-devkit/build-angular:protractor",
147
- "options": {
148
- "protractorConfig": "e2e/protractor.conf.js",
149
- "devServerTarget": "app:serve"
150
- },
151
- "configurations": {
152
- "production": {
153
- "devServerTarget": "app:serve:production"
154
- }
155
- }
156
- },
157
- "lint": {
158
- "builder": "@angular-devkit/build-angular:tslint",
159
- "options": {
160
- "tsConfig": "e2e/tsconfig.e2e.json",
161
- "exclude": [
162
- "**/node_modules/**"
163
- ]
164
- }
165
- }
166
- }
167
- }
168
- }
169
- }
@@ -1,23 +0,0 @@
1
- {
2
- "name": "eui-angular-app",
3
- "version": "21.0.0-alpha.8",
4
- "license": "EUPL-1.1",
5
- "description": "eUI JEE Symfony app scripts",
6
- "scripts": {
7
- "ng": "ng",
8
- "e2e": "ng e2e",
9
- "stylelint": "stylelint \"src/**/*.scss\"",
10
- "tslint": "tslint \"src/**/*.ts\"",
11
- "clean": "rimraf out-tsc dist packages/**/dist/** packages/**/out-tsc/** packages/**/src/lib/**/*.js packages/**/src/lib/**/*.js.map",
12
- "start-symfony": "eui-scripts start-symfony --configuration=dev",
13
- "start-serve": "eui-scripts serve-app --configuration=proxy-mock",
14
- "start": "npm run clean && npm-run-all --parallel start-symfony start-serve",
15
- "start-mean": "npm run clean && npm-run-all --parallel start-mock-server-mean start-serve",
16
- "start-proxy": "npm run clean && eui-scripts serve-app --configuration=proxy",
17
- "generate-changelog": "eui-scripts generate-changelog"
18
- },
19
- "private": true,
20
- "dependencies": {
21
- "@eui/deps-base": "21.0.0-alpha.8"
22
- }
23
- }
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { RouterModule, Routes } from '@angular/router';
3
-
4
- const routes: Routes = [
5
- { path: '', redirectTo: 'screen/home', pathMatch: 'full' },
6
- { path: 'index.jsp', redirectTo: 'screen/home' },
7
- { path: 'screen/home', loadChildren: './features/home/home.module#Module' },
8
- { path: 'screen/products', loadChildren: './features/products/products.module#ProductsModule' },
9
- { path: 'screen/module1', loadChildren: './features/module1/module1.module#Module' },
10
- { path: 'screen/module2', loadChildren: './features/module2/module2.module#Module' }
11
- ];
12
-
13
- @NgModule({
14
- imports: [
15
- RouterModule.forRoot(routes),
16
- ],
17
- })
18
- export class AppRoutingModule {}
@@ -1,77 +0,0 @@
1
- import { Component, OnInit } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { Observable } from 'rxjs/Observable';
4
- import { Store } from '@ngrx/store';
5
-
6
- import { UserState, getUserState, UxLink, UxLanguage } from '@eui/core';
7
-
8
- @Component({
9
- selector: 'app-root',
10
- templateUrl: './app.component.html'
11
- })
12
- export class AppComponent implements OnInit {
13
- userState: Observable<UserState>;
14
-
15
- menuLinks: UxLink[] = [];
16
- notificationLinks: UxLink[] = [];
17
-
18
- constructor(
19
- private translateService: TranslateService,
20
- private store: Store<any>,
21
- ) {
22
- }
23
-
24
- ngOnInit() {
25
- this.userState = <any>this.store.select(getUserState);
26
-
27
- this._createMenuLinks();
28
- this._createNotifications();
29
- }
30
-
31
- onLanguageChanged(language: UxLanguage) {
32
- this.translateService.use(language.code);
33
- }
34
-
35
- private _createMenuLinks() {
36
- this.menuLinks = [
37
- new UxLink(
38
- {
39
- label: 'HOME', url: '/screen/home', isHome: true
40
- }
41
- ),
42
- new UxLink(
43
- {
44
- label: 'Module1', url: '/screen/module1', children: [
45
- new UxLink({ label: 'disabled item', disabled: true }),
46
- new UxLink({ label: 'Page 1', url: '/screen/module1/page1' }),
47
- new UxLink({ label: 'Page 2', url: '/screen/module1/page2' })
48
- ]
49
- }
50
- ),
51
- new UxLink(
52
- {
53
- label: 'Module2', url: '/screen/module2'
54
- }
55
- ),
56
- new UxLink(
57
- {
58
- label: 'Products', url: '/screen/products'
59
- }
60
- )
61
- ];
62
- }
63
-
64
- private _createNotifications() {
65
- this.notificationLinks = [
66
- new UxLink(
67
- { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
68
- ),
69
- new UxLink(
70
- { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
71
- ),
72
- new UxLink(
73
- { label: 'Notification title', subLabel: 'This is the description of the noficiation' }
74
- ),
75
- ];
76
- }
77
- }
@@ -1,160 +0,0 @@
1
- <div class="page-title">
2
- List of products
3
- </div>
4
-
5
- <div class="row">
6
- <div class="col-sm-8">
7
- <ux-panel label="List of Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
8
-
9
- <uxPanelHeaderRightContent>
10
- <div class="flex-container">
11
- <ux-button-group [hasPairedIcon]="true" styleClass="ml-3" (clicked)="addItem()">
12
- <ux-button-group-item label="Create new product"></ux-button-group-item>
13
- <ux-button-group-item iconClass="fa fa-plus"></ux-button-group-item>
14
- </ux-button-group>
15
- </div>
16
- </uxPanelHeaderRightContent>
17
-
18
-
19
- <ng-container *ngIf="products && mode !== 'load'; else loading">
20
-
21
-
22
- <p-table [value]="products" [paginator]="true" [rows]="10" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" >
23
- <ng-template pTemplate="header" let-columns>
24
- <tr>
25
- <th [pSortableColumn]="'productId'">ID <p-sortIcon [field]="'productId'"></p-sortIcon></th>
26
- <th [pSortableColumn]="'name'">Name <p-sortIcon [field]="'name'"></p-sortIcon></th>
27
- <th [pSortableColumn]="'price'">Price <p-sortIcon [field]="'price'"></p-sortIcon></th>
28
- <th [pSortableColumn]="'description'">Description <p-sortIcon [field]="'description'"></p-sortIcon></th>
29
- <th class="actionsColumn">ACTIONS</th>
30
- </tr>
31
- </ng-template>
32
-
33
- <ng-template pTemplate="body" let-rowData let-columns="columns" let-rowIndex="rowIndex" >
34
- <tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
35
- <td>{{rowData.productId}}</td>
36
- <td>
37
- <ux-badge typeClass="default">
38
- {{ rowData.name }}
39
- </ux-badge>
40
- </td>
41
- <td>{{rowData.price}}</td>
42
- <td>{{rowData.description}}</td>
43
-
44
- <td class="actionsColumn">
45
- <div class="flex-container justify-content-center">
46
- <ux-button [isFlat]="true" iconClass="fa fa-pencil" typeClass="info" (click)="editProduct(rowData)"></ux-button>
47
- <ux-button [isFlat]="true" iconClass="fa fa-trash-o" typeClass="danger" (click)="deleteProduct(rowData.productId)"></ux-button>
48
- </div>
49
- </td>
50
- </tr>
51
- </ng-template>
52
-
53
-
54
- </p-table>
55
- </ng-container>
56
-
57
-
58
-
59
- <ng-template #loading>
60
- <ng-container *ngIf="! serviceError; else error">
61
- Loading...
62
- </ng-container>
63
- </ng-template>
64
-
65
- <ng-template #error>
66
- <ux-alert typeClass="warning">
67
- Unable to retrieve the list of products; please <a (click)="loadProducts()">try again</a> later.<br/>
68
- If the problem persists, please contact the administrator.<br/>
69
- <br/>
70
- <a (click)="serviceErrorVisible = !serviceErrorVisible">
71
- <span *ngIf="!serviceErrorVisible">Show technical reason</span>
72
- <span *ngIf="serviceErrorVisible">Hide technical reason</span>
73
- </a>
74
- <pre *ngIf="serviceErrorVisible">{{serviceError.message}}</pre>
75
- </ux-alert>
76
- </ng-template>
77
- </ux-panel>
78
- </div>
79
-
80
- <div class="col-sm-4">
81
- <ux-panel label="Products" [isBlocked]="mode === 'load'" contentHeight="60vh">
82
- <pre>{{products | json}}</pre>
83
- </ux-panel>
84
- </div>
85
- </div>
86
-
87
-
88
-
89
- <!-- MODAL EDIT / NEW-->
90
- <ux-modal id="modal1b" titleLabel="{{actionLabel}}" [isFooterVisible]="false" [isSizeSmall]="true" (onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)">
91
- <uxModalBody>
92
- <form [formGroup]="formInput" *ngIf="ItemSelected">
93
- <div class="row">
94
- <div class="col-10">
95
- <ux-form-group label="Name:" isRequired="true">
96
- <ux-form-control [(ngModel)]="ItemSelected.name" formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
97
- </ux-form-group>
98
-
99
- <ux-form-group label="Price:" isRequired="true">
100
- <ux-form-control [(ngModel)]="ItemSelected.price" [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
101
- </ux-form-group>
102
-
103
-
104
- <ux-form-group label="Description:" isRequired=true>
105
- <ux-form-control [(ngModel)]="ItemSelected.description" [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
106
- </ux-form-group>
107
-
108
- <div class="text-right mt-3">
109
- <ux-button (click)="onUpdateSubmit(ItemSelected)" class='ml-3' [isDisabled]="!formInput.valid">
110
- Update Product
111
- </ux-button>
112
- </div>
113
-
114
- </div>
115
- </div>
116
- </form>
117
-
118
-
119
- <form [formGroup]="formInput" *ngIf="!ItemSelected">
120
- <div class="row">
121
- <div class="col-10">
122
- <ux-form-group label="Name:" isRequired="true">
123
- <ux-form-control formControlName="name" placeholderLabel="es: iPad Pro 512GB" ></ux-form-control>
124
- </ux-form-group>
125
-
126
- <ux-form-group label="Price:" isRequired="true">
127
- <ux-form-control [isNumber]="true" formControlName="price" placeholderLabel="price"></ux-form-control>
128
- </ux-form-group>
129
-
130
-
131
- <ux-form-group label="Description:" isRequired=true>
132
- <ux-form-control [isTextarea]="true" formControlName="description" placeholderLabel="description"></ux-form-control>
133
- </ux-form-group>
134
-
135
- <div class="text-right mt-3">
136
- <ux-button (click)="onSubmit()" class='ml-3' [isDisabled]="!formInput.valid">
137
- Save Product
138
- </ux-button>
139
- </div>
140
-
141
- </div>
142
- </div>
143
- </form>
144
-
145
-
146
-
147
-
148
- </uxModalBody>
149
- </ux-modal>
150
-
151
-
152
- <!-- MODAL DELETE -->
153
- <ux-modal id="modaldelete" titleLabel="Modal title" [isSizeSmall]="true"
154
- [isHandleCloseOnDismiss]="false" [isHandleCloseOnAccept]="false" [isHandleCloseOnClose]="false"
155
- (onDismiss)="onModalDismiss($event)" (onAccept)="onModalAccept($event)" (onClose)="onModalClose($event)">
156
- <uxModalBody>
157
- <p>Are you sure to delete it?</p>
158
- </uxModalBody>
159
- </ux-modal>
160
-
@@ -1,104 +0,0 @@
1
- import { Component, OnInit } from '@angular/core';
2
- import { ProductsService } from '../services/products.service';
3
- import { Product } from '../models/product.model';
4
- import { UxService } from '@eui/core';
5
- import { FormGroup, FormBuilder, Validators } from '@angular/forms';
6
-
7
- @Component({
8
- templateUrl: './products.component.html',
9
- styleUrls: ['./products.component.scss'],
10
- })
11
- export class ProductsComponent implements OnInit {
12
- formInput: FormGroup;
13
- product: Product;
14
- products: Array<Product>;
15
- actionLabel: string;
16
- serviceError: null;
17
- IdSelected: number;
18
- ItemSelected: Product;
19
- mode = null;
20
- modes: string [] = [];
21
-
22
-
23
- constructor(protected productsService: ProductsService, public uxService: UxService, private fb: FormBuilder) {
24
-
25
- }
26
-
27
- ngOnInit() {
28
- this.loadProducts();
29
- this.buildForm();
30
-
31
- }
32
-
33
- loadProducts() {
34
- this.serviceError = null;
35
- this.productsService.loadProducts().subscribe(products => {
36
- this.products = products.items;
37
- }, error => {
38
- this.serviceError = error;
39
- });
40
- }
41
-
42
- buildForm(): void {
43
-
44
- this.formInput = this.fb.group({
45
- 'name': [null , [Validators.required]],
46
- 'price': [null , [Validators.required]],
47
- 'description': [null , [Validators.required]]
48
- });
49
- }
50
-
51
- editProduct(item: Product) {
52
- this.ItemSelected = item;
53
- this.actionLabel = 'Edit product';
54
- this.uxService.openModal('modal1b');
55
- }
56
-
57
- deleteProduct(id: number) {
58
- this.IdSelected = id;
59
- this.uxService.openModal('modaldelete');
60
- }
61
-
62
- onModalAccept(event) {
63
- this.productsService.deleteProduct(this.IdSelected).subscribe(product => {
64
- let index = this.products.findIndex(item => item['productId'] === product['productId']);
65
- this.products.splice(index, 1);
66
- });
67
- this.uxService.closeModal('modaldelete');
68
- }
69
-
70
- onModalDismiss(event) {
71
- this.uxService.closeModal('modaldelete');
72
- }
73
-
74
- onModalClose(event) {
75
- this.uxService.closeModal('modaldelete');
76
- }
77
-
78
- addItem() {
79
- this.ItemSelected = null;
80
- this.actionLabel = 'New product';
81
- this.formInput.reset();
82
- this.uxService.openModal('modal1b');
83
- }
84
-
85
- onSubmit() {
86
- this.product = new Product(this.formInput.value);
87
- this.productsService.addProduct(this.product).subscribe(product => {
88
- this.products.push(product);
89
- this.uxService.closeModal('modal1b');
90
- }, error => {
91
- this.serviceError = error;
92
- });
93
- }
94
-
95
- onUpdateSubmit(ItemSelected: Product) {
96
- this.product = new Product(this.formInput.value);
97
- this.productsService.updateProduct(ItemSelected).subscribe(product => {
98
- this.uxService.closeModal('modal1b');
99
- }, error => {
100
- this.serviceError = error;
101
- });
102
- }
103
-
104
- }
@@ -1,6 +0,0 @@
1
- export class Product {
2
-
3
- public constructor(init?: Partial<Product >) {
4
- Object.assign(this, init);
5
- }
6
- }
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { RouterModule } from '@angular/router';
3
- import { ProductsComponent } from './components/products.component';
4
-
5
- @NgModule({
6
- imports: [
7
- RouterModule.forChild([
8
- { path: '', component: ProductsComponent },
9
- ])
10
- ],
11
- exports: [
12
- RouterModule
13
- ]
14
- })
15
- export class ProductsRoutingModule {
16
- }
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { PaginatorModule } from 'primeng/paginator';
4
- import { UxAllModule } from '@eui/core';
5
- import { ProductsComponent } from './components/products.component';
6
- import { ProductsService } from './services/products.service';
7
- import { ProductsRoutingModule } from './products-routing.module';
8
- import { TableModule } from 'primeng/table';
9
-
10
- @NgModule({
11
- imports: [CommonModule, UxAllModule, ProductsRoutingModule, PaginatorModule, TableModule],
12
- declarations: [ProductsComponent],
13
- providers: [ProductsService]
14
- })
15
- export class ProductsModule {
16
- }
@@ -1,29 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpClient, HttpHeaders } from '@angular/common/http';
3
- import { Observable } from 'rxjs/Observable';
4
- import { Product } from '../models/product.model';
5
- import { environment } from '../../../../environments/environment';
6
- import { delay } from 'rxjs/operators';
7
-
8
- @Injectable()
9
- export class ProductsService {
10
- constructor(protected http: HttpClient) {
11
- }
12
-
13
- loadProducts(): Observable<any> {
14
- return this.http.get(environment.apiBaseUrl + '/products').pipe(delay(100));
15
- }
16
-
17
- deleteProduct(id: number) {
18
- return this.http.delete(environment.apiBaseUrl + '/product/delete/' + id );
19
- }
20
-
21
- addProduct(item: Product): Observable<Product> {
22
- return this.http.post(environment.apiBaseUrl + '/product', item);
23
- }
24
-
25
- updateProduct(item: Product): Observable<Product> {
26
- return this.http.post(environment.apiBaseUrl + '/product', item);
27
- }
28
-
29
- }
@@ -1,17 +0,0 @@
1
- // used by serve / when no configuration is provided on the build script
2
- // run npm run build
3
-
4
- export const environment = {
5
- production: false,
6
- enableDevToolRedux: true,
7
- apiBaseUrl: 'http://localhost:8000/api',
8
- };
9
-
10
- /*
11
- * For easier debugging in development mode, you can import the following file
12
- * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
13
- *
14
- * This import should be commented out in production mode because it will have a negative impact
15
- * on performance if an error is thrown.
16
- */
17
- // import 'zone.js/dist/zone-error'; // Included with Angular CLI.