@valtimo/plugin-management 5.1.0 → 5.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 (40) hide show
  1. package/README.md +1 -1
  2. package/esm2020/lib/components/plugin-add-modal/plugin-add-modal.component.mjs +38 -10
  3. package/esm2020/lib/components/plugin-add-select/plugin-add-select.component.mjs +11 -10
  4. package/esm2020/lib/components/plugin-configure/plugin-configure.component.mjs +48 -0
  5. package/esm2020/lib/components/plugin-management/plugin-management.component.mjs +18 -15
  6. package/esm2020/lib/models/plugin.model.mjs +1 -1
  7. package/esm2020/lib/plugin-management-routing.mjs +5 -5
  8. package/esm2020/lib/plugin-management.module.mjs +32 -8
  9. package/esm2020/lib/services/index.mjs +2 -2
  10. package/esm2020/lib/services/plugin-management-state.service.mjs +33 -25
  11. package/esm2020/lib/services/plugin-management.service.mjs +114 -0
  12. package/esm2020/public-api.mjs +2 -1
  13. package/fesm2015/valtimo-plugin-management.mjs +223 -102
  14. package/fesm2015/valtimo-plugin-management.mjs.map +1 -1
  15. package/fesm2020/valtimo-plugin-management.mjs +232 -102
  16. package/fesm2020/valtimo-plugin-management.mjs.map +1 -1
  17. package/lib/components/plugin-add-modal/plugin-add-modal.component.d.ts +10 -3
  18. package/lib/components/plugin-add-modal/plugin-add-modal.component.d.ts.map +1 -1
  19. package/lib/components/plugin-add-select/plugin-add-select.component.d.ts +4 -4
  20. package/lib/components/plugin-add-select/plugin-add-select.component.d.ts.map +1 -1
  21. package/lib/components/plugin-configure/plugin-configure.component.d.ts +18 -0
  22. package/lib/components/plugin-configure/plugin-configure.component.d.ts.map +1 -0
  23. package/lib/components/plugin-management/plugin-management.component.d.ts +9 -5
  24. package/lib/components/plugin-management/plugin-management.component.d.ts.map +1 -1
  25. package/lib/models/plugin.model.d.ts +14 -3
  26. package/lib/models/plugin.model.d.ts.map +1 -1
  27. package/lib/plugin-management.module.d.ts +8 -6
  28. package/lib/plugin-management.module.d.ts.map +1 -1
  29. package/lib/services/index.d.ts +1 -1
  30. package/lib/services/index.d.ts.map +1 -1
  31. package/lib/services/plugin-management-state.service.d.ts +8 -5
  32. package/lib/services/plugin-management-state.service.d.ts.map +1 -1
  33. package/lib/services/plugin-management.service.d.ts +27 -0
  34. package/lib/services/plugin-management.service.d.ts.map +1 -0
  35. package/package.json +1 -1
  36. package/public-api.d.ts +1 -0
  37. package/public-api.d.ts.map +1 -1
  38. package/esm2020/lib/services/plugin.service.mjs +0 -84
  39. package/lib/services/plugin.service.d.ts +0 -13
  40. package/lib/services/plugin.service.d.ts.map +0 -1
@@ -1,17 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, ViewChild, NgModule } from '@angular/core';
3
- import { of, Subject, BehaviorSubject, combineLatest } from 'rxjs';
4
- import { delay, take, map, tap } from 'rxjs/operators';
5
- import * as i1 from '@angular/router';
2
+ import { Injectable, Component, EventEmitter, Output, ViewChild, NgModule } from '@angular/core';
3
+ import { of, combineLatest, Subject, BehaviorSubject } from 'rxjs';
4
+ import { delay, map, take, switchMap, tap } from 'rxjs/operators';
5
+ import * as i1 from '@valtimo/config';
6
+ import { ROLE_ADMIN } from '@valtimo/config';
7
+ import * as i2 from '@valtimo/plugin';
8
+ import { PluginTranslatePipeModule, PluginConfigurationContainerModule } from '@valtimo/plugin';
9
+ import * as i3 from '@angular/platform-browser';
10
+ import * as i4 from '@angular/common/http';
11
+ import * as i1$1 from '@angular/router';
6
12
  import { RouterModule } from '@angular/router';
7
- import * as i4 from '@angular/common';
13
+ import * as i4$1 from '@angular/common';
8
14
  import { CommonModule } from '@angular/common';
9
15
  import { AuthGuardService } from '@valtimo/security';
10
- import { ROLE_ADMIN } from '@valtimo/config';
11
- import * as i2 from '@ngx-translate/core';
16
+ import * as i2$1 from '@ngx-translate/core';
12
17
  import { TranslateModule } from '@ngx-translate/core';
13
- import * as i3 from '@valtimo/user-interface';
18
+ import * as i2$2 from '@valtimo/user-interface';
14
19
  import { PageModule, ParagraphModule, TitleModule, TableModule, StepperModule, ModalModule, ButtonModule, CardModule } from '@valtimo/user-interface';
20
+ import * as i3$1 from 'ngx-logger';
15
21
  import * as i5 from '@angular/flex-layout/flex';
16
22
  import { FlexLayoutModule } from '@angular/flex-layout';
17
23
 
@@ -66,70 +72,96 @@ import { FlexLayoutModule } from '@angular/flex-layout';
66
72
  * See the License for the specific language governing permissions and
67
73
  * limitations under the License.
68
74
  */
