@stemy/ngx-dynamic-form 10.2.28 → 10.2.31

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.
@@ -5,11 +5,6 @@
5
5
  }(this, (function (exports, ngxUtils, rxjs, core$1, forms, core, operators, common) { 'use strict';
6
6
 
7
7
  // --- Decorator functions ---
8
- var emptyArray = [];
9
- var emptyTester = function () {
10
- return Promise.resolve(false);
11
- };
12
- var ɵ0 = emptyTester;
13
8
  function defaultSerializer(id, parent) {
14
9
  var control = parent.get(id);
15
10
  return !control ? null : control.value;
@@ -55,85 +50,54 @@
55
50
  defineFormControl(target, propertyKey, createFormFile(propertyKey, data));
56
51
  };
57
52
  }
58
- function FormFieldSet(data) {
59
- return function (target) {
60
- var sets = getFormFieldSets(target);
61
- data.classes = data.classes || "";
62
- sets[data.id] = data;
63
- ngxUtils.ReflectUtils.defineMetadata("dynamicFormFieldSets", sets, target);
64
- };
65
- }
66
53
  function defineFormControl(target, propertyKey, control) {
67
54
  ngxUtils.ReflectUtils.defineMetadata("dynamicFormControl", control, target, propertyKey);
68
55
  }
69
- function getFormFieldSets(target) {
70
- return ngxUtils.ReflectUtils.getMetadata("dynamicFormFieldSets", target) || {};
71
- }
72
56
  function getFormControl(target, propertyKey) {
73
57
  return ngxUtils.ReflectUtils.getMetadata("dynamicFormControl", target, propertyKey);
74
58
  }
75
59
  function getFormSerializer(target, propertyKey) {
76
60
  return ngxUtils.ReflectUtils.getMetadata("dynamicFormSerializer", target, propertyKey);
77
61
  }
78
- function createFormControl(id, type, data) {
79
- data = data || {};
80
- data.label = ngxUtils.ObjectUtils.isNullOrUndefined(data.label) ? id : data.label;
81
- data.labelAlign = data.labelAlign || "left";
82
- data.fieldSet = data.fieldSet || ngxUtils.UniqueUtils.uuid();
83
- data.classes = data.classes || "";
84
- data.readonly = data.readonly || emptyTester;
85
- data.hidden = data.hidden || emptyTester;
86
- data.validators = data.validators || emptyArray;
87
- return {
88
- id: id,
89
- type: type,
90
- data: data
91
- };
62
+ function createFormControl(id, type, config) {
63
+ config = config || { id: id };
64
+ config.id = id;
65
+ config.label = ngxUtils.ObjectUtils.isNullOrUndefined(config.label) ? id : config.label;
66
+ config.disabled = config.disabled || false;
67
+ config.hidden = config.hidden || false;
68
+ return { id: id, type: type, config: config };
92
69
  }
93
- function createFormInput(id, data, type) {
70
+ function createFormInput(id, config, type) {
94
71
  if (type === void 0) { type = "text"; }
95
- var control = createFormControl(id, "input", data);
96
- data = control.data;
97
- data.type = data.type || type;
98
- data.classes = !data.classes ? "form-group-" + data.type : data.classes + " form-group-" + data.type;
99
- data.placeholder = data.placeholder || (data.type == "mask" ? "_" : "");
100
- data.step = data.step || 1;
101
- data.mask = data.mask || [/\w*/gi];
72
+ var control = createFormControl(id, "input", config);
73
+ config = control.config;
74
+ config.inputType = config.inputType || type;
75
+ config.placeholder = config.placeholder || (config.inputType == "mask" ? "_" : "");
76
+ config.step = config.step || 1;
77
+ config.mask = config.mask || [/\w*/gi];
102
78
  return control;
103
79
  }
104
80
  function createFormSelect(id, data) {
105
81
  var control = createFormControl(id, "select", data);
106
- data = control.data;
82
+ data = control.config;
107
83
  data.options = data.options || [];
108
- data.type = data.type || "select";
109
- var classType = data.type == "select" ? "select" : "select-" + data.type;
110
- data.classes = !data.classes ? "form-group-" + classType : data.classes + " form-group-" + classType;
111
84
  return control;
112
85
  }
113
- function createFormStatic(id, data) {
114
- var control = createFormControl(id, "static", data);
115
- data = control.data;
116
- data.style = data.style || "table";
117
- return control;
86
+ function createFormStatic(id, config) {
87
+ return createFormControl(id, "static", config);
118
88
  }
119
89
  function createFormModel(id, data) {
120
- var control = createFormControl(id, "model", data);
121
- data = control.data;
90
+ var control = createFormControl(id, "group", data);
91
+ data = control.config;
122
92
  data.name = data.name || "";
123
93
  return control;
124
94
  }
125
95
  function createFormFile(id, data) {
126
96
  var control = createFormControl(id, "file", data);
127
- data = control.data;
128
- data.accept = data.accept || ".jpg,.jpeg,.png";
129
- data.multi = data.multi || false;
130
- data.baseUrl = ngxUtils.ObjectUtils.isString(data.baseUrl) ? data.baseUrl : "assets/";
131
- data.uploadUrl = ngxUtils.ObjectUtils.isString(data.uploadUrl) ? data.uploadUrl : "assets";
132
- data.createUploadData = data.createUploadData || (function (file) {
133
- var form = new FormData();
134
- form.append("file", file);
135
- return form;
136
- });
97
+ data = control.config;
98
+ data.accept = data.accept || ["jpg", "jpeg", "png"];
99
+ data.multiple = data.multiple || false;
100
+ data.url = ngxUtils.ObjectUtils.isString(data.url) ? data.url : "assets";
137
101
  return control;
138
102
  }
139
103
 
@@ -555,6 +519,8 @@
555
519
  val.then(function (options) {
556
520
  var _a, _b;
557
521
  _this.next(options);
522
+ if (options.length == 0)
523
+ return;
558
524
  var currentVal = control.value;
559
525
  if (controlModel.multiple) {
560
526
  var correctVal = (currentVal || []).filter(function (t) { return options.findIndex(function (o) { return o.value == t; }) >= 0; });
@@ -602,9 +568,10 @@
602
568
 
603
569
  var DynamicFormService = /** @class */ (function (_super) {
604
570
  __extends(DynamicFormService, _super);
605
- function DynamicFormService(cs, vs, openApi) {
571
+ function DynamicFormService(cs, vs, openApi, injector) {
606
572
  var _this = _super.call(this, cs, vs) || this;
607
573
  _this.openApi = openApi;
574
+ _this.injector = injector;
608
575
  _this.onDetectChanges = new core$1.EventEmitter();
609
576
  return _this;
610
577
  }
@@ -808,9 +775,10 @@
808
775
  }
809
776
  });
810
777
  };
811
- DynamicFormService.prototype.getFormModelForSchema = function (name) {
778
+ DynamicFormService.prototype.getFormModelForSchema = function (name, customizeModel) {
812
779
  return __awaiter(this, void 0, void 0, function () {
813
- var _c;
780
+ var _c, customizeModels;
781
+ var _this = this;
814
782
  return __generator(this, function (_d) {
815
783
  switch (_d.label) {
816
784
  case 0:
@@ -819,49 +787,69 @@
819
787
  return [4 /*yield*/, this.openApi.getSchemas()];
820
788
  case 1:
821
789
  _c.schemas = _d.sent();
822
- return [2 /*return*/, this.getFormModelForSchemaDef(this.schemas[name])];
790
+ customizeModels = function (property, schema, modelType, config) {
791
+ var model = new modelType(config);
792
+ if (!ngxUtils.ObjectUtils.isFunction(customizeModel))
793
+ return [model];
794
+ var res = customizeModel(property, schema, model, config, _this.injector);
795
+ return Array.isArray(res) ? res : [res];
796
+ };
797
+ return [2 /*return*/, this.getFormModelForSchemaDef(this.schemas[name], customizeModels)];
823
798
  }
824
799
  });
825
800
  });
826
801
  };
827
- DynamicFormService.prototype.getFormModelForSchemaDef = function (schema) {
828
- var _this = this;
802
+ DynamicFormService.prototype.getFormModelForSchemaDef = function (schema, customizeModels) {
803
+ var e_1, _c;
829
804
  if (!schema)
830
805
  return [];
831
- return Object.keys(schema.properties || {}).map(function (p) {
832
- var property = schema.properties[p];
833
- return _this.getFormControlModel(property, schema);
834
- }).filter(function (t) { return null !== t; });
806
+ var keys = Object.keys(schema.properties || {});
807
+ var controls = [];
808
+ try {
809
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
810
+ var p = keys_1_1.value;
811
+ var property = schema.properties[p];
812
+ controls.push.apply(controls, __spread(this.getFormControlModels(property, schema, customizeModels)));
813
+ }
814
+ }
815
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
816
+ finally {
817
+ try {
818
+ if (keys_1_1 && !keys_1_1.done && (_c = keys_1.return)) _c.call(keys_1);
819
+ }
820
+ finally { if (e_1) throw e_1.error; }
821
+ }
822
+ return controls.filter(function (t) { return null !== t; });
835
823
  };
836
- DynamicFormService.prototype.getFormControlModel = function (property, schema) {
824
+ DynamicFormService.prototype.getFormControlModels = function (property, schema, customizeModels) {
837
825
  var _a, _b;
838
826
  var $enum = ((_a = property.items) === null || _a === void 0 ? void 0 : _a.enum) || property.enum;
839
827
  if (Array.isArray($enum) || isStringWithVal(property.optionsPath) || isStringWithVal(property.endpoint)) {
840
- return new core.DynamicSelectModel(this.getFormSelectConfig(property, schema));
828
+ return customizeModels(property, schema, core.DynamicSelectModel, this.getFormSelectConfig(property, schema));
841
829
  }
842
830
  switch (property.type) {
843
831
  case "string":
844
832
  case "number":
845
833
  case "integer":
846
- return new core.DynamicInputModel(this.getFormInputConfig(property, schema));
834
+ return customizeModels(property, schema, core.DynamicInputModel, this.getFormInputConfig(property, schema));
847
835
  case "textarea":
848
- return new core.DynamicTextAreaModel(this.getFormTextareaConfig(property, schema));
836
+ return customizeModels(property, schema, core.DynamicTextAreaModel, this.getFormTextareaConfig(property, schema));
849
837
  case "boolean":
850
- return new core.DynamicCheckboxModel(this.getFormCheckboxConfig(property, schema));
838
+ return customizeModels(property, schema, core.DynamicCheckboxModel, this.getFormCheckboxConfig(property, schema));
851
839
  case "array":
852
840
  if (((_b = property.items) === null || _b === void 0 ? void 0 : _b.$ref) || property.$ref) {
853
- return new DynamicFormArrayModel(this.getFormArrayConfig(property, schema));
841
+ return customizeModels(property, schema, DynamicFormArrayModel, this.getFormArrayConfig(property, schema, customizeModels));
854
842
  }
855
843
  else {
856
- return new core.DynamicInputModel(this.getFormInputConfig(property, schema));
844
+ return customizeModels(property, schema, core.DynamicInputModel, this.getFormInputConfig(property, schema));
857
845
  }
858
846
  case "file":
859
- return new core.DynamicFileUploadModel(this.getFormUploadConfig(property, schema));
847
+ return customizeModels(property, schema, core.DynamicFileUploadModel, this.getFormUploadConfig(property, schema));
860
848
  }
861
849
  if (property.$ref) {
862
- return new core.DynamicFormGroupModel(this.getFormGroupConfig(property, schema));
850
+ return customizeModels(property, schema, core.DynamicFormGroupModel, this.getFormGroupConfig(property, schema, customizeModels));
863
851
  }
864
- return null;
852
+ return [];
865
853
  };
866
854
  DynamicFormService.prototype.getFormControlConfig = function (property, schema) {
867
855
  var validators = this.getValidators(property, schema);
@@ -879,17 +867,17 @@
879
867
  additional: Object.assign({}, property)
880
868
  };
881
869
  };
882
- DynamicFormService.prototype.getFormArrayConfig = function (property, schema) {
870
+ DynamicFormService.prototype.getFormArrayConfig = function (property, schema, customizeModels) {
883
871
  var _this = this;
884
872
  var _a;
885
873
  var ref = ((_a = property.items) === null || _a === void 0 ? void 0 : _a.$ref) || property.$ref || "";
886
874
  var subSchema = this.schemas[ref.split("/").pop()];
887
- return Object.assign(this.getFormControlConfig(property, schema), { groupFactory: function () { return _this.getFormModelForSchemaDef(subSchema); } });
875
+ return Object.assign(this.getFormControlConfig(property, schema), { groupFactory: function () { return _this.getFormModelForSchemaDef(subSchema, customizeModels); } });
888
876
  };
889
- DynamicFormService.prototype.getFormGroupConfig = function (property, schema) {
877
+ DynamicFormService.prototype.getFormGroupConfig = function (property, schema, customizeModels) {
890
878
  var ref = property.$ref || "";
891
879
  var subSchema = this.schemas[ref.split("/").pop()];
892
- return Object.assign(this.getFormControlConfig(property, schema), { group: this.getFormModelForSchemaDef(subSchema) });
880
+ return Object.assign(this.getFormControlConfig(property, schema), { group: this.getFormModelForSchemaDef(subSchema, customizeModels) });
893
881
  };
894
882
  DynamicFormService.prototype.getFormInputConfig = function (property, schema) {
895
883
  var _a;
@@ -942,8 +930,8 @@
942
930
  };
943
931
  DynamicFormService.prototype.translateOptions = function (options) {
944
932
  return __awaiter(this, void 0, void 0, function () {
945
- var options_1, options_1_1, option, _c, e_1_1;
946
- var e_1, _d;
933
+ var options_1, options_1_1, option, _c, e_2_1;
934
+ var e_2, _d;
947
935
  return __generator(this, function (_e) {
948
936
  switch (_e.label) {
949
937
  case 0:
@@ -967,14 +955,14 @@
967
955
  return [3 /*break*/, 2];
968
956
  case 5: return [3 /*break*/, 8];
969
957
  case 6:
970
- e_1_1 = _e.sent();
971
- e_1 = { error: e_1_1 };
958
+ e_2_1 = _e.sent();
959
+ e_2 = { error: e_2_1 };
972
960
  return [3 /*break*/, 8];
973
961
  case 7:
974
962
  try {
975
963
  if (options_1_1 && !options_1_1.done && (_d = options_1.return)) _d.call(options_1);
976
964
  }
977
- finally { if (e_1) throw e_1.error; }
965
+ finally { if (e_2) throw e_2.error; }
978
966
  return [7 /*endfinally*/];
979
967
  case 8: return [2 /*return*/, options];
980
968
  }
@@ -988,7 +976,7 @@
988
976
  if (Array.isArray($enum)) {
989
977
  return new FormSelectSubject(function () {
990
978
  var options = $enum.map(function (value) {
991
- var label = property.translatable ? property.id + "." + value : value;
979
+ var label = property.translatable ? property.id + "." + value : "" + value;
992
980
  return { value: value, label: label };
993
981
  });
994
982
  return _this.translateOptions(options);
@@ -1100,7 +1088,8 @@
1100
1088
  DynamicFormService.ctorParameters = function () { return [
1101
1089
  { type: core.DynamicFormComponentService },
1102
1090
  { type: core.DynamicFormValidationService },
1103
- { type: ngxUtils.OpenApiService }
1091
+ { type: ngxUtils.OpenApiService, decorators: [{ type: core$1.Inject, args: [ngxUtils.OpenApiService,] }] },
1092
+ { type: core$1.Injector, decorators: [{ type: core$1.Inject, args: [core$1.Injector,] }] }
1104
1093
  ]; };
1105
1094
 
1106
1095
  var AsyncSubmitDirective = /** @class */ (function () {
@@ -1598,7 +1587,7 @@
1598
1587
  ];
1599
1588
  // --- Pipes ---
1600
1589
  var pipes = [];
1601
- var ɵ0$1 = validateJSON, ɵ1 = validateRequiredTranslation, ɵ2 = validateItemsMinLength, ɵ3 = validateItemsMaxLength, ɵ4 = validateItemsMinValue, ɵ5 = validateItemsMaxValue, ɵ6 = new Map([
1590
+ var ɵ0 = validateJSON, ɵ1 = validateRequiredTranslation, ɵ2 = validateItemsMinLength, ɵ3 = validateItemsMaxLength, ɵ4 = validateItemsMinValue, ɵ5 = validateItemsMaxValue, ɵ6 = new Map([
1602
1591
  ["json", validateJSON],
1603
1592
  ["requiredTranslation", validateRequiredTranslation],
1604
1593
  ["phone", validatePhone],
@@ -1640,7 +1629,7 @@
1640
1629
  ]),
1641
1630
  entryComponents: components,
1642
1631
  providers: __spread(pipes, [
1643
- { provide: forms.NG_VALIDATORS, useValue: ɵ0$1, multi: true },
1632
+ { provide: forms.NG_VALIDATORS, useValue: ɵ0, multi: true },
1644
1633
  { provide: forms.NG_VALIDATORS, useValue: ɵ1, multi: true },
1645
1634
  { provide: forms.NG_VALIDATORS, useValue: ɵ2, multi: true },
1646
1635
  { provide: forms.NG_VALIDATORS, useValue: ɵ3, multi: true },
@@ -1664,7 +1653,6 @@
1664
1653
  exports.DynamicBaseFormControlContainerComponent = DynamicBaseFormControlContainerComponent;
1665
1654
  exports.DynamicBaseFormGroupComponent = DynamicBaseFormGroupComponent;
1666
1655
  exports.DynamicFormService = DynamicFormService;
1667
- exports.FormFieldSet = FormFieldSet;
1668
1656
  exports.FormFile = FormFile;
1669
1657
  exports.FormInput = FormInput;
1670
1658
  exports.FormModel = FormModel;
@@ -1682,7 +1670,6 @@
1682
1670
  exports.defaultSerializer = defaultSerializer;
1683
1671
  exports.defineFormControl = defineFormControl;
1684
1672
  exports.getFormControl = getFormControl;
1685
- exports.getFormFieldSets = getFormFieldSets;
1686
1673
  exports.getFormSerializer = getFormSerializer;
1687
1674
  exports.validateItemsMaxLength = validateItemsMaxLength;
1688
1675
  exports.validateItemsMaxValue = validateItemsMaxValue;