@colijnit/transaction 12.1.35 → 12.1.36

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 (54) hide show
  1. package/bundles/colijnit-transaction.umd.js +656 -437
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +267 -261
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +268 -262
  6. package/esm2015/lib/component/checkout/checkout.component.js +1 -1
  7. package/esm2015/lib/component/core/base/dynamic-base-component.js +8 -0
  8. package/esm2015/lib/component/core/base/transaction-header-base.component.js +1 -1
  9. package/esm2015/lib/component/core/base/transaction-line-base.component.js +1 -1
  10. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.component.js +35 -0
  11. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.module.js +28 -0
  12. package/esm2015/lib/component/transaction/transaction.component.js +12 -23
  13. package/esm2015/lib/component/transaction/transaction.module.js +1 -1
  14. package/esm2015/lib/component/transaction-grid/transaction-base-grid/transaction-base-grid.component.js +2 -2
  15. package/esm2015/lib/component/transaction-grid/transaction-history-grid/transaction-history-grid.component.js +3 -3
  16. package/esm2015/lib/component/transaction-grid/transaction-lines-grid/transaction-lines-grid.component.js +1 -1
  17. package/esm2015/lib/component/transaction-grid/transaction-received-goods-grid/transaction-received-goods-grid.component.js +39 -22
  18. package/esm2015/lib/component/transaction-grid/transaction-received-goods-grid/transaction-received-goods-grid.module.js +4 -2
  19. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +1 -1
  20. package/esm2015/lib/component/transaction-line/transaction-line.component.js +1 -1
  21. package/esm2015/lib/component/transaction-line-checkbox-list/transaction-line-checkbox-list.component.js +3 -3
  22. package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.component.js +1 -1
  23. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.js +45 -0
  24. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.module.js +23 -0
  25. package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +64 -52
  26. package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.js +2 -4
  27. package/esm2015/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.js +23 -18
  28. package/esm2015/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.js +4 -10
  29. package/esm2015/lib/service/article-connector.service.js +2 -8
  30. package/esm2015/lib/service/article.service.js +6 -2
  31. package/esm2015/lib/service/dialog.service.js +32 -41
  32. package/esm2015/lib/service/dynamic-component.service.js +68 -0
  33. package/fesm2015/colijnit-transaction.js +440 -255
  34. package/fesm2015/colijnit-transaction.js.map +1 -1
  35. package/lib/component/core/base/dynamic-base-component.d.ts +3 -0
  36. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.component.d.ts +4 -0
  37. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.module.d.ts +2 -0
  38. package/lib/component/transaction/transaction.component.d.ts +3 -3
  39. package/lib/component/transaction-grid/transaction-received-goods-grid/style/_layout.scss +11 -0
  40. package/lib/component/transaction-grid/transaction-received-goods-grid/transaction-received-goods-grid.component.d.ts +7 -2
  41. package/lib/component/transaction-line/style/material.scss +1 -1
  42. package/lib/component/transaction-line-checkbox-list/style/_layout.scss +13 -0
  43. package/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.d.ts +13 -0
  44. package/lib/component/transaction-line-fields/transaction-line-warehouse-location.module.d.ts +2 -0
  45. package/lib/component/transaction-line-side-panel/style/_layout.scss +16 -13
  46. package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +4 -2
  47. package/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.d.ts +1 -1
  48. package/lib/component/transaction-receiving-goods-details/style/_layout.scss +16 -0
  49. package/lib/component/transaction-receiving-goods-details/transaction-receiving-goods-details.component.d.ts +4 -1
  50. package/lib/component/transaction-receiving-goods-history/transaction-receiving-goods-history.component.d.ts +5 -7
  51. package/lib/component/transaction-search/style/material.scss +1 -1
  52. package/lib/service/dialog.service.d.ts +10 -3
  53. package/lib/service/dynamic-component.service.d.ts +9 -0
  54. package/package.json +3 -3