69
- class PluginService {
70
- constructor() {
71
- this.OPEN_ZAAK_CONFIGURATIONS = [
75
+ class PluginManagementService {
76
+ constructor(configService, pluginService, sanitizer, http) {
77
+ this.configService = configService;
78
+ this.pluginService = pluginService;
79
+ this.sanitizer = sanitizer;
80
+ this.http = http;
81
+ this.VALTIMO_API_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;
82
+ this.CONFIGURATIONS = [
72
83
  {
73
84
  definitionKey: 'openzaak',
74
85
  key: '1ebdad87-3899-4ab7-b4ad-403237b17dbd',
75
86
  title: 'Den Haag Open Zaak 1',
87
+ properties: {},
76
88
  },
77
89
  {
78
90
  definitionKey: 'openzaak',
79
91
  key: '1ebdad87-3899-4ab7-b4ad-403237b17dbe',
80
92
  title: 'Den Haag Open Zaak 2',
93
+ properties: {},
81
94
  },
82
95
  {
83
- definitionKey: 'openzaak',
84
- key: '1ebdad87-3899-4ab7-b4ad-403237b17dbf',
85
- title: 'Den Haag Open Zaak 3',
86
- },
87
- {
88
- definitionKey: 'openzaak',
89
- key: '1ebdad87-3899-4ab7-b4ad-403237b17dbg',
90
- title: 'Den Haag Open Zaak 4',
96
+ definitionKey: 'smartdocuments',
97
+ key: '1ebdad87-3899-4ab7-b4ad-403237b17dbx',
98
+ title: 'Den Haag SmartDocuments 1',
99
+ properties: {},
91
100
  },
92
101
  {
93
- definitionKey: 'openzaak',
94
- key: '1ebdad87-3899-4ab7-b4ad-403237b17dbh',
95
- title: 'Den Haag Open Zaak 5',
102
+ definitionKey: 'smartdocuments',
103
+ key: '1ebdad87-3899-4ab7-b4ad-403237b17dby',
104
+ title: 'Den Haag SmartDocuments 2',
105
+ properties: {},
96
106
  },
97
107
  ];
98
108
  }
99
109
  getPluginDefinitions() {
100
- return of([{ key: 'openzaak' }]).pipe(delay(1500));
110
+ return this.http.get(`${this.VALTIMO_API_ENDPOINT_URI}plugin/definition`);
101
111
  }
102
112
  getPluginConfigurations(pluginDefinitionId) {
103
- return of(this.OPEN_ZAAK_CONFIGURATIONS).pipe(delay(1500));
113
+ return of(this.CONFIGURATIONS).pipe(delay(1500));
114
+ }
115
+ getPluginConfigurationsWithLogos(pluginDefinitionId) {
116
+ return this.returnPluginConfigurationsWithLogos(this.getPluginConfigurations(pluginDefinitionId));
104
117
  }
105
118
  getPluginFunctions(pluginDefinitionId) {
106
- return of([
107
- {
108
- key: 'create-zaak',
109
- },
110
- {
111
- key: 'set-status',
112
- },
113
- {
114
- key: 'set-resultaat',
115
- },
116
- {
117
- key: 'set-besluit',
118
- },
119
- ]).pipe(delay(1500));
119
+ return of(pluginDefinitionId === 'openzaak'
120
+ ? [
121
+ {
122
+ key: 'create-zaak',
123
+ },
124
+ {
125
+ key: 'set-status',
126
+ },
127
+ {
128
+ key: 'set-resultaat',
129
+ },
130
+ {
131
+ key: 'set-besluit',
132
+ },
133
+ ]
134
+ : [{ key: 'generate-document' }]).pipe(delay(1500));
120
135
  }
121
136
  getAllPluginConfigurations() {
122
- return of(this.OPEN_ZAAK_CONFIGURATIONS).pipe(delay(1500));
137
+ return this.http.get(`${this.VALTIMO_API_ENDPOINT_URI}plugin/configuration`);
138
+ }
139
+ getAllPluginConfigurationsWithLogos() {
140
+ return this.returnPluginConfigurationsWithLogos(this.getAllPluginConfigurations());
141
+ }
142
+ savePluginConfiguration(pluginConfiguration) {
143
+ return this.http.post(`${this.VALTIMO_API_ENDPOINT_URI}plugin/configuration`, pluginConfiguration);
144
+ }
145
+ returnPluginConfigurationsWithLogos(pluginConfigurations$) {
146
+ return combineLatest([pluginConfigurations$, this.pluginService.pluginSpecifications$]).pipe(map(([pluginConfigurations, pluginSpecifications]) => pluginConfigurations?.map(pluginConfiguration => {
147
+ const pluginSpecification = pluginSpecifications.find(specification => specification.pluginId === pluginConfiguration.definitionKey);
148
+ return {
149
+ ...pluginConfiguration,
150
+ ...(pluginSpecification?.pluginLogoBase64 && {
151
+ pluginLogoBase64: this.sanitizer.bypassSecurityTrustResourceUrl(pluginSpecification?.pluginLogoBase64),
152
+ }),
153
+ };
154
+ })));
123
155
  }
124
156
  }
125
- PluginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
126
- PluginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginService, providedIn: 'root' });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginService, decorators: [{
157
+ PluginManagementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementService, deps: [{ token: i1.ConfigService }, { token: i2.PluginService }, { token: i3.DomSanitizer }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
158
+ PluginManagementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementService, providedIn: 'root' });
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementService, decorators: [{
128
160
  type: Injectable,
129
161
  args: [{
130
162
  providedIn: 'root',
131
163
  }]
132
- }] });
164
+ }], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.PluginService }, { type: i3.DomSanitizer }, { type: i4.HttpClient }]; } });
133
165
 
134
166
  /*
135
167
  * Copyright 2015-2020 Ritense BV, the Netherlands.
@@ -143,16 +175,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
143
175
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.
144
176
  */
