@form-create/component-elm-group 2.5.9 → 3.0.0-alpha.1

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/src/component.jsx CHANGED
@@ -1,16 +1,15 @@
1
1
  import {hasProperty} from '@form-create/utils/lib/type';
2
+ import {defineComponent, markRaw} from 'vue';
2
3
 
3
4
  const NAME = 'fcGroup';
4
5
 
5
- export default {
6
+ export default defineComponent({
6
7
  name: NAME,
7
8
  props: {
8
9
  field: String,
9
- rule: [Array, Object],
10
- rules: Array,
10
+ rule: Array,
11
11
  expand: Number,
12
12
  options: Object,
13
- formCreate: Object,
14
13
  button: {
15
14
  type: Boolean,
16
15
  default: true
@@ -23,7 +22,7 @@ export default {
23
22
  type: Number,
24
23
  default: 0
25
24
  },
26
- value: {
25
+ modelValue: {
27
26
  type: Array,
28
27
  default: () => []
29
28
  },
@@ -50,24 +49,16 @@ export default {
50
49
  }
51
50
  },
52
51
  },
52
+ inject: ['formCreateInject'],
53
53
  data() {
54
54
  return {
55
55
  len: 0,
56
56
  cacheRule: {},
57
57
  cacheValue: {},
58
+ form: markRaw(this.formCreateInject.form.$form())
58
59
  }
59
60
  },
60
- computed: {
61
- formRule() {
62
- if (this.rule) {
63
- return Array.isArray(this.rule) ? this.rule : [this.rule];
64
- }
65
- if (this.rules) {
66
- return this.rules;
67
- }
68
- return [];
69
- }
70
- },
61
+ emits: ['update:modelValue', 'change', 'itemMounted', 'remove'],
71
62
  watch: {
72
63
  disabled(n) {
73
64
  if (this.syncDisabled) {
@@ -78,32 +69,35 @@ export default {
78
69
  }
79
70
  },
80
71
  expand(n) {
81
- let d = n - this.value.length;
72
+ let d = n - this.modelValue.length;
82
73
  if (d > 0) {
83
74
  this.expandRule(d);
84
75
  }
85
76
  },
86
- value(n) {
87
- n = n || [];
88
- let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;
89
- if (len < 0) {
90
- for (let i = len; i < 0; i++) {
91
- this.addRule(n.length + i);
92
- }
93
- for (let i = 0; i < total; i++) {
94
- this.setValue(keys[i], n[i]);
95
- }
96
- } else {
97
- if (len > 0) {
98
- for (let i = 0; i < len; i++) {
99
- this.removeRule(keys[total - i - 1]);
77
+ modelValue: {
78
+ handler(n) {
79
+ n = n || [];
80
+ let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;
81
+ if (len < 0) {
82
+ for (let i = len; i < 0; i++) {
83
+ this.addRule(n.length + i);
84
+ }
85
+ for (let i = 0; i < total; i++) {
86
+ this.setValue(keys[i], n[i]);
87
+ }
88
+ } else {
89
+ if (len > 0) {
90
+ for (let i = 0; i < len; i++) {
91
+ this.removeRule(keys[total - i - 1]);
92
+ }
93
+ this.subForm();
100
94
  }
101
- this.subForm();
95
+ n.forEach((val, i) => {
96
+ this.setValue(keys[i], n[i]);
97
+ });
102
98
  }
103
- n.forEach((val, i) => {
104
- this.setValue(keys[i], n[i]);
105
- });
106
- }
99
+ },
100
+ deep: true,
107
101
  }
108
102
  },
109
103
  methods: {
@@ -114,7 +108,7 @@ export default {
114
108
  this.cacheValue[k] = JSON.stringify(val);
115
109
  },
116
110
  input(value) {
117
- this.$emit('input', value);
111
+ this.$emit('update:modelValue', value);
118
112
  this.$emit('change', value);
119
113
  },
120
114
  formData(key, formData) {
@@ -132,7 +126,7 @@ export default {
132
126
  this.input(value);
133
127
  },
134
128
  setValue(key, value) {
135
- const field = this.field, $f = this.cacheRule[key].$f;
129
+ const field = this.field
136
130
  if (field) {
137
131
  value = {[field]: this._value(value)};
138
132
  }
@@ -140,16 +134,14 @@ export default {
140
134
  return;
141
135
  }
142
136
  this.cache(key, value);
143
- $f.coverValue(value || {});
144
137
  },
145
138
  addRule(i, emit) {
146
- const rule = this.$formCreate.copyRules(this.formRule);
139
+ const rule = this.formCreateInject.form.copyRules(this.rule || []);
147
140
  const options = this.options ? {...this.options} : {
148
141
  submitBtn: false,
149
142
  resetBtn: false,
150
143
  };
151
- options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});
152
- this.$set(this.cacheRule, ++this.len, {rule, options});
144
+ this.cacheRule[++this.len] = {rule, options};
153
145
  if (emit) {
154
146
  this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
155
147
  }
@@ -165,44 +157,45 @@ export default {
165
157
  });
166
158
  },
167
159
  subForm() {
168
- this.$emit('fc.sub-form', Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));
160
+ this.formCreateInject.subForm(Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));
169
161
  },
170
162
  removeRule(key, emit) {
171
163
  const index = Object.keys(this.cacheRule).indexOf(key);
172
- this.$delete(this.cacheRule, key);
173
- this.$delete(this.cacheValue, key);
164
+ delete this.cacheRule[key];
165
+ delete this.cacheValue[key];
174
166
  if (emit) {
175
167
  this.$nextTick(() => this.$emit('remove', index));
176
168
  }
177
169
  },
178
- add(i) {
179
- if (this.disabled || false === this.onBeforeAdd(this.value)) {
170
+ add() {
171
+ if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {
180
172
  return;
181
173
  }
182
- this.addRule(i, true);
174
+ this.modelValue.push(this.field ? null : {});
175
+ this.$emit('update:modelValue', this.modelValue);
183
176
  },
184
177
  del(index, key) {
185
- if (this.disabled || false === this.onBeforeRemove(this.value)) {
178
+ if (this.disabled || false === this.onBeforeRemove(this.modelValue, index)) {
186
179
  return;
187
180
  }
188
181
  this.removeRule(key, true);
189
182
  this.subForm();
190
- this.value.splice(index, 1);
191
- this.input(this.value);
183
+ this.modelValue.splice(index, 1);
184
+ this.input(this.modelValue);
192
185
  },
193
186
  addIcon(key) {
194
187
  return <i key={`a${key}`} class="el-icon-circle-plus-outline"
195
188
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}
196
- on-click={this.add}/>;
189
+ onClick={this.add}/>;
197
190
  },
198
191
  delIcon(index, key) {
199
192
  return <i key={`d${key}`} class="el-icon-remove-outline"
200
193
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}
201
- on-click={() => this.del(index, key)}/>;
194
+ onClick={() => this.del(index, key)}/>;
202
195
  },
203
196
  makeIcon(total, index, key) {
204
- if (this.$scopedSlots.button) {
205
- return this.$scopedSlots.button({
197
+ if (this.$slots.button) {
198
+ return this.$slots.button({
206
199
  total,
207
200
  index,
208
201
  vm: this,
@@ -223,44 +216,44 @@ export default {
223
216
  },
224
217
  expandRule(n) {
225
218
  for (let i = 0; i < n; i++) {
226
- this.value.push(this.field ? null : {});
219
+ this.modelValue.push(this.field ? null : {});
227
220
  }
228
221
  }
229
222
  },
230
223
  created() {
231
- const d = (this.expand || 0) - this.value.length;
224
+ const d = (this.expand || 0) - this.modelValue.length;
232
225
  if (d > 0) {
233
226
  this.expandRule(d);
234
227
  }
235
- for (let i = 0; i < this.value.length; i++) {
228
+ for (let i = 0; i < this.modelValue.length; i++) {
236
229
  this.addRule(i);
237
230
  }
238
231
  },
239
232
  render() {
240
233
  const keys = Object.keys(this.cacheRule);
241
234
  const button = this.button;
235
+ const Type = this.form;
242
236
  return keys.length === 0 ?
243
- (this.$scopedSlots.default ? (this.$scopedSlots.default({
237
+ (this.$slots.default ? (this.$slots.default({
244
238
  vm: this,
245
239
  add: this.add
246
240
  })) : <i key={'a_def'} class="el-icon-circle-plus-outline"
247
241
  style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}
248
- on-click={this.add}/>) :
242
+ onClick={this.add}/>) :
249
243
  <div key={'con'}>{keys.map((key, index) => {
250
244
  const {rule, options} = this.cacheRule[key];
251
245
  return <ElRow align="middle" type="flex" key={key}
252
246
  style="border-bottom:1px dashed #DCDFE6;margin-bottom:10px;">
253
- <ElCol span={button ? 20 : 24}><ElFormItem><FormCreate
247
+ <ElCol span={button ? 20 : 24}><ElFormItem><Type
254
248
  key={key}
255
- on={{
256
- 'update:value': (formData) => this.formData(key, formData),
257
- 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),
258
- input: ($f) => this.add$f(index, key, $f)
259
- }}
249
+ onUpdate:modelValue={(formData) => this.formData(key, formData)}
250
+ modelValue={this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index]}
251
+ onEmit-event={(name, ...args) => this.emitEvent(name, args, index, key)}
252
+ onUpdate:api={($f) => this.add$f(index, key, $f)}
260
253
  rule={rule}
261
254
  option={options} extendOption={true}/></ElFormItem></ElCol>
262
255
  {button ? <ElCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}
263
256
  </ElRow>
264
257
  })}</div>
265
258
  }
266
- }
259
+ });
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../src/component.jsx","../../../../packages/utils/lib/type.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreate: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n }\n },\n computed: {\n formRule() {\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n if (this.rules) {\n return this.rules;\n }\n return [];\n }\n },\n watch: {\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.$formCreate.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.subForm();\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.$emit('fc.sub-form', Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value)) {\n return;\n }\n this.removeRule(key, true);\n this.subForm();\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <i key={`a${key}`} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>;\n },\n delIcon(index, key) {\n return <i key={`d${key}`} class=\"el-icon-remove-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (index >= this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <i key={'a_def'} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}\n on-click={this.add}/>) :\n <div key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <ElRow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #DCDFE6;margin-bottom:10px;\">\n <ElCol span={button ? 20 : 24}><ElFormItem><FormCreate\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n rule={rule}\n option={options} extendOption={true}/></ElFormItem></ElCol>\n {button ? <ElCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}\n </ElRow>\n })}</div>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n }\n};\n\n['Date', 'Object', 'Function', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeFn","reduce","indexOf","Array","e","concat","f","g","h","i","name","props","field","String","rule","rules","expand","Number","options","formCreate","button","type","Boolean","max","min","value","disabled","syncDisabled","fontSize","onBeforeRemove","Function","onBeforeAdd","data","len","cacheRule","cacheValue","computed","formRule","isArray","watch","n","lst","keys","forEach","k","$f","expandRule","total","addRule","setValue","removeRule","subForm","val","_this","methods","_value","v","cache","JSON","stringify","input","$emit","formData","key","filter","map","_this2","form","coverValue","emit","$formCreate","copyRules","submitBtn","resetBtn","$set","$nextTick","_this3","add$f","_this4","_this5","index","$delete","_this6","add","del","splice","addIcon","delIcon","_this7","makeIcon","$scopedSlots","vm","_this8","emitEvent","args","push","created","render","_this9"],"mappings":"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"}