@form-create/component-elm-group 2.5.10 → 3.0.0-alpha.2

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,19 +1,15 @@
1
1
  import {hasProperty} from '@form-create/utils/lib/type';
2
+ import {defineComponent, markRaw, nextTick} 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
- formCreateInject: {
14
- type: Object,
15
- required: true,
16
- },
17
13
  button: {
18
14
  type: Boolean,
19
15
  default: true
@@ -26,7 +22,7 @@ export default {
26
22
  type: Number,
27
23
  default: 0
28
24
  },
29
- value: {
25
+ modelValue: {
30
26
  type: Array,
31
27
  default: () => []
32
28
  },
@@ -53,24 +49,16 @@ export default {
53
49
  }
54
50
  },
55
51
  },
52
+ inject: ['formCreateInject'],
56
53
  data() {
57
54
  return {
58
55
  len: 0,
59
56
  cacheRule: {},
60
57
  cacheValue: {},
58
+ form: markRaw(this.formCreateInject.form.$form())
61
59
  }
62
60
  },
63
- computed: {
64
- formRule() {
65
- if (this.rule) {
66
- return Array.isArray(this.rule) ? this.rule : [this.rule];
67
- }
68
- if (this.rules) {
69
- return this.rules;
70
- }
71
- return [];
72
- }
73
- },
61
+ emits: ['update:modelValue', 'change', 'itemMounted', 'remove'],
74
62
  watch: {
75
63
  disabled(n) {
76
64
  if (this.syncDisabled) {
@@ -81,32 +69,35 @@ export default {
81
69
  }
82
70
  },
83
71
  expand(n) {
84
- let d = n - this.value.length;
72
+ let d = n - this.modelValue.length;
85
73
  if (d > 0) {
86
74
  this.expandRule(d);
87
75
  }
88
76
  },
89
- value(n) {
90
- n = n || [];
91
- let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;
92
- if (len < 0) {
93
- for (let i = len; i < 0; i++) {
94
- this.addRule(n.length + i);
95
- }
96
- for (let i = 0; i < total; i++) {
97
- this.setValue(keys[i], n[i]);
98
- }
99
- } else {
100
- if (len > 0) {
101
- for (let i = 0; i < len; i++) {
102
- 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();
103
94
  }
104
- this.subForm();
95
+ n.forEach((val, i) => {
96
+ this.setValue(keys[i], n[i]);
97
+ });
105
98
  }
106
- n.forEach((val, i) => {
107
- this.setValue(keys[i], n[i]);
108
- });
109
- }
99
+ },
100
+ deep: true,
110
101
  }
111
102
  },
112
103
  methods: {
@@ -117,7 +108,7 @@ export default {
117
108
  this.cacheValue[k] = JSON.stringify(val);
118
109
  },
119
110
  input(value) {
120
- this.$emit('input', value);
111
+ this.$emit('update:modelValue', value);
121
112
  this.$emit('change', value);
122
113
  },
123
114
  formData(key, formData) {
@@ -135,7 +126,7 @@ export default {
135
126
  this.input(value);
136
127
  },
137
128
  setValue(key, value) {
138
- const field = this.field, $f = this.cacheRule[key].$f;
129
+ const field = this.field
139
130
  if (field) {
140
131
  value = {[field]: this._value(value)};
141
132
  }
@@ -143,24 +134,22 @@ export default {
143
134
  return;
144
135
  }
145
136
  this.cache(key, value);
146
- $f.coverValue(value || {});
147
137
  },
148
138
  addRule(i, emit) {
149
- const rule = this.formCreateInject.form.copyRules(this.formRule);
139
+ const rule = this.formCreateInject.form.copyRules(this.rule || []);
150
140
  const options = this.options ? {...this.options} : {
151
141
  submitBtn: false,
152
142
  resetBtn: false,
153
143
  };
154
- options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});
155
- this.$set(this.cacheRule, ++this.len, {rule, options});
144
+ this.cacheRule[++this.len] = {rule, options};
156
145
  if (emit) {
157
- this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
146
+ nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
158
147
  }
159
148
  },