145
177
  class PluginManagementStateService {
146
- constructor() {
178
+ constructor(pluginService, sanitizer) {
179
+ this.pluginService = pluginService;
180
+ this.sanitizer = sanitizer;
147
181
  this._showModal$ = new Subject();
148
182
  this._hideModal$ = new Subject();
149
183
  this._inputDisabled$ = new BehaviorSubject(false);
150
- this._saveButtonDisabled$ = new BehaviorSubject(true);
151
184
  this._refresh$ = new BehaviorSubject(null);
152
185
  this._save$ = new Subject();
153
186
  this._delete$ = new Subject();
154
187
  this._hideModalSaveButton$ = new BehaviorSubject(false);
155
188
  this._pluginDefinitions$ = new BehaviorSubject(undefined);
189
+ this._pluginDefinitionsWithLogos$ = combineLatest([
190
+ this._pluginDefinitions$,
191
+ this.pluginService.pluginSpecifications$,
192
+ this.pluginService.availablePluginIds$,
193
+ ]).pipe(map(([pluginDefinitions, pluginSpecifications, availablePluginIds]) => pluginDefinitions
194
+ ?.filter(pluginDefinition => availablePluginIds.includes(pluginDefinition.key))
195
+ .map(pluginDefinition => {
196
+ const pluginSpecification = pluginSpecifications.find(specification => specification.pluginId === pluginDefinition.key);
197
+ return {
198
+ ...pluginDefinition,
199
+ ...(pluginSpecification?.pluginLogoBase64 && {
200
+ pluginLogoBase64: this.sanitizer.bypassSecurityTrustResourceUrl(pluginSpecification?.pluginLogoBase64),
201
+ }),
202
+ };
203
+ })));
156
204
  this._selectedPluginDefinition$ = new BehaviorSubject(undefined);
157
205
  }
158
206
  get showModal$() {
@@ -170,12 +218,12 @@ class PluginManagementStateService {
170
218
  get pluginDefinitions$() {
171
219
  return this._pluginDefinitions$.asObservable();
172
220
  }
221
+ get pluginDefinitionsWithLogos$() {
222
+ return this._pluginDefinitionsWithLogos$;
223
+ }
173
224
  get selectedPluginDefinition$() {
174
225
  return this._selectedPluginDefinition$.asObservable();
175
226
  }
176
- get saveButtonDisabled$() {
177
- return this._saveButtonDisabled$.asObservable();
178
- }
179
227
  get save$() {
180
228
  return this._save$.asObservable();
181
229
  }
@@ -189,7 +237,7 @@ class PluginManagementStateService {
189
237
  this._showModal$.next(modalType);
190
238
  }
191
239
  hideModal() {
192
- this._hideModal$.next();
240
+ this._hideModal$.next(null);
193
241
  }
194
242
  disableInput() {
195
243
  this._inputDisabled$.next(true);
@@ -209,21 +257,11 @@ class PluginManagementStateService {
209
257
  clearSelectedPluginDefinition() {
210
258
  this._selectedPluginDefinition$.next(undefined);
211
259
  }
212
- enableSaveButton() {
213
- this._saveButtonDisabled$.next(false);
214
- }
215
- disableSaveButton() {
216
- this._saveButtonDisabled$.next(true);
217
- }
218
260
  save() {
219
- this._saveButtonDisabled$.pipe(take(1)).subscribe(saveButtonDisabled => {
220
- if (!saveButtonDisabled) {
221
- this._save$.next();
222
- }
223
- });
261
+ this._save$.next(null);
224
262
  }
225
263
  delete() {
226
- this._delete$.next();
264
+ this._delete$.next(null);
227
265
  }
228
266
  hideModalSaveButton() {
229
267
  this._hideModalSaveButton$.next(true);
@@ -235,14 +273,14 @@ class PluginManagementStateService {
235
273
  this._selectedPluginDefinition$.next(undefined);
236
274
  }
237
275
  }
238
- PluginManagementStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
239
- PluginManagementStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementStateService, providedIn: 'root' });
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementStateService, decorators: [{
276
+ PluginManagementStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementStateService, deps: [{ token: i2.PluginService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
277
+ PluginManagementStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementStateService, providedIn: 'root' });
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementStateService, decorators: [{
241
279
  type: Injectable,
242
280
  args: [{
243
281
  providedIn: 'root',
244
282
  }]
245
- }] });
283
+ }], ctorParameters: function () { return [{ type: i2.PluginService }, { type: i3.DomSanitizer }]; } });
246
284
 
247
285
  /*
248
286
  * Copyright 2015-2020 Ritense BV, the Netherlands.
@@ -272,13 +310,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
272
310
  * limitations under the License.
273
311
  */
