rb-document-form-constructor 0.3.1 → 0.3.5

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
  };
@@ -10793,6 +10809,14 @@ var script$4 = {
10793
10809
  }));
10794
10810
  this.innerFacets = JSON.parse(JSON.stringify(innerFacets));
10795
10811
  this.allFacets = JSON.parse(JSON.stringify(innerFacets));
10812
+ },
10813
+
10814
+ getVisibleFields(facet) {
10815
+ if (!facet || !facet.fields) {
10816
+ return [];
10817
+ }
10818
+
10819
+ return facet.fields.filter(field => !field.hiddenOnFormConfig);
10796
10820
  }
10797
10821
 
10798
10822
  },
@@ -10834,7 +10858,7 @@ var __vue_render__$4 = function () {
10834
10858
  })], 1)], 1)], 1)], 1), _vm._v(" "), _c('div', {
10835
10859
  staticClass: "rb-facet-list"
10836
10860
  }, _vm._l(_vm.innerFacets, function (facet) {
10837
- return facet.fields && facet.fields.length > 0 ? _c('div', {
10861
+ return _vm.getVisibleFields(facet).length > 0 ? _c('div', {
10838
10862
  key: facet.name,
10839
10863
  staticClass: "rb-facet"
10840
10864
  }, [_c('h6', {
@@ -10873,7 +10897,7 @@ var __vue_render__$4 = function () {
10873
10897
  },
10874
10898
  expression: "facet.fields"
10875
10899
  }
10876
- }, _vm._l(facet.fields, function (field) {
10900
+ }, _vm._l(_vm.getVisibleFields(facet), function (field) {
10877
10901
  return _c('b-list-group-item', {
10878
10902
  key: field.name,
10879
10903
  staticClass: "cursor-pointer"
@@ -10986,13 +11010,24 @@ var script$3 = {
10986
11010
  type: Object,
10987
11011
  default: () => ({})
10988
11012
  },
10989
- validationState: {
10990
- type: Object,
10991
- default: () => ({})
11013
+ refDataSuffix: {
11014
+ type: String,
11015
+ default: 'Data'
10992
11016
  }
10993
11017
  },
11018
+
11019
+ data() {
11020
+ return {
11021
+ validationState: {}
11022
+ };
11023
+ },
11024
+
10994
11025
  methods: {
10995
11026
  onEventFired(eventName, event, field) {
11027
+ if (eventName === 'input' && field.ref) {
11028
+ this.doc[field.name + this.refDataSuffix] = null;
11029
+ }
11030
+
10996
11031
  if (field.rules) {
10997
11032
  field.rules.forEach(rule => {
10998
11033
  if (rule.event === eventName && rule.script) {
@@ -11005,6 +11040,34 @@ var script$3 = {
11005
11040
  }
11006
11041
  });
11007
11042
  }
11043
+ },
11044
+
11045
+ validate() {
11046
+ this.formConfig.sections.forEach(s => {
11047
+ s.columns.forEach(c => {
11048
+ c.fields.forEach(f => {
11049
+ if (f.required && this.doc[f.name] == null) {
11050
+ Vue.set(this.validationState, f.name, false);
11051
+ Vue.set(this.validationState, `${f.name}__feedback`, `Поле ${f.labelRu} обязательно`);
11052
+ } else {
11053
+ Vue.set(this.validationState, f.name, null);
11054
+ }
11055
+
11056
+ this.onEventFired('validate', {
11057
+ validationState: this.validationState,
11058
+ doc: this.doc
11059
+ }, f);
11060
+ });
11061
+ });
11062
+ });
11063
+
11064
+ for (let fieldName in this.validationState) {
11065
+ if (this.validationState[fieldName] === false) {
11066
+ return false;
11067
+ }
11068
+ }
11069
+
11070
+ return true;
11008
11071
  }
11009
11072
 
11010
11073
  },
@@ -11085,7 +11148,7 @@ var __vue_render__$3 = function () {
11085
11148
  },
11086
11149
  expression: "doc[field.name]"
11087
11150
  }
11088
- }, 'component', field.input.propsData, false))], 1)], 1)], 1) : _vm._e()];
11151
+ }, '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()];
11089
11152
  })], 2);
11090
11153
  }), 0)]) : _vm._e();
11091
11154
  }), 0);
@@ -11427,7 +11490,11 @@ var __vue_render__$2 = function () {
11427
11490
  attrs: {
11428
11491
  "value": 'click'
11429
11492
  }
11430
- }, [_vm._v("\n Клик\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
11493
+ }, [_vm._v("\n Клик\n ")]), _vm._v(" "), _c('b-form-select-option', {
11494
+ attrs: {
11495
+ "value": 'validate'
11496
+ }
11497
+ }, [_vm._v("\n Валидация\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
11431
11498
  attrs: {
11432
11499
  "lg": "12"
11433
11500
  }
@@ -11603,6 +11670,14 @@ var script$1 = {
11603
11670
 
11604
11671
  rules() {
11605
11672
  return UtFormConstructor.getAvailableFieldRules(this.field);
11673
+ },
11674
+
11675
+ hasMultipleInputTypes() {
11676
+ return UtFormConstructor.hasMultipleInputTypes(this.field);
11677
+ },
11678
+
11679
+ multiple() {
11680
+ return this.field && this.field.multiple;
11606
11681
  }
11607
11682
 
11608
11683
  },
@@ -11626,6 +11701,11 @@ var script$1 = {
11626
11701
 
11627
11702
  currentInputName() {
11628
11703
  this.field.input = UtFormConstructor.getInputTypeByName(this.currentInputName, this.field);
11704
+ },
11705
+
11706
+ multiple() {
11707
+ let input = UtFormConstructor.getDefaultInput(this.field);
11708
+ this.currentInputName = input.name;
11629
11709
  }
11630
11710
 
11631
11711
  },
@@ -11804,7 +11884,8 @@ var __vue_render__$1 = function () {
11804
11884
  }
11805
11885
  }, [_c('b-checkbox', {
11806
11886
  attrs: {
11807
- "size": "lg"
11887
+ "size": "lg",
11888
+ "disabled": !_vm.hasMultipleInputTypes
11808
11889
  },
11809
11890
  model: {
11810
11891
  value: _vm.field.multiple,
@@ -11813,7 +11894,7 @@ var __vue_render__$1 = function () {
11813
11894
  },
11814
11895
  expression: "field.multiple"
11815
11896
  }
11816
- }, [_vm._v("Множественное")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11897
+ }, [_vm._v("\n Множественное\n ")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11817
11898
  attrs: {
11818
11899
  "lg": "12"
11819
11900
  }