@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.
- package/bundles/stemy-ngx-dynamic-form.umd.js +81 -94
- package/bundles/stemy-ngx-dynamic-form.umd.js.map +1 -1
- package/bundles/stemy-ngx-dynamic-form.umd.min.js +1 -1
- package/bundles/stemy-ngx-dynamic-form.umd.min.js.map +1 -1
- package/esm2015/ngx-dynamic-form/common-types.js +26 -63
- package/esm2015/ngx-dynamic-form/services/dynamic-form.service.js +37 -25
- package/esm2015/ngx-dynamic-form/utils/form-select-subject.js +3 -1
- package/esm2015/public_api.js +2 -2
- package/fesm2015/stemy-ngx-dynamic-form.js +65 -87
- package/fesm2015/stemy-ngx-dynamic-form.js.map +1 -1
- package/ngx-dynamic-form/common-types.d.ts +25 -96
- package/ngx-dynamic-form/services/dynamic-form.service.d.ts +14 -12
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
- package/stemy-ngx-dynamic-form.metadata.json +1 -1
|
@@ -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,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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,
|
|
70
|
+
function createFormInput(id, config, type) {
|
|
94
71
|
if (type === void 0) { type = "text"; }
|
|
95
|
-
var control = createFormControl(id, "input",
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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.
|
|
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,
|
|
114
|
-
|
|
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, "
|
|
121
|
-
data = control.
|
|
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.
|
|
128
|
-
data.accept = data.accept || "
|
|
129
|
-
data.
|
|
130
|
-
data.
|
|
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
|
-
|
|
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
|
|
802
|
+
DynamicFormService.prototype.getFormModelForSchemaDef = function (schema, customizeModels) {
|
|
803
|
+
var e_1, _c;
|
|
829
804
|
if (!schema)
|
|
830
805
|
return [];
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
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.
|
|
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
|
|
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
|
|
834
|
+
return customizeModels(property, schema, core.DynamicInputModel, this.getFormInputConfig(property, schema));
|
|
847
835
|
case "textarea":
|
|
848
|
-
return
|
|
836
|
+
return customizeModels(property, schema, core.DynamicTextAreaModel, this.getFormTextareaConfig(property, schema));
|
|
849
837
|
case "boolean":
|
|
850
|
-
return
|
|
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
|
|
841
|
+
return customizeModels(property, schema, DynamicFormArrayModel, this.getFormArrayConfig(property, schema, customizeModels));
|
|
854
842
|
}
|
|
855
843
|
else {
|
|
856
|
-
return
|
|
844
|
+
return customizeModels(property, schema, core.DynamicInputModel, this.getFormInputConfig(property, schema));
|
|
857
845
|
}
|
|
858
846
|
case "file":
|
|
859
|
-
return
|
|
847
|
+
return customizeModels(property, schema, core.DynamicFileUploadModel, this.getFormUploadConfig(property, schema));
|
|
860
848
|
}
|
|
861
849
|
if (property.$ref) {
|
|
862
|
-
return
|
|
850
|
+
return customizeModels(property, schema, core.DynamicFormGroupModel, this.getFormGroupConfig(property, schema, customizeModels));
|
|
863
851
|
}
|
|
864
|
-
return
|
|
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,
|
|
946
|
-
var
|
|
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
|
-
|
|
971
|
-
|
|
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 (
|
|
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
|
|
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
|
|
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;
|