274
312
  class PluginAddSelectComponent {
275
- constructor(pluginService, stateService, translateService) {
276
- this.pluginService = pluginService;
313
+ constructor(pluginManagementService, stateService, translateService) {
314
+ this.pluginManagementService = pluginManagementService;
277
315
  this.stateService = stateService;
278
316
  this.translateService = translateService;
279
317
  this.selectedPluginDefinition$ = this.stateService.selectedPluginDefinition$;
280
318
  this.disabled$ = this.stateService.inputDisabled$;
281
- this.pluginDefinitions$ = this.stateService.pluginDefinitions$;
319
+ this.pluginDefinitionsWithLogos$ = this.stateService.pluginDefinitionsWithLogos$;
282
320
  }
283
321
  ngOnInit() {
284
322
  this.openRefreshSubscription();
@@ -294,7 +332,7 @@ class PluginAddSelectComponent {
294
332
  this.stateService.clearSelectedPluginDefinition();
295
333
  }
296
334
  getPluginDefinitions() {
297
- this.pluginService.getPluginDefinitions().subscribe(pluginDefinitions => {
335
+ this.pluginManagementService.getPluginDefinitions().subscribe(pluginDefinitions => {
298
336
  this.stateService.setPluginDefinitions(pluginDefinitions);
299
337
  });
300
338
  }
@@ -307,12 +345,54 @@ class PluginAddSelectComponent {
307
345
  });
308
346
  }
309
347
  }
310
- PluginAddSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginAddSelectComponent, deps: [{ token: PluginService }, { token: PluginManagementStateService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
311
- PluginAddSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PluginAddSelectComponent, selector: "valtimo-plugin-add-select", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginDefinitions$ | async as pluginDefinitions; else loading\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <div fxFlex=\"33.3%\" *ngFor=\"let pluginDefinition of pluginDefinitions\">\n <v-card\n [titleTranslationKey]=\"'plugin.' + pluginDefinition.key + '.title'\"\n [descriptionTranslationKey]=\"'plugin.' + pluginDefinition.key + '.description'\"\n [selectable]=\"true\"\n [selected]=\"(selectedPluginDefinition$ | async)?.key === pluginDefinition.key\"\n [fullHeight]=\"true\"\n (selectEvent)=\"selectPluginDefinition(pluginDefinition)\"\n (deselectEvent)=\"deselectPluginDefinition()\"\n ></v-card>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #loadingCard>\n <div fxFlex=\"33.3%\">\n <v-card [loading]=\"true\" [loadingDescription]=\"true\" [loadingTitle]=\"true\"></v-card>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], components: [{ type: i3.CardComponent, selector: "v-card", inputs: ["titleTranslationKey", "title", "descriptionTranslationKey", "description", "selectable", "selected", "fullHeight", "loading", "loadingTitle", "loadingDescription"], outputs: ["selectEvent", "deselectEvent"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i4.AsyncPipe } });
312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginAddSelectComponent, decorators: [{
348
+ PluginAddSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginAddSelectComponent, deps: [{ token: PluginManagementService }, { token: PluginManagementStateService }, { token: i2$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
349
+ PluginAddSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PluginAddSelectComponent, selector: "valtimo-plugin-add-select", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginDefinitionsWithLogos$ | async as pluginDefinitions; else loading\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container\n *ngTemplateOutlet=\"pluginDefinitionsTemplate; context: {pluginDefinitions: pluginDefinitions}\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n noPluginDefinitionsTemplate;\n context: {pluginDefinitions: pluginDefinitions}\n \"\n ></ng-container>\n </div>\n</ng-container>\n\n<ng-template #noPluginDefinitionsTemplate let-pluginDefinitions=\"pluginDefinitions\">\n <div fxFlex=\"100%\" *ngIf=\"pluginDefinitions?.length === 0\">\n <v-paragraph [center]=\"true\" [fullWidth]=\"true\">{{\n 'pluginManagement.noDefinitions' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #pluginDefinitionsTemplate let-pluginDefinitions=\"pluginDefinitions\">\n <div fxFlex=\"33.3%\" *ngFor=\"let pluginDefinition of pluginDefinitions\">\n <v-card\n [title]=\"'title' | pluginTranslate: pluginDefinition.key | async\"\n [description]=\"'description' | pluginTranslate: pluginDefinition.key | async\"\n [selectable]=\"true\"\n [selected]=\"(selectedPluginDefinition$ | async)?.key === pluginDefinition.key\"\n [fullHeight]=\"true\"\n (selectEvent)=\"selectPluginDefinition(pluginDefinition)\"\n (deselectEvent)=\"deselectPluginDefinition()\"\n >\n <div *ngIf=\"pluginDefinition.pluginLogoBase64\" role=\"header\">\n <img\n class=\"plugin-definition-logo\"\n [title]=\"'title' | pluginTranslate: pluginDefinition.key | async\"\n [src]=\"pluginDefinition.pluginLogoBase64\"\n />\n </div>\n </v-card>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #loadingCard>\n <div fxFlex=\"33.3%\">\n <v-card [loading]=\"true\" [loadingDescription]=\"true\" [loadingTitle]=\"true\"></v-card>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plugin-definition-logo{object-fit:contain;height:60px;width:100%}\n"], components: [{ type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth"] }, { type: i2$2.CardComponent, selector: "v-card", inputs: ["titleTranslationKey", "title", "descriptionTranslationKey", "description", "selectable", "selected", "fullHeight", "loading", "loadingTitle", "loadingDescription"], outputs: ["selectEvent", "deselectEvent"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i2$1.TranslatePipe, "pluginTranslate": i2.PluginTranslatePipe } });
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginAddSelectComponent, decorators: [{
313
351
  type: Component,
314
- args: [{ selector: 'valtimo-plugin-add-select', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginDefinitions$ | async as pluginDefinitions; else loading\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <div fxFlex=\"33.3%\" *ngFor=\"let pluginDefinition of pluginDefinitions\">\n <v-card\n [titleTranslationKey]=\"'plugin.' + pluginDefinition.key + '.title'\"\n [descriptionTranslationKey]=\"'plugin.' + pluginDefinition.key + '.description'\"\n [selectable]=\"true\"\n [selected]=\"(selectedPluginDefinition$ | async)?.key === pluginDefinition.key\"\n [fullHeight]=\"true\"\n (selectEvent)=\"selectPluginDefinition(pluginDefinition)\"\n (deselectEvent)=\"deselectPluginDefinition()\"\n ></v-card>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #loadingCard>\n <div fxFlex=\"33.3%\">\n <v-card [loading]=\"true\" [loadingDescription]=\"true\" [loadingTitle]=\"true\"></v-card>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
315
- }], ctorParameters: function () { return [{ type: PluginService }, { type: PluginManagementStateService }, { type: i2.TranslateService }]; } });
352
+ args: [{ selector: 'valtimo-plugin-add-select', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"pluginDefinitionsWithLogos$ | async as pluginDefinitions; else loading\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container\n *ngTemplateOutlet=\"pluginDefinitionsTemplate; context: {pluginDefinitions: pluginDefinitions}\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n noPluginDefinitionsTemplate;\n context: {pluginDefinitions: pluginDefinitions}\n \"\n ></ng-container>\n </div>\n</ng-container>\n\n<ng-template #noPluginDefinitionsTemplate let-pluginDefinitions=\"pluginDefinitions\">\n <div fxFlex=\"100%\" *ngIf=\"pluginDefinitions?.length === 0\">\n <v-paragraph [center]=\"true\" [fullWidth]=\"true\">{{\n 'pluginManagement.noDefinitions' | translate\n }}</v-paragraph>\n </div>\n</ng-template>\n\n<ng-template #pluginDefinitionsTemplate let-pluginDefinitions=\"pluginDefinitions\">\n <div fxFlex=\"33.3%\" *ngFor=\"let pluginDefinition of pluginDefinitions\">\n <v-card\n [title]=\"'title' | pluginTranslate: pluginDefinition.key | async\"\n [description]=\"'description' | pluginTranslate: pluginDefinition.key | async\"\n [selectable]=\"true\"\n [selected]=\"(selectedPluginDefinition$ | async)?.key === pluginDefinition.key\"\n [fullHeight]=\"true\"\n (selectEvent)=\"selectPluginDefinition(pluginDefinition)\"\n (deselectEvent)=\"deselectPluginDefinition()\"\n >\n <div *ngIf=\"pluginDefinition.pluginLogoBase64\" role=\"header\">\n <img\n class=\"plugin-definition-logo\"\n [title]=\"'title' | pluginTranslate: pluginDefinition.key | async\"\n [src]=\"pluginDefinition.pluginLogoBase64\"\n />\n </div>\n </v-card>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"22px grid\">\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingCard\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #loadingCard>\n <div fxFlex=\"33.3%\">\n <v-card [loading]=\"true\" [loadingDescription]=\"true\" [loadingTitle]=\"true\"></v-card>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.btn-back{position:absolute}.cards-container{display:flex;flex-flow:row wrap;width:100%}.card{width:calc(33.3% - 20px);margin-right:30px}.card:nth-child(3n+3){margin-right:0}.card-header{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plugin-definition-logo{object-fit:contain;height:60px;width:100%}\n"] }]
353
+ }], ctorParameters: function () { return [{ type: PluginManagementService }, { type: PluginManagementStateService }, { type: i2$1.TranslateService }]; } });
354
+
355
+ /*
356
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
357
+ *
358
+ * Licensed under EUPL, Version 1.2 (the "License");
359
+ * you may not use this file except in compliance with the License.
360
+ * You may obtain a copy of the License at
361
+ *
362
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
363
+ *
364
+ * Unless required by applicable law or agreed to in writing, software
365
+ * distributed under the License is distributed on an "AS IS" basis,
366
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
367
+ * See the License for the specific language governing permissions and
368
+ * limitations under the License.
369
+ */
370
+ class PluginConfigureComponent {
371
+ constructor(stateService) {
372
+ this.stateService = stateService;
373
+ this.valid = new EventEmitter();
374
+ this.configuration = new EventEmitter();
375
+ this.save$ = this.stateService.save$;
376
+ this.pluginDefinitionKey$ = this.stateService.selectedPluginDefinition$.pipe(map(definition => definition?.key));
377
+ this.disabled$ = this.stateService.inputDisabled$;
378
+ }
379
+ onValid(valid) {
380
+ this.valid.emit(valid);
381
+ }
382
+ onConfiguration(configuration) {
383
+ this.configuration.emit(configuration);
384
+ }
385
+ }
386
+ PluginConfigureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginConfigureComponent, deps: [{ token: PluginManagementStateService }], target: i0.ɵɵFactoryTarget.Component });
387
+ PluginConfigureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PluginConfigureComponent, selector: "valtimo-plugin-configure", outputs: { valid: "valid", configuration: "configuration" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [save$]=\"save$\"\n [disabled]=\"disabled$ | async\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"configuration\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], components: [{ type: i2.PluginConfigurationContainerComponent, selector: "valtimo-plugin-configuration-container", inputs: ["type", "pluginDefinitionKey", "functionKey", "clear$", "save$", "disabled", "error"], outputs: ["valid", "configuration"] }], pipes: { "async": i4$1.AsyncPipe } });
388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginConfigureComponent, decorators: [{
389
+ type: Component,
390
+ args: [{ selector: 'valtimo-plugin-configure', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-plugin-configuration-container\n [pluginDefinitionKey]=\"pluginDefinitionKey$ | async\"\n [save$]=\"save$\"\n [disabled]=\"disabled$ | async\"\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n type=\"configuration\"\n></valtimo-plugin-configuration-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
391
+ }], ctorParameters: function () { return [{ type: PluginManagementStateService }]; }, propDecorators: { valid: [{
392
+ type: Output
393
+ }], configuration: [{
394
+ type: Output
395
+ }] } });
316
396
 
