@pepperi-addons/ngx-composite-lib 0.0.16-beta.4 → 0.0.16-beta.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/bundles/pepperi-addons-ngx-composite-lib-color-settings.umd.js +10 -1
  2. package/bundles/pepperi-addons-ngx-composite-lib-color-settings.umd.js.map +1 -1
  3. package/bundles/pepperi-addons-ngx-composite-lib-data-view-builder.umd.js +393 -0
  4. package/bundles/pepperi-addons-ngx-composite-lib-data-view-builder.umd.js.map +1 -0
  5. package/bundles/pepperi-addons-ngx-composite-lib-file-status-panel.umd.js +15 -10
  6. package/bundles/pepperi-addons-ngx-composite-lib-file-status-panel.umd.js.map +1 -1
  7. package/bundles/pepperi-addons-ngx-composite-lib-generic-form.umd.js +91 -58
  8. package/bundles/pepperi-addons-ngx-composite-lib-generic-form.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-composite-lib-generic-list.umd.js +119 -74
  10. package/bundles/pepperi-addons-ngx-composite-lib-generic-list.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-composite-lib-group-buttons-settings.umd.js +5 -2
  12. package/bundles/pepperi-addons-ngx-composite-lib-group-buttons-settings.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-composite-lib.umd.js +114 -50
  14. package/bundles/pepperi-addons-ngx-composite-lib.umd.js.map +1 -1
  15. package/color-settings/color-settings.component.d.ts +4 -1
  16. package/core/common/directives/reset-configuration-field.directive.d.ts +1 -0
  17. package/core/common/services/dimx.service.d.ts +32 -0
  18. package/core/common/services/public-api.d.ts +1 -0
  19. package/data-view-builder/data-view-builder.component.d.ts +35 -0
  20. package/data-view-builder/data-view-builder.model.d.ts +1 -0
  21. package/data-view-builder/data-view-builder.module.d.ts +23 -0
  22. package/data-view-builder/data-view-builder.service.d.ts +14 -0
  23. package/data-view-builder/menu-data-view/menu-data-view.component.d.ts +36 -0
  24. package/data-view-builder/package.json +10 -0
  25. package/{dimx-export/pepperi-addons-ngx-composite-lib-dimx-export.d.ts → data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.d.ts} +1 -1
  26. package/data-view-builder/public-api.d.ts +3 -0
  27. package/esm2015/color-settings/color-settings.component.js +11 -2
  28. package/esm2015/core/common/directives/reset-configuration-field.directive.js +26 -22
  29. package/esm2015/core/common/services/dimx.service.js +50 -0
  30. package/esm2015/core/common/services/public-api.js +2 -1
  31. package/esm2015/data-view-builder/data-view-builder.component.js +122 -0
  32. package/esm2015/data-view-builder/data-view-builder.model.js +2 -0
  33. package/esm2015/data-view-builder/data-view-builder.module.js +82 -0
  34. package/esm2015/data-view-builder/data-view-builder.service.js +39 -0
  35. package/esm2015/data-view-builder/menu-data-view/menu-data-view.component.js +122 -0
  36. package/esm2015/data-view-builder/pepperi-addons-ngx-composite-lib-data-view-builder.js +5 -0
  37. package/esm2015/data-view-builder/public-api.js +7 -0
  38. package/esm2015/file-status-panel/file-status-panel.module.js +12 -4
  39. package/esm2015/generic-form/generic-form.component.js +86 -55
  40. package/esm2015/generic-form/generic-form.model.js +1 -1
  41. package/esm2015/generic-form/index.js +5 -0
  42. package/esm2015/generic-list/generic-list.component.js +65 -36
  43. package/esm2015/generic-list/generic-list.model.js +1 -1
  44. package/esm2015/generic-list/generic-list.module.js +7 -4
  45. package/esm2015/generic-list/generic-list.service.js +23 -10
  46. package/esm2015/group-buttons-settings/group-buttons-settings.component.js +2 -2
  47. package/esm2015/group-buttons-settings/group-buttons-settings.module.js +6 -3
  48. package/esm2015/ngx-composite-lib.module.js +19 -8
  49. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.js +10 -1
  50. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.js.map +1 -1
  51. package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.js +360 -0
  52. package/fesm2015/pepperi-addons-ngx-composite-lib-data-view-builder.js.map +1 -0
  53. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.js +12 -5
  54. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.js.map +1 -1
  55. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.js +85 -55
  56. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.js.map +1 -1
  57. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.js +88 -44
  58. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.js.map +1 -1
  59. package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.js +6 -3
  60. package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.js.map +1 -1
  61. package/fesm2015/pepperi-addons-ngx-composite-lib.js +117 -54
  62. package/fesm2015/pepperi-addons-ngx-composite-lib.js.map +1 -1
  63. package/file-status-panel/file-status-panel.module.d.ts +3 -0
  64. package/generic-form/generic-form.component.d.ts +12 -12
  65. package/generic-form/generic-form.model.d.ts +12 -13
  66. package/{dimx-export → generic-form}/index.d.ts +0 -0
  67. package/generic-list/generic-list.component.d.ts +11 -9
  68. package/generic-list/generic-list.model.d.ts +10 -6
  69. package/generic-list/generic-list.service.d.ts +2 -1
  70. package/group-buttons-settings/group-buttons-settings.module.d.ts +2 -1
  71. package/ngx-composite-lib.module.d.ts +4 -2
  72. package/package.json +2 -2
  73. package/src/assets/i18n/en.ngx-composite-lib.json +24 -1
  74. package/src/core/style/components/data-view-builder.scss +65 -0
  75. package/styling.scss +5 -1
  76. package/bundles/pepperi-addons-ngx-composite-lib-dimx-export.umd.js +0 -890
  77. package/bundles/pepperi-addons-ngx-composite-lib-dimx-export.umd.js.map +0 -1
  78. package/dimx-export/dimx.component.d.ts +0 -86
  79. package/dimx-export/dimx.model.d.ts +0 -5
  80. package/dimx-export/dimx.module.d.ts +0 -16
  81. package/dimx-export/dimx.service.d.ts +0 -21
  82. package/dimx-export/package.json +0 -16
  83. package/dimx-export/public-api.d.ts +0 -3
  84. package/esm2015/dimx-export/dimx.component.js +0 -335
  85. package/esm2015/dimx-export/dimx.model.js +0 -8
  86. package/esm2015/dimx-export/dimx.module.js +0 -53
  87. package/esm2015/dimx-export/dimx.service.js +0 -50
  88. package/esm2015/dimx-export/index.js +0 -5
  89. package/esm2015/dimx-export/pepperi-addons-ngx-composite-lib-dimx-export.js +0 -5
  90. package/esm2015/dimx-export/public-api.js +0 -7
  91. package/fesm2015/pepperi-addons-ngx-composite-lib-dimx-export.js +0 -446
  92. package/fesm2015/pepperi-addons-ngx-composite-lib-dimx-export.js.map +0 -1