160
149
  add$f(i, key, $f) {
161
150
  this.cacheRule[key].$f = $f;
162
151
  this.subForm();
163
- this.$nextTick(() => {
152
+ nextTick(() => {
164
153
  if (this.syncDisabled) {
165
154
  $f.disabled(this.disabled);
166
155
  }
@@ -172,40 +161,41 @@ export default {
172
161
  },
173
162
  removeRule(key, emit) {
174
163
  const index = Object.keys(this.cacheRule).indexOf(key);
175
- this.$delete(this.cacheRule, key);
176
- this.$delete(this.cacheValue, key);
164
+ delete this.cacheRule[key];
165
+ delete this.cacheValue[key];
177
166
  if (emit) {
178
- this.$nextTick(() => this.$emit('remove', index));
167
+ nextTick(() => this.$emit('remove', index));
179
168
  }
180
169
  },
181
- add(i) {
182
- if (this.disabled || false === this.onBeforeAdd(this.value)) {
170
+ add() {
171
+ if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {
183
172
  return;
184
173
  }
185
- this.addRule(i, true);
174
+ this.modelValue.push(this.field ? null : {});
175
+ this.$emit('update:modelValue', this.modelValue);
186
176
  },
187
177
  del(index, key) {
188
- if (this.disabled || false === this.onBeforeRemove(this.value)) {
178
+ if (this.disabled || false === this.onBeforeRemove(this.modelValue, index)) {
189
179
  return;
190
180
  }
191
181
  this.removeRule(key, true);
192
182
  this.subForm();
193
- this.value.splice(index, 1);
194
- this.input(this.value);
183
+ this.modelValue.splice(index, 1);
184
+ this.input(this.modelValue);
195
185
  },
196
186
  addIcon(key) {
197
187
  return <i key={`a${key}`} class="el-icon-circle-plus-outline"
198
188
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}
199
- on-click={this.add}/>;
189
+ onClick={this.add}/>;
200
190
  },
201
191
  delIcon(index, key) {
202
192
  return <i key={`d${key}`} class="el-icon-remove-outline"
203
193
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}
204
- on-click={() => this.del(index, key)}/>;
194
+ onClick={() => this.del(index, key)}/>;
205
195
  },
206
196
  makeIcon(total, index, key) {
207
- if (this.$scopedSlots.button) {
208
- return this.$scopedSlots.button({
197
+ if (this.$slots.button) {
198
+ return this.$slots.button({
209
199
  total,
210
200
  index,
211
201
  vm: this,
@@ -226,47 +216,44 @@ export default {
226
216
  },
227
217
  expandRule(n) {
228
218
  for (let i = 0; i < n; i++) {
229
- this.value.push(this.field ? null : {});
219
+ this.modelValue.push(this.field ? null : {});
230
220
  }
231
221
  }
232
222
  },
233
223
  created() {
234
- const d = (this.expand || 0) - this.value.length;
224
+ const d = (this.expand || 0) - this.modelValue.length;
235
225
  if (d > 0) {
236
226
  this.expandRule(d);
237
227
  }
238
- for (let i = 0; i < this.value.length; i++) {
228
+ for (let i = 0; i < this.modelValue.length; i++) {
239
229
  this.addRule(i);
240
230
  }
241
231
  },
242
232
  render() {
243
233
  const keys = Object.keys(this.cacheRule);
244
234
  const button = this.button;
235
+ const Type = this.form;
245
236
  return keys.length === 0 ?
246
- (this.$scopedSlots.default ? (this.$scopedSlots.default({
237
+ (this.$slots.default ? (this.$slots.default({
247
238
  vm: this,
248
239
  add: this.add
249
240
  })) : <i key={'a_def'} class="el-icon-circle-plus-outline"
250
241
  style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}
251
- on-click={this.add}/>) :
242
+ onClick={this.add}/>) :
252
243
  <div key={'con'}>{keys.map((key, index) => {
253
244
  const {rule, options} = this.cacheRule[key];
254
245
  return <ElRow align="middle" type="flex" key={key}
255
246
  style="border-bottom:1px dashed #DCDFE6;margin-bottom:10px;">
256
- <ElCol span={button ? 20 : 24}><ElFormItem><FormCreate
247
+ <ElCol span={button ? 20 : 24}><ElFormItem><Type
257
248
  key={key}
258
- on={{
259
- 'update:value': (formData) => this.formData(key, formData),
260
- 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),
261
- input: ($f) => this.add$f(index, key, $f)
262
- }}
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)}
263
253
  rule={rule}
264
254
  option={options} extendOption={true}/></ElFormItem></ElCol>
265
255
  {button ? <ElCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}
266
256
  </ElRow>
267
257
  })}</div>
268
- },
269
- beforeMount() {
270
- this.$options.components.FormCreate = this.formCreateInject.form.$form();
271
258
  }
272
- }
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 formCreateInject: {\n type: Object,\n required: true,\n },\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.formCreateInject.form.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.formCreateInject.subForm(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 beforeMount() {\n this.$options.components.FormCreate = this.formCreateInject.form.$form();\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","formCreateInject","type","required","button","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","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","beforeMount","$options","components","FormCreate","$form"],"mappings":"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"}