317
397
  /*
318
398
  * Copyright 2015-2020 Ritense BV, the Netherlands.
@@ -330,11 +410,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
330
410
  * limitations under the License.
331
411
  */
332
412
  class PluginAddModalComponent {
333
- constructor(stateService, modalService) {
413
+ constructor(stateService, modalService, pluginManagementService, logger) {
334
414
  this.stateService = stateService;
335
415
  this.modalService = modalService;
416
+ this.pluginManagementService = pluginManagementService;
417
+ this.logger = logger;
336
418
  this.inputDisabled$ = this.stateService.inputDisabled$;
337
419
  this.selectedPluginDefinition$ = this.stateService.selectedPluginDefinition$;
420
+ this.configurationValid$ = new BehaviorSubject(false);
338
421
  this.returnToFirstStepSubject$ = new Subject();
339
422
  }
340
423
  ngOnInit() {
@@ -358,6 +441,29 @@ class PluginAddModalComponent {
358
441
  }, appearingDelay);
359
442
  });
360
443
  }
444
+ onValid(valid) {
445
+ this.configurationValid$.next(valid);
446
+ }
447
+ onConfiguration(configuration) {
448
+ const pluginConfiguration = { ...configuration };
449
+ delete pluginConfiguration['configurationTitle'];
450
+ this.stateService.disableInput();
451
+ this.stateService.selectedPluginDefinition$.pipe(take(1)).subscribe(selectedDefinition => {
452
+ this.pluginManagementService
453
+ .savePluginConfiguration({
454
+ definitionKey: selectedDefinition.key,
455
+ title: configuration.configurationTitle,
456
+ properties: pluginConfiguration,
457
+ })
458
+ .subscribe(response => {
459
+ this.stateService.refresh();
460
+ this.hide();
461
+ }, () => {
462
+ this.logger.error('Something went wrong with saving the plugin configuration.');
463
+ this.hide();
464
+ });
465
+ });
466
+ }
361
467
  openShowSubscription() {
362
468
  this.showSubscription = this.stateService.showModal$.subscribe(modalType => {
363
469
  if (modalType === 'add') {
@@ -377,12 +483,12 @@ class PluginAddModalComponent {
377
483
  this.modalService.openModal(this.pluginAddModal);
378
484
  }
379
485
  }
380
- PluginAddModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginAddModalComponent, deps: [{ token: PluginManagementStateService }, { token: i3.ModalService }], target: i0.ɵɵFactoryTarget.Component });
381
- PluginAddModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PluginAddModalComponent, selector: "valtimo-plugin-add-modal", viewQueries: [{ propertyName: "pluginAddModal", first: true, predicate: ["pluginAddModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-stepper-container\n (completeEvent)=\"complete()\"\n (cancelClickEvent)=\"hide()\"\n [disabled]=\"inputDisabled$ | async\"\n [returnToFirstStepSubject$]=\"returnToFirstStepSubject$\"\n>\n <v-modal #pluginAddModal (closeEvent)=\"hide()\">\n <div role=\"header\">\n <v-stepper-header></v-stepper-header>\n </div>\n <div role=\"content\">\n <v-stepper-content>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step0\">\n <valtimo-plugin-add-select></valtimo-plugin-add-select>\n </v-stepper-step>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step1\">\n configure plugin\n </v-stepper-step>\n </v-stepper-content>\n </div>\n <div role=\"footer\">\n <v-stepper-footer>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step1\"\n [nextButtonEnabled]=\"selectedPluginDefinition$ | async\"\n ></v-stepper-footer-step>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step2\"\n [nextButtonEnabled]=\"false\"\n ></v-stepper-footer-step>\n </v-stepper-footer>\n </div>\n </v-modal>\n</v-stepper-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], components: [{ type: i3.StepperContainerComponent, selector: "v-stepper-container", inputs: ["returnToFirstStepSubject$", "disabled"], outputs: ["cancelClickEvent", "completeEvent", "nextStepEvent"] }, { type: i3.ModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx"], outputs: ["closeEvent"] }, { type: i3.StepperHeaderComponent, selector: "v-stepper-header" }, { type: i3.StepperContentComponent, selector: "v-stepper-content" }, { type: i3.StepperStepComponent, selector: "v-stepper-step", inputs: ["titleTranslationKey"] }, { type: PluginAddSelectComponent, selector: "valtimo-plugin-add-select" }, { type: i3.StepperFooterComponent, selector: "v-stepper-footer" }, { type: i3.StepperFooterStepComponent, selector: "v-stepper-footer-step", inputs: ["nextButtonEnabled", "completeButtonEnabled", "nextButtonTranslationKey", "cancelButtonTranslationKey", "completeButtonTranslationKey", "completeButtonMdiIcon", "showCompleteButton"] }], pipes: { "async": i4.AsyncPipe } });
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginAddModalComponent, decorators: [{
486
+ PluginAddModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginAddModalComponent, deps: [{ token: PluginManagementStateService }, { token: i2$2.ModalService }, { token: PluginManagementService }, { token: i3$1.NGXLogger }], target: i0.ɵɵFactoryTarget.Component });
487
+ PluginAddModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PluginAddModalComponent, selector: "valtimo-plugin-add-modal", viewQueries: [{ propertyName: "pluginAddModal", first: true, predicate: ["pluginAddModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-stepper-container\n (completeEvent)=\"complete()\"\n (cancelClickEvent)=\"hide()\"\n [disabled]=\"inputDisabled$ | async\"\n [returnToFirstStepSubject$]=\"returnToFirstStepSubject$\"\n>\n <v-modal #pluginAddModal (closeEvent)=\"hide()\">\n <div role=\"header\">\n <v-stepper-header></v-stepper-header>\n </div>\n <div role=\"content\">\n <v-stepper-content>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step0\">\n <valtimo-plugin-add-select></valtimo-plugin-add-select>\n </v-stepper-step>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step1\">\n <valtimo-plugin-configure\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n ></valtimo-plugin-configure>\n </v-stepper-step>\n </v-stepper-content>\n </div>\n <div role=\"footer\">\n <v-stepper-footer>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step1\"\n [nextButtonEnabled]=\"selectedPluginDefinition$ | async\"\n ></v-stepper-footer-step>\n <v-stepper-footer-step\n completeButtonTranslationKey=\"pluginManagement.addSteps.complete\"\n [completeButtonEnabled]=\"configurationValid$ | async\"\n ></v-stepper-footer-step>\n </v-stepper-footer>\n </div>\n </v-modal>\n</v-stepper-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], components: [{ type: i2$2.StepperContainerComponent, selector: "v-stepper-container", inputs: ["returnToFirstStepSubject$", "disabled"], outputs: ["cancelClickEvent", "completeEvent", "nextStepEvent"] }, { type: i2$2.ModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx"], outputs: ["closeEvent"] }, { type: i2$2.StepperHeaderComponent, selector: "v-stepper-header" }, { type: i2$2.StepperContentComponent, selector: "v-stepper-content" }, { type: i2$2.StepperStepComponent, selector: "v-stepper-step", inputs: ["titleTranslationKey"] }, { type: PluginAddSelectComponent, selector: "valtimo-plugin-add-select" }, { type: PluginConfigureComponent, selector: "valtimo-plugin-configure", outputs: ["valid", "configuration"] }, { type: i2$2.StepperFooterComponent, selector: "v-stepper-footer" }, { type: i2$2.StepperFooterStepComponent, selector: "v-stepper-footer-step", inputs: ["nextButtonEnabled", "completeButtonEnabled", "nextButtonTranslationKey", "cancelButtonTranslationKey", "completeButtonTranslationKey", "completeButtonMdiIcon", "showCompleteButton"] }], pipes: { "async": i4$1.AsyncPipe } });
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginAddModalComponent, decorators: [{
383
489
  type: Component,
384
- args: [{ selector: 'valtimo-plugin-add-modal', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-stepper-container\n (completeEvent)=\"complete()\"\n (cancelClickEvent)=\"hide()\"\n [disabled]=\"inputDisabled$ | async\"\n [returnToFirstStepSubject$]=\"returnToFirstStepSubject$\"\n>\n <v-modal #pluginAddModal (closeEvent)=\"hide()\">\n <div role=\"header\">\n <v-stepper-header></v-stepper-header>\n </div>\n <div role=\"content\">\n <v-stepper-content>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step0\">\n <valtimo-plugin-add-select></valtimo-plugin-add-select>\n </v-stepper-step>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step1\">\n configure plugin\n </v-stepper-step>\n </v-stepper-content>\n </div>\n <div role=\"footer\">\n <v-stepper-footer>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step1\"\n [nextButtonEnabled]=\"selectedPluginDefinition$ | async\"\n ></v-stepper-footer-step>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step2\"\n [nextButtonEnabled]=\"false\"\n ></v-stepper-footer-step>\n </v-stepper-footer>\n </div>\n </v-modal>\n</v-stepper-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
385
- }], ctorParameters: function () { return [{ type: PluginManagementStateService }, { type: i3.ModalService }]; }, propDecorators: { pluginAddModal: [{
490
+ args: [{ selector: 'valtimo-plugin-add-modal', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-stepper-container\n (completeEvent)=\"complete()\"\n (cancelClickEvent)=\"hide()\"\n [disabled]=\"inputDisabled$ | async\"\n [returnToFirstStepSubject$]=\"returnToFirstStepSubject$\"\n>\n <v-modal #pluginAddModal (closeEvent)=\"hide()\">\n <div role=\"header\">\n <v-stepper-header></v-stepper-header>\n </div>\n <div role=\"content\">\n <v-stepper-content>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step0\">\n <valtimo-plugin-add-select></valtimo-plugin-add-select>\n </v-stepper-step>\n <v-stepper-step titleTranslationKey=\"pluginManagement.addSteps.step1\">\n <valtimo-plugin-configure\n (valid)=\"onValid($event)\"\n (configuration)=\"onConfiguration($event)\"\n ></valtimo-plugin-configure>\n </v-stepper-step>\n </v-stepper-content>\n </div>\n <div role=\"footer\">\n <v-stepper-footer>\n <v-stepper-footer-step\n nextButtonTranslationKey=\"pluginManagement.addSteps.step1\"\n [nextButtonEnabled]=\"selectedPluginDefinition$ | async\"\n ></v-stepper-footer-step>\n <v-stepper-footer-step\n completeButtonTranslationKey=\"pluginManagement.addSteps.complete\"\n [completeButtonEnabled]=\"configurationValid$ | async\"\n ></v-stepper-footer-step>\n </v-stepper-footer>\n </div>\n </v-modal>\n</v-stepper-container>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
491
+ }], ctorParameters: function () { return [{ type: PluginManagementStateService }, { type: i2$2.ModalService }, { type: PluginManagementService }, { type: i3$1.NGXLogger }]; }, propDecorators: { pluginAddModal: [{
386
492
  type: ViewChild,
387
493
  args: ['pluginAddModal']
388
494
  }] } });
@@ -403,10 +509,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
403
509
  * limitations under the License.
404
510
  */
405
511
  class PluginManagementComponent {
406
- constructor(pluginService, translateService, stateService) {
407
- this.pluginService = pluginService;
512
+ constructor(pluginManagementService, translateService, stateService, pluginTranslationService) {
513
+ this.pluginManagementService = pluginManagementService;
408
514
  this.translateService = translateService;
409
515
  this.stateService = stateService;
516
+ this.pluginTranslationService = pluginTranslationService;
410
517
  this.loading$ = new BehaviorSubject(true);
411
518
  this.columns$ = new BehaviorSubject([
412
519
  {
@@ -422,26 +529,27 @@ class PluginManagementComponent {
422
529
  dataKey: 'title',
423
530
  },
424
531
  ]);
425
- this.pluginConfigurations$ = combineLatest([
426
- this.pluginService.getAllPluginConfigurations(),
532
+ this.pluginConfigurations$ = this.stateService.refresh$.pipe(switchMap(() => combineLatest([
533
+ this.pluginManagementService.getAllPluginConfigurations(),
427
534
  this.translateService.stream('key'),
428
535
  ]).pipe(map(([pluginConfigurations]) => pluginConfigurations.map(configuration => ({
429
536
  ...configuration,
430
- pluginName: this.translateService.instant(`plugin.${configuration.definitionKey}.title`),
537
+ pluginName: this.pluginTranslationService.instant('title', configuration.pluginDefinition.key),
538
+ definitionKey: configuration.pluginDefinition.key,
431
539
  }))), tap(() => {
432
540
  this.loading$.next(false);
433
- }));
541
+ }))));
434
542
  }
435
543
  showAddModal() {
436
544
  this.stateService.showModal('add');
437
545
  }
438
546
  }
439
- PluginManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementComponent, deps: [{ token: PluginService }, { token: i2.TranslateService }, { token: PluginManagementStateService }], target: i0.ɵɵFactoryTarget.Component });
440
- PluginManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PluginManagementComponent, selector: "valtimo-plugin-management", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-page-container\n *ngIf=\"{\n pluginConfigurations: pluginConfigurations$ | async,\n columns: columns$ | async,\n loading: loading$ | async\n } as obs\"\n>\n <v-page-header>\n <v-page-header-introduction>\n <v-title>{{ 'pages.plugins.title' | translate }}</v-title>\n <v-paragraph>{{ 'pages.plugins.description' | translate }}</v-paragraph>\n </v-page-header-introduction>\n <v-page-header-actions>\n <v-button\n (clickEvent)=\"showAddModal()\"\n type=\"primary\"\n mdiIcon=\"plus\"\n [disabled]=\"obs.loading\"\n >\n {{ 'pluginManagement.add' | translate }}\n </v-button>\n </v-page-header-actions>\n </v-page-header>\n <v-page-content>\n <v-table\n [loading]=\"obs.loading\"\n [items]=\"obs.pluginConfigurations\"\n [columns]=\"obs.columns\"\n [showEditButtons]=\"false\"\n [amountOfLoadingRows]=\"2\"\n [itemsTranslationKey]=\"'pluginManagement.tableItemsText'\"\n [showPagination]=\"false\"\n ></v-table>\n </v-page-content>\n</v-page-container>\n\n<valtimo-plugin-add-modal></valtimo-plugin-add-modal>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], components: [{ type: i3.PageContainerComponent, selector: "v-page-container" }, { type: i3.PageHeaderComponent, selector: "v-page-header" }, { type: i3.PageHeaderIntroductionComponent, selector: "v-page-header-introduction" }, { type: i3.TitleComponent, selector: "v-title", inputs: ["type", "margin"] }, { type: i3.ParagraphComponent, selector: "v-paragraph" }, { type: i3.PageHeaderActionsComponent, selector: "v-page-header-actions" }, { type: i3.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled"], outputs: ["clickEvent"] }, { type: i3.PageContentComponent, selector: "v-page-content" }, { type: i3.TableComponent, selector: "v-table", inputs: ["items", "columns", "loading", "showEditButtons", "showPagination", "editButtonTranslationKey", "itemsTranslationKey", "mobileBreakpointPx", "amountOfLoadingRows", "collectionSize", "maxPaginationItemSize", "page", "size"], outputs: ["editButtonClicked", "paginationSizeSet", "paginationPageSet"] }, { type: PluginAddModalComponent, selector: "valtimo-plugin-add-modal" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe, "translate": i2.TranslatePipe } });
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementComponent, decorators: [{
547
+ PluginManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementComponent, deps: [{ token: PluginManagementService }, { token: i2$1.TranslateService }, { token: PluginManagementStateService }, { token: i2.PluginTranslationService }], target: i0.ɵɵFactoryTarget.Component });
548
+ PluginManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PluginManagementComponent, selector: "valtimo-plugin-management", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-page-container\n *ngIf=\"{\n pluginConfigurations: pluginConfigurations$ | async,\n columns: columns$ | async,\n loading: loading$ | async\n } as obs\"\n>\n <v-page-header>\n <v-page-header-introduction>\n <v-title>{{ 'pages.plugins.title' | translate }}</v-title>\n <v-paragraph>{{ 'pages.plugins.description' | translate }}</v-paragraph>\n </v-page-header-introduction>\n <v-page-header-actions>\n <v-button\n (clickEvent)=\"showAddModal()\"\n type=\"primary\"\n mdiIcon=\"plus\"\n [disabled]=\"obs.loading\"\n >\n {{ 'pluginManagement.add' | translate }}\n </v-button>\n </v-page-header-actions>\n </v-page-header>\n <v-page-content>\n <v-table\n [loading]=\"obs.loading\"\n [items]=\"obs.pluginConfigurations\"\n [columns]=\"obs.columns\"\n [showEditButtons]=\"false\"\n [amountOfLoadingRows]=\"2\"\n [itemsTranslationKey]=\"'pluginManagement.tableItemsText'\"\n [showPagination]=\"false\"\n ></v-table>\n </v-page-content>\n</v-page-container>\n\n<valtimo-plugin-add-modal></valtimo-plugin-add-modal>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], components: [{ type: i2$2.PageContainerComponent, selector: "v-page-container" }, { type: i2$2.PageHeaderComponent, selector: "v-page-header" }, { type: i2$2.PageHeaderIntroductionComponent, selector: "v-page-header-introduction" }, { type: i2$2.TitleComponent, selector: "v-title", inputs: ["type", "margin"] }, { type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth"] }, { type: i2$2.PageHeaderActionsComponent, selector: "v-page-header-actions" }, { type: i2$2.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { type: i2$2.PageContentComponent, selector: "v-page-content" }, { type: i2$2.TableComponent, selector: "v-table", inputs: ["items", "columns", "loading", "showEditButtons", "showPagination", "editButtonTranslationKey", "itemsTranslationKey", "noResultsTranslationKey", "mobileBreakpointPx", "amountOfLoadingRows", "collectionSize", "maxPaginationItemSize", "page", "size"], outputs: ["editButtonClicked", "paginationSizeSet", "paginationPageSet"] }, { type: PluginAddModalComponent, selector: "valtimo-plugin-add-modal" }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i2$1.TranslatePipe } });
549
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementComponent, decorators: [{
442
550
  type: Component,
443
551
  args: [{ selector: 'valtimo-plugin-management', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-page-container\n *ngIf=\"{\n pluginConfigurations: pluginConfigurations$ | async,\n columns: columns$ | async,\n loading: loading$ | async\n } as obs\"\n>\n <v-page-header>\n <v-page-header-introduction>\n <v-title>{{ 'pages.plugins.title' | translate }}</v-title>\n <v-paragraph>{{ 'pages.plugins.description' | translate }}</v-paragraph>\n </v-page-header-introduction>\n <v-page-header-actions>\n <v-button\n (clickEvent)=\"showAddModal()\"\n type=\"primary\"\n mdiIcon=\"plus\"\n [disabled]=\"obs.loading\"\n >\n {{ 'pluginManagement.add' | translate }}\n </v-button>\n </v-page-header-actions>\n </v-page-header>\n <v-page-content>\n <v-table\n [loading]=\"obs.loading\"\n [items]=\"obs.pluginConfigurations\"\n [columns]=\"obs.columns\"\n [showEditButtons]=\"false\"\n [amountOfLoadingRows]=\"2\"\n [itemsTranslationKey]=\"'pluginManagement.tableItemsText'\"\n [showPagination]=\"false\"\n ></v-table>\n </v-page-content>\n</v-page-container>\n\n<valtimo-plugin-add-modal></valtimo-plugin-add-modal>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
444
- }], ctorParameters: function () { return [{ type: PluginService }, { type: i2.TranslateService }, { type: PluginManagementStateService }]; } });
552
+ }], ctorParameters: function () { return [{ type: PluginManagementService }, { type: i2$1.TranslateService }, { type: PluginManagementStateService }, { type: i2.PluginTranslationService }]; } });
445
553
 
