rb-document-form-constructor 0.3.0 → 0.3.4
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/dist/rb-document-form-constructor.esm.js +109 -22
- package/dist/rb-document-form-constructor.min.js +2 -2
- package/dist/rb-document-form-constructor.ssr.js +109 -31
- package/package.json +1 -1
- package/src/components/DocForm.vue +42 -1
- package/src/components/DocTemplateFieldSidebar.vue +13 -2
- package/src/components/FieldRuleFormModal.vue +3 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import Vue from 'vue';
|
|
1
2
|
import crypto from 'crypto';
|
|
2
3
|
|
|
3
4
|
const UtFormConfig = {
|
|
@@ -79,6 +80,20 @@ const UtFormConfig = {
|
|
|
79
80
|
}
|
|
80
81
|
});
|
|
81
82
|
return fields;
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
parseFacets(formConfig) {
|
|
86
|
+
let facets = [];
|
|
87
|
+
formConfig.sections.every(section => {
|
|
88
|
+
section.columns.every(c => {
|
|
89
|
+
c.fields.forEach(f => {
|
|
90
|
+
if (!facets.indexOf(f.facet)) {
|
|
91
|
+
facets.push(f.facet);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
return facets;
|
|
82
97
|
}
|
|
83
98
|
|
|
84
99
|
};
|
|
@@ -4841,6 +4856,12 @@ let __applyRefProps = function (input, refConfig) {
|
|
|
4841
4856
|
}
|
|
4842
4857
|
};
|
|
4843
4858
|
|
|
4859
|
+
let __filterInputsByMultiple = function (inputs, multiple) {
|
|
4860
|
+
return inputs.filter(i => {
|
|
4861
|
+
return i.multiple && multiple || !i.multiple && !multiple;
|
|
4862
|
+
});
|
|
4863
|
+
};
|
|
4864
|
+
|
|
4844
4865
|
let fcInputs = {
|
|
4845
4866
|
string: {
|
|
4846
4867
|
text: 'Текст',
|
|
@@ -5006,26 +5027,40 @@ const UtFormConstructor = {
|
|
|
5006
5027
|
},
|
|
5007
5028
|
|
|
5008
5029
|
getInputTypes(field) {
|
|
5030
|
+
let inputs = [];
|
|
5031
|
+
|
|
5009
5032
|
if (!field) {
|
|
5010
|
-
return
|
|
5033
|
+
return inputs;
|
|
5011
5034
|
}
|
|
5012
5035
|
|
|
5013
5036
|
if (field.dict && !this.config.refInputs[field.ref]) {
|
|
5014
|
-
|
|
5037
|
+
inputs = __filterInputsByMultiple(this.config.dictInputs, field.multiple);
|
|
5038
|
+
} else if (field.ref) {
|
|
5039
|
+
inputs = __filterInputsByMultiple(this.config.refInputs[field.ref], field.multiple);
|
|
5040
|
+
} else {
|
|
5041
|
+
inputs = __filterInputsByMultiple(this.config.primitiveInputs[field.type], field.multiple);
|
|
5015
5042
|
}
|
|
5016
5043
|
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
}
|
|
5044
|
+
return inputs;
|
|
5045
|
+
},
|
|
5020
5046
|
|
|
5021
|
-
|
|
5047
|
+
hasMultipleInputTypes(field) {
|
|
5048
|
+
let inputs = this.getInputTypes({ ...field,
|
|
5049
|
+
multiple: true
|
|
5050
|
+
});
|
|
5051
|
+
return inputs && inputs.length > 0;
|
|
5022
5052
|
},
|
|
5023
5053
|
|
|
5024
5054
|
getDefaultInput(field) {
|
|
5025
5055
|
let input = null;
|
|
5056
|
+
let inputs = this.getInputTypes(field);
|
|
5057
|
+
|
|
5058
|
+
if (!inputs) {
|
|
5059
|
+
input = this.primitiveInputs[0];
|
|
5060
|
+
}
|
|
5026
5061
|
|
|
5027
5062
|
if (field.ref && this.config.refInputs[field.ref]) {
|
|
5028
|
-
input = __clone(
|
|
5063
|
+
input = __clone(inputs[0]);
|
|
5029
5064
|
|
|
5030
5065
|
__applyDefaultProps(input);
|
|
5031
5066
|
|
|
@@ -5033,12 +5068,12 @@ const UtFormConstructor = {
|
|
|
5033
5068
|
__applyRefProps(input, this.config.refInputConfigs[field.ref][input.name]);
|
|
5034
5069
|
}
|
|
5035
5070
|
} else if (field.dict) {
|
|
5036
|
-
input = __clone(
|
|
5071
|
+
input = __clone(inputs[0]);
|
|
5037
5072
|
input.props.dict.default = field.ref;
|
|
5038
5073
|
|
|
5039
5074
|
__applyDefaultProps(input);
|
|
5040
5075
|
} else {
|
|
5041
|
-
input = __clone(
|
|
5076
|
+
input = __clone(inputs[0]);
|
|
5042
5077
|
|
|
5043
5078
|
__applyDefaultProps(input);
|
|
5044
5079
|
}
|
|
@@ -5080,17 +5115,12 @@ const UtFormConstructor = {
|
|
|
5080
5115
|
runRule(context, script) {
|
|
5081
5116
|
context = context ? context : {};
|
|
5082
5117
|
context['console'] = console;
|
|
5083
|
-
let appendScript = '';
|
|
5084
|
-
/*for(let v in context) {
|
|
5085
|
-
appendScript = appendScript + `var ${v} = this.${v};\n`;
|
|
5086
|
-
}
|
|
5087
|
-
appendScript = appendScript? appendScript + '\n': '';*/
|
|
5088
5118
|
|
|
5089
5119
|
let func = function (script) {
|
|
5090
5120
|
return notevil(script, context);
|
|
5091
5121
|
};
|
|
5092
5122
|
|
|
5093
|
-
func.call(context,
|
|
5123
|
+
func.call(context, script);
|
|
5094
5124
|
}
|
|
5095
5125
|
|
|
5096
5126
|
};
|
|
@@ -10972,13 +11002,24 @@ var script$3 = {
|
|
|
10972
11002
|
type: Object,
|
|
10973
11003
|
default: () => ({})
|
|
10974
11004
|
},
|
|
10975
|
-
|
|
10976
|
-
type:
|
|
10977
|
-
default:
|
|
11005
|
+
refDataSuffix: {
|
|
11006
|
+
type: String,
|
|
11007
|
+
default: 'Data'
|
|
10978
11008
|
}
|
|
10979
11009
|
},
|
|
11010
|
+
|
|
11011
|
+
data() {
|
|
11012
|
+
return {
|
|
11013
|
+
validationState: {}
|
|
11014
|
+
};
|
|
11015
|
+
},
|
|
11016
|
+
|
|
10980
11017
|
methods: {
|
|
10981
11018
|
onEventFired(eventName, event, field) {
|
|
11019
|
+
if (eventName === 'input' && field.ref) {
|
|
11020
|
+
this.doc[field.name + this.refDataSuffix] = null;
|
|
11021
|
+
}
|
|
11022
|
+
|
|
10982
11023
|
if (field.rules) {
|
|
10983
11024
|
field.rules.forEach(rule => {
|
|
10984
11025
|
if (rule.event === eventName && rule.script) {
|
|
@@ -10991,6 +11032,34 @@ var script$3 = {
|
|
|
10991
11032
|
}
|
|
10992
11033
|
});
|
|
10993
11034
|
}
|
|
11035
|
+
},
|
|
11036
|
+
|
|
11037
|
+
validate() {
|
|
11038
|
+
this.formConfig.sections.forEach(s => {
|
|
11039
|
+
s.columns.forEach(c => {
|
|
11040
|
+
c.fields.forEach(f => {
|
|
11041
|
+
if (f.required && this.doc[f.name] == null) {
|
|
11042
|
+
Vue.set(this.validationState, f.name, false);
|
|
11043
|
+
Vue.set(this.validationState, `${f.name}__feedback`, `Поле ${f.labelRu} обязательно`);
|
|
11044
|
+
} else {
|
|
11045
|
+
Vue.set(this.validationState, f.name, null);
|
|
11046
|
+
}
|
|
11047
|
+
|
|
11048
|
+
this.onEventFired('validate', {
|
|
11049
|
+
validationState: this.validationState,
|
|
11050
|
+
doc: this.doc
|
|
11051
|
+
}, f);
|
|
11052
|
+
});
|
|
11053
|
+
});
|
|
11054
|
+
});
|
|
11055
|
+
|
|
11056
|
+
for (let fieldName in this.validationState) {
|
|
11057
|
+
if (this.validationState[fieldName] === false) {
|
|
11058
|
+
return false;
|
|
11059
|
+
}
|
|
11060
|
+
}
|
|
11061
|
+
|
|
11062
|
+
return true;
|
|
10994
11063
|
}
|
|
10995
11064
|
|
|
10996
11065
|
},
|
|
@@ -11071,7 +11140,7 @@ var __vue_render__$3 = function () {
|
|
|
11071
11140
|
},
|
|
11072
11141
|
expression: "doc[field.name]"
|
|
11073
11142
|
}
|
|
11074
|
-
}, 'component', field.input.propsData, false))], 1)], 1)], 1) : _vm._e()];
|
|
11143
|
+
}, 'component', field.input.propsData, false)), _vm._v(" "), !_vm.validationState[field.name] ? _c('b-form-invalid-feedback', [_vm._v("\n " + _vm._s(_vm.validationState[field.name + "__feedback"]) + "\n ")]) : _vm._e()], 1)], 1)], 1) : _vm._e()];
|
|
11075
11144
|
})], 2);
|
|
11076
11145
|
}), 0)]) : _vm._e();
|
|
11077
11146
|
}), 0);
|
|
@@ -11413,7 +11482,11 @@ var __vue_render__$2 = function () {
|
|
|
11413
11482
|
attrs: {
|
|
11414
11483
|
"value": 'click'
|
|
11415
11484
|
}
|
|
11416
|
-
}, [_vm._v("\n Клик\n ")])
|
|
11485
|
+
}, [_vm._v("\n Клик\n ")]), _vm._v(" "), _c('b-form-select-option', {
|
|
11486
|
+
attrs: {
|
|
11487
|
+
"value": 'validate'
|
|
11488
|
+
}
|
|
11489
|
+
}, [_vm._v("\n Валидация\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
|
|
11417
11490
|
attrs: {
|
|
11418
11491
|
"lg": "12"
|
|
11419
11492
|
}
|
|
@@ -11589,6 +11662,14 @@ var script$1 = {
|
|
|
11589
11662
|
|
|
11590
11663
|
rules() {
|
|
11591
11664
|
return UtFormConstructor.getAvailableFieldRules(this.field);
|
|
11665
|
+
},
|
|
11666
|
+
|
|
11667
|
+
hasMultipleInputTypes() {
|
|
11668
|
+
return UtFormConstructor.hasMultipleInputTypes(this.field);
|
|
11669
|
+
},
|
|
11670
|
+
|
|
11671
|
+
multiple() {
|
|
11672
|
+
return this.field && this.field.multiple;
|
|
11592
11673
|
}
|
|
11593
11674
|
|
|
11594
11675
|
},
|
|
@@ -11612,6 +11693,11 @@ var script$1 = {
|
|
|
11612
11693
|
|
|
11613
11694
|
currentInputName() {
|
|
11614
11695
|
this.field.input = UtFormConstructor.getInputTypeByName(this.currentInputName, this.field);
|
|
11696
|
+
},
|
|
11697
|
+
|
|
11698
|
+
multiple() {
|
|
11699
|
+
let input = UtFormConstructor.getDefaultInput(this.field);
|
|
11700
|
+
this.currentInputName = input.name;
|
|
11615
11701
|
}
|
|
11616
11702
|
|
|
11617
11703
|
},
|
|
@@ -11790,7 +11876,8 @@ var __vue_render__$1 = function () {
|
|
|
11790
11876
|
}
|
|
11791
11877
|
}, [_c('b-checkbox', {
|
|
11792
11878
|
attrs: {
|
|
11793
|
-
"size": "lg"
|
|
11879
|
+
"size": "lg",
|
|
11880
|
+
"disabled": !_vm.hasMultipleInputTypes
|
|
11794
11881
|
},
|
|
11795
11882
|
model: {
|
|
11796
11883
|
value: _vm.field.multiple,
|
|
@@ -11799,7 +11886,7 @@ var __vue_render__$1 = function () {
|
|
|
11799
11886
|
},
|
|
11800
11887
|
expression: "field.multiple"
|
|
11801
11888
|
}
|
|
11802
|
-
}, [_vm._v("
|
|
11889
|
+
}, [_vm._v("\n Множественное\n ")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
|
|
11803
11890
|
attrs: {
|
|
11804
11891
|
"lg": "12"
|
|
11805
11892
|
}
|