@@ -6,13 +6,16 @@ import { AppPopupType } from "../component/core/enum/app-popup-type.enum";
6
6
  import { CharacteristicAnswerComponent } from "../component/core/base/components/characteristic-answer/characteristic-answer.component";
7
7
  import { DialogTransactionLineWarehouseComponent } from "../component/dialog/transaction-line/dialog-transaction-line-warehouse/dialog-transaction-line-warehouse.component";
8
8
  import { DialogTransactionLineCommissionCodeComponent } from "../component/dialog/transaction-line/dialog-transaction-line-commission-code/dialog-transaction-line-commission-code.component";
9
+ import { DynamicComponentService } from "./dynamic-component.service";
10
+ import { DialogTransactionLineWarehouseLocationComponent } from "../component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.component";
9
11
  import * as i0 from "@angular/core";
12
+ import * as i1 from "./dynamic-component.service";
10
13
  export class DialogService {
11
- constructor(_compFactoryResolver, appRef, injector) {
14
+ constructor(_compFactoryResolver, appRef, injector, dynamicComponentService) {
12
15
  this._compFactoryResolver = _compFactoryResolver;
13
16
  this.appRef = appRef;
14
17
  this.injector = injector;
15
- // private _componentRef: any;
18
+ this.dynamicComponentService = dynamicComponentService;
16
19
  this._componentRefs = [];
17
20
  }
18
21
  showYesNo(title, text) {
@@ -22,7 +25,7 @@ export class DialogService {
22
25
  text: text,
23
26
  type: AppPopupType.Confirmation
24
27
  };
25
- const response = yield this._createComponent(ConfirmationDialogComponent, data);
28
+ const response = yield this.dynamicComponentService.createComponent(ConfirmationDialogComponent, data);
26
29
  return response === AppPopupButtonType.Yes;
27
30
  });
28
31
  }
@@ -35,7 +38,7 @@ export class DialogService {
35
38
  if (details) {
36
39
  data.details = details;
37
40
  }
38
- return this._createComponent(ConfirmationDialogComponent, data);
41
+ return this.dynamicComponentService.createComponent(ConfirmationDialogComponent, data);
39
42
  }