446
554
  /*
447
555
  * Copyright 2015-2020 Ritense BV, the Netherlands.
@@ -464,10 +572,10 @@ const routes = [
464
572
  ];
465
573
  class PluginManagementRoutingModule {
466
574
  }
467
- PluginManagementRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
468
- PluginManagementRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] });
469
- PluginManagementRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementRoutingModule, imports: [[CommonModule, RouterModule.forChild(routes)], RouterModule] });
470
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementRoutingModule, decorators: [{
575
+ PluginManagementRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
576
+ PluginManagementRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementRoutingModule, imports: [CommonModule, i1$1.RouterModule], exports: [RouterModule] });
577
+ PluginManagementRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementRoutingModule, imports: [[CommonModule, RouterModule.forChild(routes)], RouterModule] });
578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementRoutingModule, decorators: [{
471
579
  type: NgModule,
472
580
  args: [{
473
581
  declarations: [],
@@ -489,8 +597,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
489
597
  */
490
598
  class PluginManagementModule {
491
599
  }
492
- PluginManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
493
- PluginManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementModule, declarations: [PluginManagementComponent, PluginAddModalComponent, PluginAddSelectComponent], imports: [CommonModule,
600
+ PluginManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
601
+ PluginManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementModule, declarations: [PluginManagementComponent,
602
+ PluginAddModalComponent,
603
+ PluginAddSelectComponent,
604
+ PluginConfigureComponent], imports: [CommonModule,
494
605
  PluginManagementRoutingModule,
495
606
  TranslateModule,
496
607
  FlexLayoutModule,
@@ -501,8 +612,13 @@ PluginManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
501
612
  StepperModule,
502
613
  ModalModule,
503
614
  ButtonModule,
504
- CardModule], exports: [PluginManagementComponent, PluginAddModalComponent, PluginAddSelectComponent] });
505
- PluginManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementModule, providers: [PluginManagementStateService], imports: [[
615
+ CardModule,
616
+ PluginTranslatePipeModule,
617
+ PluginConfigurationContainerModule], exports: [PluginManagementComponent,
618
+ PluginAddModalComponent,
619
+ PluginAddSelectComponent,
620
+ PluginConfigureComponent] });
621
+ PluginManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementModule, providers: [PluginManagementStateService], imports: [[
506
622
  CommonModule,
507
623
  PluginManagementRoutingModule,
508
624
  TranslateModule,
@@ -515,12 +631,19 @@ PluginManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
515
631
  ModalModule,
516
632
  ButtonModule,
517
633
  CardModule,
634
+ PluginTranslatePipeModule,
635
+ PluginConfigurationContainerModule,
518
636
  ]] });
