rb-document-form-constructor 0.3.2 → 0.3.6

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: 'Текст',
@@ -4967,8 +4974,8 @@ let baseConfig = {
4967
4974
  refInputConfigs: __clone(fcRefInputConfigs),
4968
4975
  rules: [],
4969
4976
  icons: {
4970
- iconExpandFacet: 'icon-chevron-up',
4971
- iconCollapseFacet: 'icon-chevron-down',
4977
+ iconExpandFacet: 'icon-chevron-down',
4978
+ iconCollapseFacet: 'icon-chevron-up',
4972
4979
  iconCloseFieldSidebar: 'icon-chevron-right',
4973
4980
  iconOpenFieldSidebar: 'icon-chevron-left',
4974
4981
  iconAdd: 'icon-add',
@@ -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
  };
@@ -10791,6 +10807,13 @@ var script$4 = {
10791
10807
  let innerFacets = this.facets.map(f => ({ ...f,
10792
10808
  expanded: false
10793
10809
  }));
10810
+
10811
+ if (innerFacets) {
10812
+ innerFacets.forEach(facet => {
10813
+ facet.fields = facet.fields.filter(field => !field.hiddenOnFormConfig);
10814
+ });
10815
+ }
10816
+
10794
10817
  this.innerFacets = JSON.parse(JSON.stringify(innerFacets));
10795
10818
  this.allFacets = JSON.parse(JSON.stringify(innerFacets));
10796
10819
  }
@@ -10834,7 +10857,7 @@ var __vue_render__$4 = function () {
10834
10857
  })], 1)], 1)], 1)], 1), _vm._v(" "), _c('div', {
10835
10858
  staticClass: "rb-facet-list"
10836
10859
  }, _vm._l(_vm.innerFacets, function (facet) {
10837
- return facet.fields && facet.fields.length > 0 ? _c('div', {
10860
+ return facet.fields.length > 0 ? _c('div', {
10838
10861
  key: facet.name,
10839
10862
  staticClass: "rb-facet"
10840
10863
  }, [_c('h6', {
@@ -10986,15 +11009,18 @@ var script$3 = {
10986
11009
  type: Object,
10987
11010
  default: () => ({})
10988
11011
  },
10989
- validationState: {
10990
- type: Object,
10991
- default: () => ({})
10992
- },
10993
11012
  refDataSuffix: {
10994
11013
  type: String,
10995
11014
  default: 'Data'
10996
11015
  }
10997
11016
  },
11017
+
11018
+ data() {
11019
+ return {
11020
+ validationState: {}
11021
+ };
11022
+ },
11023
+
10998
11024
  methods: {
10999
11025
  onEventFired(eventName, event, field) {
11000
11026
  if (eventName === 'input' && field.ref) {
@@ -11013,6 +11039,34 @@ var script$3 = {
11013
11039
  }
11014
11040
  });
11015
11041
  }
11042
+ },
11043
+
11044
+ validate() {
11045
+ this.formConfig.sections.forEach(s => {
11046
+ s.columns.forEach(c => {
11047
+ c.fields.forEach(f => {
11048
+ if (f.required && this.doc[f.name] == null) {
11049
+ Vue.set(this.validationState, f.name, false);
11050
+ Vue.set(this.validationState, `${f.name}__feedback`, `Поле ${f.labelRu} обязательно`);
11051
+ } else {
11052
+ Vue.set(this.validationState, f.name, null);
11053
+ }
11054
+
11055
+ this.onEventFired('validate', {
11056
+ validationState: this.validationState,
11057
+ doc: this.doc
11058
+ }, f);
11059
+ });
11060
+ });
11061
+ });
11062
+
11063
+ for (let fieldName in this.validationState) {
11064
+ if (this.validationState[fieldName] === false) {
11065
+ return false;
11066
+ }
11067
+ }
11068
+
11069
+ return true;
11016
11070
  }
11017
11071
 
11018
11072
  },
@@ -11093,7 +11147,7 @@ var __vue_render__$3 = function () {
11093
11147
  },
11094
11148
  expression: "doc[field.name]"
11095
11149
  }
11096
- }, 'component', field.input.propsData, false))], 1)], 1)], 1) : _vm._e()];
11150
+ }, '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
11151
  })], 2);
11098
11152
  }), 0)]) : _vm._e();
11099
11153
  }), 0);
@@ -11435,7 +11489,11 @@ var __vue_render__$2 = function () {
11435
11489
  attrs: {
11436
11490
  "value": 'click'
11437
11491
  }
11438
- }, [_vm._v("\n Клик\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
11492
+ }, [_vm._v("\n Клик\n ")]), _vm._v(" "), _c('b-form-select-option', {
11493
+ attrs: {
11494
+ "value": 'validate'
11495
+ }
11496
+ }, [_vm._v("\n Валидация\n ")])], 1)], 1)], 1), _vm._v(" "), _c('b-col', {
11439
11497
  attrs: {
11440
11498
  "lg": "12"
11441
11499
  }
@@ -11611,6 +11669,14 @@ var script$1 = {
11611
11669
 
11612
11670
  rules() {
11613
11671
  return UtFormConstructor.getAvailableFieldRules(this.field);
11672
+ },
11673
+
11674
+ hasMultipleInputTypes() {
11675
+ return UtFormConstructor.hasMultipleInputTypes(this.field);
11676
+ },
11677
+
11678
+ multiple() {
11679
+ return this.field && this.field.multiple;
11614
11680
  }
11615
11681
 
11616
11682
  },
@@ -11634,6 +11700,11 @@ var script$1 = {
11634
11700
 
11635
11701
  currentInputName() {
11636
11702
  this.field.input = UtFormConstructor.getInputTypeByName(this.currentInputName, this.field);
11703
+ },
11704
+
11705
+ multiple() {
11706
+ let input = UtFormConstructor.getDefaultInput(this.field);
11707
+ this.currentInputName = input.name;
11637
11708
  }
11638
11709
 
11639
11710
  },
@@ -11812,7 +11883,8 @@ var __vue_render__$1 = function () {
11812
11883
  }
11813
11884
  }, [_c('b-checkbox', {
11814
11885
  attrs: {
11815
- "size": "lg"
11886
+ "size": "lg",
11887
+ "disabled": !_vm.hasMultipleInputTypes
11816
11888
  },
11817
11889
  model: {
11818
11890
  value: _vm.field.multiple,
@@ -11821,7 +11893,7 @@ var __vue_render__$1 = function () {
11821
11893
  },
11822
11894
  expression: "field.multiple"
11823
11895
  }
11824
- }, [_vm._v("Множественное")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11896
+ }, [_vm._v("\n Множественное\n ")])], 1)], 1), _vm._v(" "), _c('b-form-row', [_c('b-col', {
11825
11897
  attrs: {
11826
11898
  "lg": "12"
11827
11899
  }