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