rb-document-form-constructor 0.3.2 → 0.3.3

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.
@@ -1,3 +1,4 @@
1
+ import Vue from 'vue';
1
2
  import crypto from 'crypto';
2
3
 
3
4
  const UtFormConfig = {
@@ -4855,6 +4856,12 @@ let __applyRefProps = function (input, refConfig) {
4855
4856
  }
4856
4857
  };
4857
4858
 
4859
+ let __filterInputsByMultiple = function (inputs, multiple) {
4860
+ return inputs.filter(i => {
4861
+ return i.multiple && multiple || !i.multiple && !multiple;
4862
+ });
4863
+ };
4864
+
4858
4865
  let fcInputs = {
4859
4866
  string: {
4860
4867
  text: 'Текст',
@@ -5020,26 +5027,40 @@ const UtFormConstructor = {
5020
5027
  },
5021
5028
 
5022
5029
  getInputTypes(field) {
5030
+ let inputs = [];
5031
+
5023
5032
  if (!field) {
5024
- return [];
5033
+ return inputs;
5025
5034
  }
5026
5035
 
5027
5036
  if (field.dict && !this.config.refInputs[field.ref]) {
5028
- return this.config.dictInputs;
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);
5029
5042
  }
5030
5043
 
5031
- if (field.ref) {
5032
- return this.config.refInputs[field.ref];
5033
- }
5044
+ return inputs;
5045
+ },
5034
5046
 
5035
- return this.config.primitiveInputs[field.type];
5047
+ hasMultipleInputTypes(field) {
5048
+ let inputs = this.getInputTypes({ ...field,
5049
+ multiple: true
5050
+ });
5051
+ return inputs && inputs.length > 0;
5036
5052
  },
5037
5053
 
5038
5054
  getDefaultInput(field) {
5039
5055
  let input = null;
5056
+ let inputs = this.getInputTypes(field);
5057
+
5058
+ if (!inputs) {
5059
+ input = this.primitiveInputs[0];
5060
+ }
5040
5061
 
5041
5062
  if (field.ref && this.config.refInputs[field.ref]) {
5042
- input = __clone(this.config.refInputs[field.ref][0]);
5063
+ input = __clone(inputs[0]);
5043
5064
 
5044
5065
  __applyDefaultProps(input);
5045
5066
 
@@ -5047,12 +5068,12 @@ const UtFormConstructor = {
5047
5068
  __applyRefProps(input, this.config.refInputConfigs[field.ref][input.name]);
5048
5069
  }
5049
5070
  } else if (field.dict) {
5050
- input = __clone(this.config.dictInputs[0]);
5071
+ input = __clone(inputs[0]);
5051
5072
  input.props.dict.default = field.ref;
5052
5073
 
5053
5074
  __applyDefaultProps(input);
5054
5075
  } else {
5055
- input = __clone(this.config.primitiveInputs[field.type][0]);
5076
+ input = __clone(inputs[0]);
5056
5077
 
5057
5078
  __applyDefaultProps(input);
5058
5079
  }
@@ -5094,17 +5115,12 @@ const UtFormConstructor = {
5094
5115
  runRule(context, script) {
5095
5116
  context = context ? context : {};
5096
5117
  context['console'] = console;
5097
- let appendScript = '';
5098
- /*for(let v in context) {
5099
- appendScript = appendScript + `var ${v} = this.${v};\n`;
5100
- }
5101
- appendScript = appendScript? appendScript + '\n': '';*/
5102
5118
 
5103
5119
  let func = function (script) {
5104
5120
  return notevil(script, context);
5105
5121
  };
5106
5122
 
5107
- func.call(context, appendScript + script);
5123
+ func.call(context, script);
5108
5124
  }
5109
5125
 
5110
5126
  };
@@ -10986,15 +11002,18 @@ var script$3 = {
10986
11002
  type: Object,
10987
11003
  default: () => ({})
10988
11004
  },
10989
- validationState: {
10990
- type: Object,
10991
- default: () => ({})
10992
- },
10993
11005
  refDataSuffix: {
10994
11006
  type: String,
10995
11007
  default: 'Data'
10996
11008
  }
10997
11009
  },
11010
+
11011
+ data() {
11012
+ return {
11013
+ validationState: {}
11014
+ };
11015
+ },
11016
+
10998
11017
  methods: {
10999
11018
  onEventFired(eventName, event, field) {
11000
11019
  if (eventName === 'input' && field.ref) {
@@ -11013,6 +11032,34 @@ var script$3 = {
11013
11032
  }
11014
11033
  });
11015
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]) {
11058
+ return false;
11059
+ }
11060
+ }
11061
+
11062
+ return true;
11016
11063
  }
11017
11064
 
11018
11065
  },
@@ -11093,7 +11140,7 @@ var __vue_render__$3 = function () {
11093
11140
  },
11094
11141
  expression: "doc[field.name]"
11095
11142
  }
11096
- }, '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()];
11097
11144
  })], 2);
11098
11145
  }), 0)]) : _vm._e();
11099
11146
  }), 0);
@@ -11435,7 +11482,11 @@ var __vue_render__$2 = function () {
11435
11482
  attrs: {
11436
11483
  "value": 'click'
11437
11484
  }
11438
- }, [_vm._v("\n Клик\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
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', {
11439
11490
  attrs: {
11440
11491
  "lg": "12"
11441
11492
  }
@@ -11611,6 +11662,14 @@ var script$1 = {
11611
11662
 
11612
11663
  rules() {
11613
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;
11614
11673
  }
11615
11674
 
11616
11675
  },
@@ -11634,6 +11693,11 @@ var script$1 = {
11634
11693
 
11635
11694
  currentInputName() {
11636
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;
11637
11701
  }
11638
11702
 
11639
11703
  },
@@ -11812,7 +11876,8 @@ var __vue_render__$1 = function () {
11812
11876
  }
11813
11877
  }, [_c('b-checkbox', {
11814
11878
  attrs: {
11815
- "size": "lg"
11879
+ "size": "lg",
11880
+ "disabled": !_vm.hasMultipleInputTypes
11816
11881
  },
11817
11882
  model: {
11818
11883
  value: _vm.field.multiple,
@@ -11821,7 +11886,7 @@ var __vue_render__$1 = function () {
11821
11886
  },
11822
11887
  expression: "field.multiple"
11823
11888
  }
11824
- }, [_vm._v("Множественное")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11889
+ }, [_vm._v("\n Множественное\n ")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11825
11890
  attrs: {
11826
11891
  "lg": "12"
11827
11892
  }