519
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PluginManagementModule, decorators: [{
637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PluginManagementModule, decorators: [{
520
638
  type: NgModule,
521
639
  args: [{
522
640
  providers: [PluginManagementStateService],
523
- declarations: [PluginManagementComponent, PluginAddModalComponent, PluginAddSelectComponent],
641
+ declarations: [
642
+ PluginManagementComponent,
643
+ PluginAddModalComponent,
644
+ PluginAddSelectComponent,
645
+ PluginConfigureComponent,
646
+ ],
524
647
  imports: [
525
648
  CommonModule,
526
649
  PluginManagementRoutingModule,
@@ -534,8 +657,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
534
657
  ModalModule,
535
658
  ButtonModule,
536
659
  CardModule,
660
+ PluginTranslatePipeModule,
661
+ PluginConfigurationContainerModule,
662
+ ],
663
+ exports: [
664
+ PluginManagementComponent,
665
+ PluginAddModalComponent,
666
+ PluginAddSelectComponent,
667
+ PluginConfigureComponent,
537
668
  ],
538
- exports: [PluginManagementComponent, PluginAddModalComponent, PluginAddSelectComponent],
539
669
  }]
540
670
  }] });
541
671
 
@@ -555,5 +685,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
555
685
  * Generated bundle index. Do not edit.
556
686
  */
557
687
 
558
- export { PluginAddModalComponent, PluginAddSelectComponent, PluginManagementComponent, PluginManagementModule, PluginManagementStateService, PluginService };
688
+ export { PluginAddModalComponent, PluginAddSelectComponent, PluginConfigureComponent, PluginManagementComponent, PluginManagementModule, PluginManagementService, PluginManagementStateService };
559
689
  //# sourceMappingURL=valtimo-plugin-management.mjs.map