@@ -1,11 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
3
- import * as i6 from '@angular/common';
2
+ import { Injectable, EventEmitter, ViewContainerRef, Component, ViewChild, Input, Output, NgModule } from '@angular/core';
3
+ import * as i5 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@pepperi-addons/ngx-lib';
6
6
  import { ObjectsDataRowCell, ObjectsDataRow, UIControl, PepGuid, PepNgxLibModule } from '@pepperi-addons/ngx-lib';
7
- import * as i5 from '@pepperi-addons/ngx-lib/form';
8
- import { PepFormModule } from '@pepperi-addons/ngx-lib/form';
7
+ import { PepFormComponent, PepFormModule } from '@pepperi-addons/ngx-lib/form';
9
8
  import { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';
10
9
  import * as i3 from '@pepperi-addons/ngx-lib/page-layout';
11
10
  import { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';
@@ -79,7 +78,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
79
78
  }], ctorParameters: function () { return []; } });
80
79
 
81
80
  class GenericFormComponent {
82
- constructor(layoutService, _genericFormService) {
81
+ constructor(_resolver, layoutService, _genericFormService) {
82
+ this._resolver = _resolver;
83
83
  this.layoutService = layoutService;
84
84
  this._genericFormService = _genericFormService;
85
85
  this._optionalValues = [];
@@ -93,59 +93,84 @@ class GenericFormComponent {
93
93
  this.layoutService.onResize$.pipe().subscribe((size) => {
94
94
  //
95
95
  });
96
- this.formData = new ObjectsDataRow();
97
- this.uiControl = new UIControl();
96
+ this._formData = new ObjectsDataRow();
97
+ this._uiControl = new UIControl();
98
+ }
99
+ set pepListContainer(val) {
100
+ this._pepFormContainer = val;
98
101
  }
99
102
  set dataSource(val) {
100
103
  this._data = val;
101
- this.createFormFields();
102
104
  }
103
105
  set dataView(val) {
104
- var _a;
105
- if (val) {
106
- this.formData.IsEditable = !this.isLocked;
107
- this.formData.UID = val.UID || PepGuid.newGuid();
108
- const uiControlData = DataViewConverter.toUIControlData(val);
109
- if (uiControlData) {
110
- if (uiControlData === null || uiControlData === void 0 ? void 0 : uiControlData.ControlFields) {
111
- (_a = val.Fields) === null || _a === void 0 ? void 0 : _a.forEach((field) => {
112
- var _a;
113
- if ((_a = field.OptionalValues) === null || _a === void 0 ? void 0 : _a.length) {
114
- this._optionalValues.push({
115
- fieldId: field.FieldID,
116
- optionalValues: field.OptionalValues
117
- });
118
- }
119
- });
120
- this.uiControl.ControlFields = uiControlData.ControlFields.map((field) => this._genericFormService.convertToUiControlField(field));
121
- }
122
- this.uiControl.Columns = uiControlData.Columns;
123
- this.createFormFields();
124
- }
125
- }
106
+ this.initForm(val);
126
107
  }
127
108
  ngOnInit() {
128
109
  //
129
110
  }
130
- createFormFields() {
131
- var _a, _b;
132
- if (this._data && ((_b = (_a = this.uiControl) === null || _a === void 0 ? void 0 : _a.ControlFields) === null || _b === void 0 ? void 0 : _b.length)) {
133
- this.formData.Fields = [];
134
- this.uiControl.ControlFields.forEach((item) => {
135
- let value = '';
136
- if (this._genericFormService.hasProperty(this._data, item.ApiName)) {
137
- value = this._data[item.ApiName];
111
+ initForm(dataView) {
112
+ setTimeout(() => {
113
+ var _a, _b;
114
+ if (this._pepFormContainer) {
115
+ if (this._pepFormContainer.length) {
116
+ this._pepFormContainer.remove();
117
+ this._formData = new ObjectsDataRow();
118
+ this._uiControl = new UIControl();
138
119
  }
139
- this.formData.Fields.push(this._genericFormService.createFormField(item, value, this.getOptionalValues(item.ApiName)));
140
- });
141
- }
120
+ const factory = this._resolver.resolveComponentFactory(PepFormComponent);
121
+ const componentRef = this._pepFormContainer.createComponent(factory);
122
+ this._pepForm = componentRef.instance;
123
+ this._formData.IsEditable = !this.isLocked;
124
+ this._formData.UID = dataView.UID || PepGuid.newGuid();
125
+ const uiControlData = DataViewConverter.toUIControlData(dataView);
126
+ if (uiControlData) {
127
+ if (uiControlData === null || uiControlData === void 0 ? void 0 : uiControlData.ControlFields) {
128
+ (_a = dataView.Fields) === null || _a === void 0 ? void 0 : _a.forEach((field) => {
129
+ var _a;
130
+ if ((_a = field.OptionalValues) === null || _a === void 0 ? void 0 : _a.length) {
131
+ this._optionalValues.push({
132
+ fieldId: field.FieldID,
133
+ optionalValues: field.OptionalValues
134
+ });
135
+ }
136
+ });
137
+ this._uiControl.ControlFields = uiControlData.ControlFields.map((field) => this._genericFormService.convertToUiControlField(field));
138
+ }
139
+ this._uiControl.Columns = uiControlData.Columns;
140
+ if ((_b = this._uiControl.ControlFields) === null || _b === void 0 ? void 0 : _b.length) {
141
+ this._formData.Fields = [];
142
+ this._uiControl.ControlFields.forEach((item) => {
143
+ let value = '';
144
+ if (this._genericFormService.hasProperty(this._data, item.ApiName)) {
145
+ value = this._data[item.ApiName];
146
+ }
147
+ this._formData.Fields.push(this._genericFormService.createFormField(item, value, this.getOptionalValues(item.ApiName)));
148
+ });
149
+ componentRef.instance.layoutType = 'form';
150
+ componentRef.instance.layout = this._uiControl;
151
+ componentRef.instance.data = this._formData;
152
+ componentRef.instance.isInternal = false;
153
+ componentRef.instance.lockFields = this.isLocked;
154
+ componentRef.instance.valueChange.subscribe(($event) => {
155
+ this.onValueChanged($event);
156
+ });
157
+ componentRef.instance.fieldClick.subscribe(($event) => {
158
+ this.onfieldClicked($event);
159
+ });
160
+ componentRef.instance.formValidationChange.subscribe(($event) => {
161
+ this.onFormValidationChanged($event);
162
+ });
163
+ }
164
+ }
165
+ }
166
+ }, 0);
142
167
  }
143
168
  /**
144
169
  * updates form field's value
145
170
  * @param field object containing the data of the required update
146
171
  */
147
172
  updateFieldValue(fieldChanged) {
148
- this._data[fieldChanged.apiName] = fieldChanged.value;
173
+ this._data[fieldChanged.ApiName] = fieldChanged.Value;
149
174
  }
150
175
  getOptionalValues(fieldId) {
151
176
  const item = this._optionalValues.find((item) => item.fieldId === fieldId);
@@ -153,7 +178,7 @@ class GenericFormComponent {
153
178
  }
154
179
  getData() {
155
180
  return {
156
- UID: this.formData.UID,
181
+ UID: this._formData.UID,
157
182
  Values: this._data
158
183
  };
159
184
  }
@@ -163,31 +188,33 @@ class GenericFormComponent {
163
188
  */
164
189
  updateFields(fields) {
165
190
  fields.forEach((field) => {
166
- const index = this.formData.Fields.findIndex((item) => item.ApiName === field.FieldId);
191
+ const index = this._formData.Fields.findIndex((item) => item.ApiName === field.FieldId);
167
192
  if (index >= 0) {
168
193
  for (const [key, value] of Object.entries(field.Params)) {
169
- if (this._genericFormService.hasProperty(this.formData.Fields[index], key)) {
170
- const item = this.formData.Fields[index];
194
+ if (this._genericFormService.hasProperty(this._formData.Fields[index], key)) {
195
+ const item = this._formData.Fields[index];
171
196
  item[key] = value;
172
197
  }
173
198
  }
174
199
  }
175
200
  });
201
+ this._pepForm.ReloadForm();
202
+ this._pepForm.data = this._formData;
176
203
  }
177
204
  onValueChanged(event) {
178
205
  const field = {
179
- uid: event.id,
180
- apiName: event.key,
181
- value: event.value
206
+ UID: event.id,
207
+ ApiName: event.key,
208
+ Value: event.value
182
209
  };
183
210
  this.updateFieldValue(field);
184
211
  this.valueChange.emit(field);
185
212
  }
186
213
  onfieldClicked(event) {
187
214
  const field = {
188
- uid: event.id,
189
- apiName: event.key,
190
- value: event.value
215
+ UID: event.id,
216
+ ApiName: event.key,
217
+ Value: event.value
191
218
  };
192
219
  this.updateFieldValue(field);
193
220
  this.fieldClick.emit(field);
@@ -196,8 +223,8 @@ class GenericFormComponent {
196
223
  this.formValidationChange.emit(event);
197
224
  }
198
225
  }
199
- GenericFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GenericFormComponent, deps: [{ token: i1.PepLayoutService }, { token: PepGenericFormService }], target: i0.ɵɵFactoryTarget.Component });
200
- GenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: GenericFormComponent, selector: "pep-generic-form", inputs: { dataSource: "dataSource", dataView: "dataView", isLocked: "isLocked", inline: "inline", showTopBar: "showTopBar", addPadding: "addPadding" }, outputs: { valueChange: "valueChange", fieldClick: "fieldClick", formValidationChange: "formValidationChange" }, providers: [PepGenericFormService], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container form-view\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container form-view\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <pep-form [layoutType]=\"'form'\" [layout]=\"uiControl\" [data]=\"formData\" [isInternal]=\"false\" [lockFields]=\"isLocked\"\n (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onfieldClicked($event)\"\n (formValidationChange)=\"onFormValidationChanged($event)\">\n </pep-form>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"], components: [{ type: i3.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { type: i4.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { type: i5.PepFormComponent, selector: "pep-form", inputs: ["isInternal", "isReport", "lockEvents", "canEditObject", "isActive", "layoutType", "objectId", "parentId", "searchCode", "showTitle", "firstFieldAsLink", "checkForChanges", "data", "lockFields", "layout"], outputs: ["valueChange", "formValidationChange", "fieldClick", "internalFormFieldClick", "internalFormFieldChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
226
+ GenericFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GenericFormComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.PepLayoutService }, { token: PepGenericFormService }], target: i0.ɵɵFactoryTarget.Component });
227
+ GenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: GenericFormComponent, selector: "pep-generic-form", inputs: { dataSource: "dataSource", dataView: "dataView", isLocked: "isLocked", inline: "inline", showTopBar: "showTopBar", addPadding: "addPadding" }, outputs: { valueChange: "valueChange", fieldClick: "fieldClick", formValidationChange: "formValidationChange" }, providers: [PepGenericFormService], viewQueries: [{ propertyName: "pepListContainer", first: true, predicate: ["pepFormContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}\n"], components: [{ type: i3.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { type: i4.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
201
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GenericFormComponent, decorators: [{
202
229
  type: Component,
203
230
  args: [{
@@ -206,7 +233,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
206
233
  styleUrls: ['./generic-form.component.scss'],
207
234
  providers: [PepGenericFormService]
208
235
  }]
209
- }], ctorParameters: function () { return [{ type: i1.PepLayoutService }, { type: PepGenericFormService }]; }, propDecorators: { dataSource: [{
236
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.PepLayoutService }, { type: PepGenericFormService }]; }, propDecorators: { pepListContainer: [{
237
+ type: ViewChild,
238
+ args: ['pepFormContainer', { read: ViewContainerRef }]
239
+ }], dataSource: [{
210
240
  type: Input
211
241
  }], dataView: [{
212
242
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-form.js","sources":["../../../projects/ngx-composite-lib/generic-form/generic-form.service.ts","../../../projects/ngx-composite-lib/generic-form/generic-form.component.ts","../../../projects/ngx-composite-lib/generic-form/generic-form.component.html","../../../projects/ngx-composite-lib/generic-form/generic-form.module.ts","../../../projects/ngx-composite-lib/generic-form/public-api.ts","../../../projects/ngx-composite-lib/generic-form/pepperi-addons-ngx-composite-lib-generic-form.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ObjectsDataRowCell } from '@pepperi-addons/ngx-lib';\n\n\n@Injectable()\nexport class PepGenericFormService { \n\n constructor() {\n // \n }\n \n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n createFormField(controlField: any, value: any, optionalValues: any[]) {\n const field = new ObjectsDataRowCell();\n \n field.ApiName = controlField.ApiName;\n field.Value = value;\n field.FieldType = controlField.FieldType;\n field.Enabled = !controlField.ReadOnly;\n field.Visible = !controlField.Hidden;\n /* field.Accessory = \"\";\n field.AdditionalValue = \"\";\n field.BackgroundColor = \"\";\n field.FormattedValue = \"\";*/\n field.GroupFields = [];\n field.Highlighted = false;\n // field.NotificationInfo = \"\";\n field.OptionalValues = optionalValues;\n /* field.ReferenceObjectInternalType = \"\";\n field.ReferenceObjectSubType = \"\";\n field.ReferenceObjectType = '0';\n field.TextColor = \"\";\n field.UiPageKey = \"\";*/\n\n return field;\n }\n\n convertToUiControlField(field: any): any {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n Mandatory: field.MandatoryField,\n Hidden: field.Hidden,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n MaxFieldCharacters: field.MaxCharacters,\n MinValue: field.MinValue,\n MaxValue: field.MaxValue,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport {\n IPepGenericFormDataView,\n IPepGenericFormValueChange,\n IPepGenericFormFieldUpdate,\n IPepGenericFormDataSource\n} from './generic-form.model';\nimport {\n UIControl,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepGuid\n} from '@pepperi-addons/ngx-lib';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport { PepGenericFormService } from './generic-form.service';\n\n\n@Component({\n selector: 'pep-generic-form',\n templateUrl: './generic-form.component.html',\n styleUrls: ['./generic-form.component.scss'],\n providers: [PepGenericFormService]\n})\nexport class GenericFormComponent implements OnInit {\n private _data: any;\n @Input()\n set dataSource(val: any) {\n this._data = val;\n this.createFormFields(); \n }\n\n private _optionalValues: any[] = [];\n formData: ObjectsDataRow;\n uiControl: UIControl;\n @Input()\n set dataView(val: IPepGenericFormDataView) {\n if (val) { \n this.formData.IsEditable = !this.isLocked;\n this.formData.UID = val.UID || PepGuid.newGuid();\n const uiControlData = DataViewConverter.toUIControlData(val);\n if (uiControlData) {\n if (uiControlData?.ControlFields) {\n val.Fields?.forEach((field: any) => {\n if (field.OptionalValues?.length) {\n this._optionalValues.push({\n fieldId: field.FieldID,\n optionalValues: field.OptionalValues\n });\n }\n });\n this.uiControl.ControlFields = uiControlData.ControlFields.map((field: any) => this._genericFormService.convertToUiControlField(field));\n \n }\n this.uiControl.Columns = uiControlData.Columns;\n this.createFormFields();\n }\n } \n }\n\n @Input()\n isLocked = false; \n\n @Input()\n inline = false;\n\n @Input()\n showTopBar = false;\n\n @Input()\n addPadding = false;\n\n @Output()\n valueChange: EventEmitter<IPepGenericFormValueChange> = new EventEmitter<IPepGenericFormValueChange>();\n\n @Output()\n fieldClick: EventEmitter<IPepGenericFormValueChange> = new EventEmitter<IPepGenericFormValueChange>();\n\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>(); \n\n constructor(\n private layoutService: PepLayoutService,\n public _genericFormService: PepGenericFormService\n ) {\n this.layoutService.onResize$.pipe().subscribe((size) => {\n // \n });\n this.formData = new ObjectsDataRow(); \n this.uiControl = new UIControl();\n }\n\n ngOnInit() {\n //\n }\n\n private createFormFields() {\n if (this._data && this.uiControl?.ControlFields?.length) {\n this.formData.Fields = [];\n this.uiControl.ControlFields.forEach((item) => {\n let value = '';\n if (this._genericFormService.hasProperty(this._data, item.ApiName)) {\n value = this._data[item.ApiName];\n }\n this.formData.Fields.push(this._genericFormService.createFormField(item, value, this.getOptionalValues(item.ApiName)) as ObjectsDataRowCell);\n });\n }\n } \n\n /**\n * updates form field's value\n * @param field object containing the data of the required update\n */\n private updateFieldValue(fieldChanged: IPepGenericFormValueChange) {\n this._data[fieldChanged.apiName] = fieldChanged.value;\n }\n\n private getOptionalValues(fieldId: string) {\n const item = this._optionalValues.find((item: any) => item.fieldId === fieldId);\n return item?.optionalValues || [];\n }\n\n getData() {\n return {\n UID: this.formData.UID,\n Values: this._data\n };\n } \n\n /**\n * updates form field(s) params\n * @param fields\n */\n updateFields(fields: Array<IPepGenericFormFieldUpdate>) {\n fields.forEach((field) => {\n const index = this.formData.Fields.findIndex((item) => item.ApiName === field.FieldId);\n if (index >= 0) {\n for (const [key, value] of Object.entries(field.Params)) {\n if (this._genericFormService.hasProperty(this.formData.Fields[index], key)) {\n const item = this.formData.Fields[index] as { [k: string]: any };\n item[key] = value;\n }\n }\n }\n });\n }\n\n onValueChanged(event: any) {\n const field: IPepGenericFormValueChange = {\n uid: event.id,\n apiName: event.key,\n value: event.value\n };\n this.updateFieldValue(field);\n this.valueChange.emit(field);\n }\n\n onfieldClicked(event: any) {\n const field: IPepGenericFormValueChange = {\n uid: event.id,\n apiName: event.key,\n value: event.value\n };\n this.updateFieldValue(field);\n this.fieldClick.emit(field);\n }\n\n onFormValidationChanged(event: any) {\n this.formValidationChange.emit(event);\n }\n\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container form-view\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container form-view\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <pep-form [layoutType]=\"'form'\" [layout]=\"uiControl\" [data]=\"formData\" [isInternal]=\"false\" [lockFields]=\"isLocked\"\n (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onfieldClicked($event)\"\n (formValidationChange)=\"onFormValidationChanged($event)\">\n </pep-form>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n//import { MatFormFieldModule } from '@angular/material/form-field';\n//import { MaterialModule } from '@pepperi-addons/ngx-lib/';\n//import { ReactiveFormsModule } from '@angular/forms';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\n//import { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n//import { PepDateModule } from '@pepperi-addons/ngx-lib/date';\n\nimport { PepGenericFormService } from './generic-form.service';\n\nimport { GenericFormComponent } from './generic-form.component';\n\n@NgModule({\n declarations: [\n GenericFormComponent\n ],\n imports: [\n CommonModule, \n\n // MatFormFieldModule,\n // ReactiveFormsModule,\n\n PepNgxLibModule,\n // PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n // PepTextboxModule,\n // PepDateModule\n // PepSearchModule,\n // PepBreadCrumbsModule\n ],\n exports: [\n GenericFormComponent\n ],\n providers: [\n PepGenericFormService\n ]\n})\nexport class PepGenericFormModule { }\n","/*\n* Public API Surface of ngx-composite-lib/generic-form\n*/\nexport * from './generic-form.module';\nexport * from './generic-form.component';\nexport * from './generic-form.model';\nexport * from './generic-form.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-composite-lib-generic-form.js","sources":["../../../projects/ngx-composite-lib/generic-form/generic-form.service.ts","../../../projects/ngx-composite-lib/generic-form/generic-form.component.ts","../../../projects/ngx-composite-lib/generic-form/generic-form.component.html","../../../projects/ngx-composite-lib/generic-form/generic-form.module.ts","../../../projects/ngx-composite-lib/generic-form/public-api.ts","../../../projects/ngx-composite-lib/generic-form/pepperi-addons-ngx-composite-lib-generic-form.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ObjectsDataRowCell } from '@pepperi-addons/ngx-lib';\n\n\n@Injectable()\nexport class PepGenericFormService { \n\n constructor() {\n // \n }\n \n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n hasProperty(obj: any, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n createFormField(controlField: any, value: any, optionalValues: any[]) {\n const field = new ObjectsDataRowCell();\n \n field.ApiName = controlField.ApiName;\n field.Value = value;\n field.FieldType = controlField.FieldType;\n field.Enabled = !controlField.ReadOnly;\n field.Visible = !controlField.Hidden;\n /* field.Accessory = \"\";\n field.AdditionalValue = \"\";\n field.BackgroundColor = \"\";\n field.FormattedValue = \"\";*/\n field.GroupFields = [];\n field.Highlighted = false;\n // field.NotificationInfo = \"\";\n field.OptionalValues = optionalValues;\n /* field.ReferenceObjectInternalType = \"\";\n field.ReferenceObjectSubType = \"\";\n field.ReferenceObjectType = '0';\n field.TextColor = \"\";\n field.UiPageKey = \"\";*/\n\n return field;\n }\n\n convertToUiControlField(field: any): any {\n return {\n ApiName: field.ApiName,\n FieldType: field.FieldType,\n Title: field.Title,\n ReadOnly: field.ReadOnlyField,\n Mandatory: field.MandatoryField,\n Hidden: field.Hidden,\n ColumnWidth: field.ColumnWidth,\n ColumnWidthType: 1,\n MaxFieldCharacters: field.MaxCharacters,\n MinValue: field.MinValue,\n MaxValue: field.MaxValue,\n Layout: {\n X: field.Layout.X,\n Y: field.Layout.Y,\n Width: field.Layout.Width,\n Height: field.Layout.Field_Height,\n XAlignment: field.Layout.xAlignment,\n YAlignment: field.Layout.yAlignment,\n }\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n EventEmitter,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { PepFormComponent } from '@pepperi-addons/ngx-lib/form';\nimport {\n IPepGenericFormDataView,\n IPepGenericFormValueChange,\n IPepGenericFormFieldUpdate,\n IPepGenericFormData\n} from './generic-form.model';\nimport {\n UIControl,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepGuid,\n PepLayoutService\n} from '@pepperi-addons/ngx-lib';\nimport { DataViewConverter } from '@pepperi-addons/data-views';\nimport { PepGenericFormService } from './generic-form.service';\nimport { } from './'\n\n\n@Component({\n selector: 'pep-generic-form',\n templateUrl: './generic-form.component.html',\n styleUrls: ['./generic-form.component.scss'],\n providers: [PepGenericFormService]\n})\nexport class GenericFormComponent implements OnInit {\n private _pepFormContainer: ViewContainerRef | undefined;\n @ViewChild('pepFormContainer', { read: ViewContainerRef })\n set pepListContainer(val: ViewContainerRef) {\n this._pepFormContainer = val;\n }\n\n private _data: any;\n @Input()\n set dataSource(val: any) {\n this._data = val;\n }\n \n private _optionalValues: any[] = [];\n private _formData: ObjectsDataRow;\n private _uiControl: UIControl;\n @Input()\n set dataView(val: IPepGenericFormDataView) {\n this.initForm(val);\n }\n\n @Input()\n isLocked = false;\n\n @Input()\n inline = false;\n\n @Input()\n showTopBar = false;\n\n @Input()\n addPadding = false;\n\n @Output()\n valueChange: EventEmitter<IPepGenericFormValueChange> = new EventEmitter<IPepGenericFormValueChange>();\n\n @Output()\n fieldClick: EventEmitter<IPepGenericFormValueChange> = new EventEmitter<IPepGenericFormValueChange>();\n\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _pepForm: any;\n\n constructor(\n private _resolver: ComponentFactoryResolver,\n private layoutService: PepLayoutService,\n public _genericFormService: PepGenericFormService\n ) {\n this.layoutService.onResize$.pipe().subscribe((size) => {\n // \n });\n this._formData = new ObjectsDataRow();\n this._uiControl = new UIControl();\n }\n\n ngOnInit() {\n //\n }\n\n private initForm(dataView: IPepGenericFormDataView) {\n setTimeout(() => {\n if (this._pepFormContainer) {\n if (this._pepFormContainer.length) {\n this._pepFormContainer.remove();\n this._formData = new ObjectsDataRow();\n this._uiControl = new UIControl();\n }\n\n const factory = this._resolver.resolveComponentFactory(PepFormComponent);\n const componentRef = this._pepFormContainer.createComponent(factory);\n this._pepForm = componentRef.instance;\n\n this._formData.IsEditable = !this.isLocked;\n this._formData.UID = dataView.UID || PepGuid.newGuid();\n const uiControlData = DataViewConverter.toUIControlData(dataView);\n if (uiControlData) {\n if (uiControlData?.ControlFields) {\n dataView.Fields?.forEach((field: any) => {\n if (field.OptionalValues?.length) {\n this._optionalValues.push({\n fieldId: field.FieldID,\n optionalValues: field.OptionalValues\n });\n }\n });\n this._uiControl.ControlFields = uiControlData.ControlFields.map((field: any) => this._genericFormService.convertToUiControlField(field));\n\n }\n this._uiControl.Columns = uiControlData.Columns;\n\n if (this._uiControl.ControlFields?.length) {\n this._formData.Fields = [];\n this._uiControl.ControlFields.forEach((item) => {\n let value = '';\n if (this._genericFormService.hasProperty(this._data, item.ApiName)) {\n value = this._data[item.ApiName];\n }\n this._formData.Fields.push(this._genericFormService.createFormField(item, value, this.getOptionalValues(item.ApiName)) as ObjectsDataRowCell);\n });\n\n componentRef.instance.layoutType = 'form';\n componentRef.instance.layout = this._uiControl;\n componentRef.instance.data = this._formData;\n componentRef.instance.isInternal = false;\n componentRef.instance.lockFields = this.isLocked;\n componentRef.instance.valueChange.subscribe(($event) => {\n this.onValueChanged($event);\n });\n componentRef.instance.fieldClick.subscribe(($event) => {\n this.onfieldClicked($event);\n });\n componentRef.instance.formValidationChange.subscribe(($event) => {\n this.onFormValidationChanged($event);\n });\n }\n }\n\n }\n\n }, 0);\n }\n\n /**\n * updates form field's value\n * @param field object containing the data of the required update\n */\n private updateFieldValue(fieldChanged: IPepGenericFormValueChange) {\n this._data[fieldChanged.ApiName] = fieldChanged.Value;\n }\n\n private getOptionalValues(fieldId: string) {\n const item = this._optionalValues.find((item: any) => item.fieldId === fieldId);\n return item?.optionalValues || [];\n }\n\n getData(): IPepGenericFormData {\n return {\n UID: this._formData.UID,\n Values: this._data\n };\n }\n\n /**\n * updates form field(s) params\n * @param fields\n */\n updateFields(fields: IPepGenericFormFieldUpdate[]) {\n fields.forEach((field) => {\n const index = this._formData.Fields.findIndex((item) => item.ApiName === field.FieldId);\n if (index >= 0) {\n for (const [key, value] of Object.entries(field.Params)) {\n if (this._genericFormService.hasProperty(this._formData.Fields[index], key)) {\n const item = this._formData.Fields[index] as { [k: string]: any };\n item[key] = value;\n }\n }\n }\n });\n this._pepForm.ReloadForm()\n this._pepForm.data = this._formData;\n }\n\n onValueChanged(event: any) {\n const field: IPepGenericFormValueChange = {\n UID: event.id,\n ApiName: event.key,\n Value: event.value\n };\n this.updateFieldValue(field);\n this.valueChange.emit(field);\n }\n\n onfieldClicked(event: any) {\n const field: IPepGenericFormValueChange = {\n UID: event.id,\n ApiName: event.key,\n Value: event.value\n };\n this.updateFieldValue(field);\n this.fieldClick.emit(field);\n }\n\n onFormValidationChanged(event: any) {\n this.formValidationChange.emit(event);\n }\n\n\n}\n","<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n</div>\n\n<pep-page-layout *ngIf=\"!inline\" [addPadding]=\"addPadding\">\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <div pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"formTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [inline]=\"inline\"> \n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n\n <!-- <div footer-start-content>\n <ng-content select=\"[bottom-left-buttons]\"></ng-content>\n </div>\n <div footer-end-content>\n <ng-content select=\"[bottom-right-buttons]\"></ng-content>\n </div> -->\n </pep-top-bar>\n</ng-template>\n\n<ng-template #formTemplate>\n <div class=\"form-view\">\n <ng-container #pepFormContainer></ng-container>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n//import { MatFormFieldModule } from '@angular/material/form-field';\n//import { MaterialModule } from '@pepperi-addons/ngx-lib/';\n//import { ReactiveFormsModule } from '@angular/forms';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\n//import { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n//import { PepDateModule } from '@pepperi-addons/ngx-lib/date';\n\nimport { PepGenericFormService } from './generic-form.service';\n\nimport { GenericFormComponent } from './generic-form.component';\n\n@NgModule({\n declarations: [\n GenericFormComponent\n ],\n imports: [\n CommonModule, \n\n // MatFormFieldModule,\n // ReactiveFormsModule,\n\n PepNgxLibModule,\n // PepListModule,\n PepFormModule,\n PepMenuModule,\n PepPageLayoutModule,\n PepTopBarModule,\n // PepTextboxModule,\n // PepDateModule\n // PepSearchModule,\n // PepBreadCrumbsModule\n ],\n exports: [\n GenericFormComponent\n ],\n providers: [\n PepGenericFormService\n ]\n})\nexport class PepGenericFormModule { }\n","/*\n* Public API Surface of ngx-composite-lib/generic-form\n*/\nexport * from './generic-form.module';\nexport * from './generic-form.component';\nexport * from './generic-form.model';\nexport * from './generic-form.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}