40
43
  showInformation(message) {
41
44
  const data = {
@@ -43,7 +46,19 @@ export class DialogService {
43
46
  text: message,
44
47
  type: AppPopupType.Information
45
48
  };
46
- return this._createComponent(ConfirmationDialogComponent, data);
49
+ return this.dynamicComponentService.createComponent(ConfirmationDialogComponent, data);
50
+ }
51
+ showTransactionLineComponent(comp, transLine) {
52
+ const data = {
53
+ transactionLine: transLine
54
+ };
55
+ return this.dynamicComponentService.createComponent(comp, data);
56
+ }
57
+ showTransactionHeaderComponent(comp, transactionInfo) {
58
+ const data = {
59
+ transactionInfo: transactionInfo
60
+ };
61
+ return this.dynamicComponentService.createComponent(comp, data);
47
62
  }
48
63
  showCharacteristics(title, choices, value) {
49
64
  const data = {
@@ -51,53 +66,28 @@ export class DialogService {
51
66
  choices: choices,
52
67
  value: value
53
68
  };
54
- return this._createComponent(CharacteristicAnswerComponent, data);
69
+ return this.dynamicComponentService.createComponent(CharacteristicAnswerComponent, data);
55
70
  }
56
71
  showWarehouse() {
57
72
  const data = {
58
73
  useModel: false
59
74
  };
60
- return this._createComponent(DialogTransactionLineWarehouseComponent, data);
75
+ return this.dynamicComponentService.createComponent(DialogTransactionLineWarehouseComponent, data);
61
76
  }
62
77
  showCommissionCode() {
63
78
  const data = {
64
79
  useModel: false
65
80
  };
66
- return this._createComponent(DialogTransactionLineCommissionCodeComponent, data);
81
+ return this.dynamicComponentService.createComponent(DialogTransactionLineCommissionCodeComponent, data);
67
82
  }
68
- _createComponent(componentClass, data, providers) {
69
- return new Promise((resolve) => {
70
- if (providers) {
71
- Injector.create(providers, this.injector);
72
- }
73
- const componentRef = this._compFactoryResolver
74
- .resolveComponentFactory(componentClass)
75
- .create(this.injector);
76
- this._componentRefs.push(componentRef);
77
- for (let key in data) {
78
- if (data.hasOwnProperty(key)) {
79
- componentRef.instance[key] = data[key];
80
- }
81
- }
82
- this.appRef.attachView(componentRef.hostView);
83
- const domElem = componentRef.hostView
84
- .rootNodes[0];
85
- document.body.appendChild(domElem);
86
- componentRef.onDestroy(() => {
87
- this.appRef.detachView(componentRef.hostView);
88
- });
89
- // @ts-ignore
90
- componentRef.instance.onClose = (button, output) => {
91
- const idx = this._componentRefs.indexOf(componentRef);
92
- this.appRef.detachView(componentRef.hostView);
93
- this._componentRefs[idx] = undefined;
94
- this._componentRefs.splice(idx, 1);
95
- resolve(output ? output : button);
96
- };
97
- });
83
+ showWarehouseLocation() {
84
+ const data = {
85
+ useModel: false
86
+ };
87
+ return this.dynamicComponentService.createComponent(DialogTransactionLineWarehouseLocationComponent, data);
98
88
  }
99
89
  }
100
- DialogService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DialogService_Factory() { return new DialogService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR)); }, token: DialogService, providedIn: "root" });
90
+ DialogService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DialogService_Factory() { return new DialogService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.DynamicComponentService)); }, token: DialogService, providedIn: "root" });
101
91
  DialogService.decorators = [
102
92
  { type: Injectable, args: [{
103
93
  providedIn: "root"
@@ -106,6 +96,7 @@ DialogService.decorators = [
106
96
  DialogService.ctorParameters = () => [
107
97
  { type: ComponentFactoryResolver },
108
98
  { type: ApplicationRef },
109
- { type: Injector }
99
+ { type: Injector },
100
+ { type: DynamicComponentService }
110
101
  ];
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQW1CLFVBQVUsRUFBRSxRQUFRLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUl4RSxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx5RkFBeUYsQ0FBQztBQUN0SSxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSxvSEFBb0gsQ0FBQztBQUMzSyxPQUFPLEVBQUMsNENBQTRDLEVBQUMsTUFBTSxnSUFBZ0ksQ0FBQzs7QUFPNUwsTUFBTSxPQUFPLGFBQWE7SUFLeEIsWUFDVSxvQkFBOEMsRUFDOUMsTUFBc0IsRUFDdEIsUUFBa0I7UUFGbEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUEwQjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTjVCLDhCQUE4QjtRQUN0QixtQkFBYyxHQUFVLEVBQUUsQ0FBQztJQU9uQyxDQUFDO0lBRVksU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFZOztZQUNoRCxNQUFNLElBQUksR0FBTztnQkFDZixLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsWUFBWSxDQUFDLFlBQVk7YUFDaEMsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixFQUFF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QUFDO1lBRUgsYUFBYTtZQUNiLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBVyxFQUFFLE1BQVksRUFBRSxFQUFFO2dCQUM1RCxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7OztZQXZHRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQWZ1Qix3QkFBd0I7WUFBeEMsY0FBYztZQUF5RCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbWJlZGRlZFZpZXdSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBQcm92aWRlciwgU3RhdGljUHJvdmlkZXIsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXBwUG9wdXBCdXR0b25UeXBlfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvZW51bS9hcHAtcG9wdXAtYnV0dG9uLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0NvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXBwUG9wdXBUeXBlfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvZW51bS9hcHAtcG9wdXAtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7RGlhbG9nQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZS5ib1wiO1xyXG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvYmFzZS9jb21wb25lbnRzL2NoYXJhY3RlcmlzdGljLWFuc3dlci9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlhbG9nVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2RpYWxvZy90cmFuc2FjdGlvbi1saW5lL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS9kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlhbG9nVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGVDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvZGlhbG9nL3RyYW5zYWN0aW9uLWxpbmUvZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtY29tbWlzc2lvbi1jb2RlL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLWNvbW1pc3Npb24tY29kZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4vdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuXHJcbiAgLy8gcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBhbnk7XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmczogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb21wRmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNob3dZZXNObyh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgZGF0YToge30gPSB7XHJcbiAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgdGV4dDogdGV4dCxcclxuICAgICAgdHlwZTogQXBwUG9wdXBUeXBlLkNvbmZpcm1hdGlvblxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY3JlYXRlQ29tcG9uZW50KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UgPT09IEFwcFBvcHVwQnV0dG9uVHlwZS5ZZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0Vycm9yKG1lc3NhZ2U6IHN0cmluZywgZGV0YWlscz86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XHJcbiAgICAgIHRpdGxlOiAnRVJST1InLFxyXG4gICAgICB0ZXh0OiBtZXNzYWdlLFxyXG4gICAgICB0eXBlOiBBcHBQb3B1cFR5cGUuRXJyb3JcclxuICAgIH07XHJcbiAgICBpZiAoZGV0YWlscykge1xyXG4gICAgICBkYXRhLmRldGFpbHMgPSBkZXRhaWxzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUNvbXBvbmVudChDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dJbmZvcm1hdGlvbihtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgZGF0YToge30gPSB7XHJcbiAgICAgIHRpdGxlOiAnSU5GT1JNQVRJT04nLFxyXG4gICAgICB0ZXh0OiBtZXNzYWdlLFxyXG4gICAgICB0eXBlOiBBcHBQb3B1cFR5cGUuSW5mb3JtYXRpb25cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlQ29tcG9uZW50KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0NoYXJhY3RlcmlzdGljcyh0aXRsZTogc3RyaW5nLCBjaG9pY2VzOiBUcmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZVtdLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgIGNob2ljZXM6IGNob2ljZXMsXHJcbiAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVDb21wb25lbnQoQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dXYXJlaG91c2UoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB1c2VNb2RlbDogZmFsc2VcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlQ29tcG9uZW50KERpYWxvZ1RyYW5zYWN0aW9uTGluZVdhcmVob3VzZUNvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0NvbW1pc3Npb25Db2RlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkYXRhOiB7fSA9IHtcclxuICAgICAgdXNlTW9kZWw6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUNvbXBvbmVudChEaWFsb2dUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZUNvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3M6IGFueSwgZGF0YTogYW55LCBwcm92aWRlcnM/OiBTdGF0aWNQcm92aWRlcltdKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHByb3ZpZGVycykge1xyXG4gICAgICAgIEluamVjdG9yLmNyZWF0ZShwcm92aWRlcnMsIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX2NvbXBGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50Q2xhc3MpXHJcbiAgICAgICAgLmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmcy5wdXNoKGNvbXBvbmVudFJlZik7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcblxyXG4gICAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PilcclxuICAgICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcclxuICAgICAgY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9uQ2xvc2UgPSAoYnV0dG9uOiBhbnksIG91dHB1dD86IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5fY29tcG9uZW50UmVmcy5pbmRleE9mKGNvbXBvbmVudFJlZik7XHJcbiAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZnNbaWR4XSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWZzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgIHJlc29sdmUob3V0cHV0ID8gb3V0cHV0IDogYnV0dG9uKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBRXhCLFVBQVUsRUFDVixRQUFRLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDckYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDM0csT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRXhFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHlGQUF5RixDQUFDO0FBQ3RJLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLG9IQUFvSCxDQUFDO0FBQzNLLE9BQU8sRUFBQyw0Q0FBNEMsRUFBQyxNQUFNLGdJQUFnSSxDQUFDO0FBQzVMLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCwrQ0FBK0MsRUFDaEQsTUFBTSxzSUFBc0ksQ0FBQzs7O0FBUTlJLE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQ1Usb0JBQThDLEVBQzlDLE1BQXNCLEVBQ3RCLFFBQWtCLEVBQ2xCLHVCQUFnRDtRQUhoRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTBCO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQU5sRCxtQkFBYyxHQUFVLEVBQUUsQ0FBQztJQVFuQyxDQUFDO0lBRVksU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFZOztZQUNoRCxNQUFNLElBQUksR0FBTztnQkFDZixLQUFLLEVBQUUsS0FB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ZixcclxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5qZWN0b3IsXHJcbiAgU3RhdGljUHJvdmlkZXIsXHJcbiAgVHlwZVxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXBwUG9wdXBCdXR0b25UeXBlfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvZW51bS9hcHAtcG9wdXAtYnV0dG9uLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge0NvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXBwUG9wdXBUeXBlfSBmcm9tIFwiLi4vY29tcG9uZW50L2NvcmUvZW51bS9hcHAtcG9wdXAtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lQ2hhcmFjdGVyaXN0aWNDaG9pY2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb25MaW5lQ2hhcmFjdGVyaXN0aWNDaG9pY2UuYm9cIjtcclxuaW1wb3J0IHtDaGFyYWN0ZXJpc3RpY0Fuc3dlckNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9jb3JlL2Jhc2UvY29tcG9uZW50cy9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIvY2hhcmFjdGVyaXN0aWMtYW5zd2VyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0RpYWxvZ1RyYW5zYWN0aW9uTGluZVdhcmVob3VzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudC9kaWFsb2cvdHJhbnNhY3Rpb24tbGluZS9kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UvZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0RpYWxvZ1RyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50L2RpYWxvZy90cmFuc2FjdGlvbi1saW5lL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLWNvbW1pc3Npb24tY29kZS9kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS1jb21taXNzaW9uLWNvZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RHluYW1pY0NvbXBvbmVudFNlcnZpY2V9IGZyb20gXCIuL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBEaWFsb2dUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2VMb2NhdGlvbkNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9jb21wb25lbnQvZGlhbG9nL3RyYW5zYWN0aW9uLWxpbmUvZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWxvY2F0aW9uL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1sb2NhdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby5ib1wiO1xyXG5pbXBvcnQge0RpYWxvZ0Jhc2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnRSZWZzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NvbXBGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93WWVzTm8odGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgIHRleHQ6IHRleHQsXHJcbiAgICAgIHR5cGU6IEFwcFBvcHVwVHlwZS5Db25maXJtYXRpb25cclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UgPT09IEFwcFBvcHVwQnV0dG9uVHlwZS5ZZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0Vycm9yKG1lc3NhZ2U6IHN0cmluZywgZGV0YWlscz86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XHJcbiAgICAgIHRpdGxlOiAnRVJST1InLFxyXG4gICAgICB0ZXh0OiBtZXNzYWdlLFxyXG4gICAgICB0eXBlOiBBcHBQb3B1cFR5cGUuRXJyb3JcclxuICAgIH07XHJcbiAgICBpZiAoZGV0YWlscykge1xyXG4gICAgICBkYXRhLmRldGFpbHMgPSBkZXRhaWxzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0luZm9ybWF0aW9uKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBkYXRhOiB7fSA9IHtcclxuICAgICAgdGl0bGU6ICdJTkZPUk1BVElPTicsXHJcbiAgICAgIHRleHQ6IG1lc3NhZ2UsXHJcbiAgICAgIHR5cGU6IEFwcFBvcHVwVHlwZS5JbmZvcm1hdGlvblxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dUcmFuc2FjdGlvbkxpbmVDb21wb25lbnQoY29tcDogVHlwZTxEaWFsb2dCYXNlQ29tcG9uZW50PiwgdHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSB7XHJcbiAgICBjb25zdCBkYXRhOiB7fSA9IHtcclxuICAgICAgdHJhbnNhY3Rpb25MaW5lOiB0cmFuc0xpbmVcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChjb21wLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93VHJhbnNhY3Rpb25IZWFkZXJDb21wb25lbnQoY29tcDogVHlwZTxEaWFsb2dCYXNlQ29tcG9uZW50PiwgdHJhbnNhY3Rpb25JbmZvOiBUcmFuc2FjdGlvbkluZm8pIHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB0cmFuc2FjdGlvbkluZm86IHRyYW5zYWN0aW9uSW5mb1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KGNvbXAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dDaGFyYWN0ZXJpc3RpY3ModGl0bGU6IHN0cmluZywgY2hvaWNlczogVHJhbnNhY3Rpb25MaW5lQ2hhcmFjdGVyaXN0aWNDaG9pY2VbXSwgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkYXRhOiB7fSA9IHtcclxuICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICBjaG9pY2VzOiBjaG9pY2VzLFxyXG4gICAgICB2YWx1ZTogdmFsdWVcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dXYXJlaG91c2UoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB1c2VNb2RlbDogZmFsc2VcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoRGlhbG9nVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlQ29tcG9uZW50LCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q29tbWlzc2lvbkNvZGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGRhdGE6IHt9ID0ge1xyXG4gICAgICB1c2VNb2RlbDogZmFsc2VcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVDb21wb25lbnQoRGlhbG9nVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGVDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dXYXJlaG91c2VMb2NhdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YToge30gPSB7XHJcbiAgICAgIHVzZU1vZGVsOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChEaWFsb2dUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2VMb2NhdGlvbkNvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class DynamicComponentService {
4
+ constructor(_compFactoryResolver, appRef, injector) {
5
+ this._compFactoryResolver = _compFactoryResolver;
6
+ this.appRef = appRef;
7
+ this.injector = injector;
8
+ this._componentRefs = [];
9
+ }
10
+ createComponent(componentClass, inputs, outputs, providers) {
11
+ return new Promise((resolve) => {
12
+ if (providers) {
13
+ Injector.create(providers, this.injector);
14
+ }
15
+ const componentRef = this._compFactoryResolver
16
+ .resolveComponentFactory(componentClass)
17
+ .create(this.injector);
18
+ this._componentRefs.push(componentRef);
19
+ if (inputs) {
20
+ for (let property in inputs) {
21
+ if (inputs.hasOwnProperty(property)) {
22
+ componentRef.instance[property] = inputs[property];
23
+ }
24
+ }
25
+ }
26
+ if (outputs) {
27
+ for (let event in outputs) {
28
+ if (outputs.hasOwnProperty(event)) {
29
+ componentRef.instance[event].subscribe(() => outputs[event]());
30
+ }
31
+ }
32
+ }
33
+ this.appRef.attachView(componentRef.hostView);
34
+ const domElem = componentRef.hostView
35
+ .rootNodes[0];
36
+ document.body.appendChild(domElem);
37
+ componentRef.onDestroy(() => {
38
+ this.appRef.detachView(componentRef.hostView);
39
+ });
40
+ componentRef.instance.onClose = (button, output) => {
41
+ const idx = this._componentRefs.indexOf(componentRef);
42
+ this.appRef.detachView(componentRef.hostView);
43
+ this._componentRefs[idx] = undefined;
44
+ this._componentRefs.splice(idx, 1);
45
+ if (outputs) {
46
+ for (let event in outputs) {
47
+ if (outputs.hasOwnProperty(event)) {
48
+ componentRef.instance[event].unsubscribe();
49
+ }
50
+ }
51
+ }
52
+ resolve(output ? output : button);
53
+ };
54
+ });
55
+ }
56
+ }
57
+ DynamicComponentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DynamicComponentService_Factory() { return new DynamicComponentService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR)); }, token: DynamicComponentService, providedIn: "root" });
58
+ DynamicComponentService.decorators = [
59
+ { type: Injectable, args: [{
60
+ providedIn: "root"
61
+ },] }
62
+ ];
63
+ DynamicComponentService.ctorParameters = () => [
64
+ { type: ComponentFactoryResolver },
65
+ { type: ApplicationRef },
66
+ { type: Injector }
67
+ ];
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBRXhCLFVBQVUsRUFDVixRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsWUFDVSxvQkFBOEMsRUFDOUMsTUFBc0IsRUFDdEIsUUFBa0I7UUFGbEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUEwQjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTHBCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO0lBTS9CLENBQUM7SUFFRSxlQUFlLENBQUMsY0FBbUIsRUFBRSxNQUFZLEVBQUUsT0FBYSxFQUFFLFNBQTRCO1FBQ25HLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUU7WUFDdkMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLG9CQUFvQjtpQkFDaEQsdUJBQXVCLENBQUMsY0FBYyxDQUFDO2lCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXZDLElBQUksTUFBTSxFQUFFO2dCQUNWLEtBQUssSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFO29CQUMzQixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ25DLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNwRDtpQkFDRjthQUNGO1lBRUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7b0JBQ3pCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDakMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDaEU7aUJBQ0Y7YUFDRjtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU5QyxNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUM7aUJBQzVELFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFFL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBVyxFQUFFLE1BQVksRUFBRSxFQUFFO2dCQUM1RCxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVuQyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRTt3QkFDekIsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNqQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO3lCQUM1QztxQkFDRjtpQkFDRjtnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7OztZQWpFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRDLHdCQUF3QjtZQUR4QixjQUFjO1lBSWQsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBJbmplY3RhYmxlLFxyXG4gIEluamVjdG9yLFxyXG4gIFN0YXRpY1Byb3ZpZGVyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnRSZWZzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NvbXBGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzczogYW55LCBpbnB1dHM/OiBhbnksIG91dHB1dHM/OiBhbnksIHByb3ZpZGVycz86IFN0YXRpY1Byb3ZpZGVyW10pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAocHJvdmlkZXJzKSB7XHJcbiAgICAgICAgSW5qZWN0b3IuY3JlYXRlKHByb3ZpZGVycywgdGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBhbnkgPSB0aGlzLl9jb21wRmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudENsYXNzKVxyXG4gICAgICAgIC5jcmVhdGUodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZnMucHVzaChjb21wb25lbnRSZWYpO1xyXG5cclxuICAgICAgaWYgKGlucHV0cykge1xyXG4gICAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIGlucHV0cykge1xyXG4gICAgICAgICAgaWYgKGlucHV0cy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlW3Byb3BlcnR5XSA9IGlucHV0c1twcm9wZXJ0eV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3V0cHV0cykge1xyXG4gICAgICAgIGZvciAobGV0IGV2ZW50IGluIG91dHB1dHMpIHtcclxuICAgICAgICAgIGlmIChvdXRwdXRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2VbZXZlbnRdLnN1YnNjcmliZSgoKSA9PiBvdXRwdXRzW2V2ZW50XSgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxyXG4gICAgICAgIC5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xyXG4gICAgICBjb21wb25lbnRSZWYub25EZXN0cm95KCgpID0+IHtcclxuICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9uQ2xvc2UgPSAoYnV0dG9uOiBhbnksIG91dHB1dD86IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5fY29tcG9uZW50UmVmcy5pbmRleE9mKGNvbXBvbmVudFJlZik7XHJcbiAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZnNbaWR4XSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWZzLnNwbGljZShpZHgsIDEpO1xyXG5cclxuICAgICAgICBpZiAob3V0cHV0cykge1xyXG4gICAgICAgICAgZm9yIChsZXQgZXZlbnQgaW4gb3V0cHV0cykge1xyXG4gICAgICAgICAgICBpZiAob3V0cHV0cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcclxuICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2VbZXZlbnRdLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShvdXRwdXQgPyBvdXRwdXQgOiBidXR0b24pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=