@form-create/component-antdv-group 2.5.17 → 3.0.0-alpha.4

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,36 @@ 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]);
104
88
  }
105
- this.subForm();
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();
95
+ }
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,
102
+ flush: 'post',
111
103
  }
112
104
  },
113
105
  methods: {
@@ -118,7 +110,7 @@ export default {
118
110
  this.cacheValue[k] = JSON.stringify(val);
119
111
  },
120
112
  input(value) {
121
- this.$emit('input', value);
113
+ this.$emit('update:modelValue', value);
122
114
  this.$emit('change', value);
123
115
  },
124
116
  formData(key, formData) {
@@ -136,7 +128,7 @@ export default {
136
128
  this.input(value);
137
129
  },
138
130
  setValue(key, value) {
139
- const field = this.field, $f = this.cacheRule[key].$f;
131
+ const field = this.field
140
132
  if (field) {
141
133
  value = {[field]: this._value(value)};
142
134
  }
@@ -144,24 +136,22 @@ export default {
144
136
  return;
145
137
  }
146
138
  this.cache(key, value);
147
- $f.coverValue(value || {});
148
139
  },
149
140
  addRule(i, emit) {
150
- const rule = this.formCreateInject.form.copyRules(this.formRule);
141
+ const rule = this.formCreateInject.form.copyRules(this.rule || []);
151
142
  const options = this.options ? {...this.options} : {
152
143
  submitBtn: false,
153
144
  resetBtn: false,
154
145
  };
155
- options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});
156
- this.$set(this.cacheRule, ++this.len, {rule, options});
146
+ this.cacheRule[++this.len] = {rule, options};
157
147
  if (emit) {
158
- this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
148
+ nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
159
149
  }
160
150
  },
161
151
  add$f(i, key, $f) {
162
152
  this.cacheRule[key].$f = $f;
163
153
  this.subForm();
164
- this.$nextTick(() => {
154
+ nextTick(() => {
165
155
  if (this.syncDisabled) {
166
156
  $f.disabled(this.disabled);
167
157
  }
@@ -173,40 +163,41 @@ export default {
173
163
  },
174
164
  removeRule(key, emit) {
175
165
  const index = Object.keys(this.cacheRule).indexOf(key);
176
- this.$delete(this.cacheRule, key);
177
- this.$delete(this.cacheValue, key);
166
+ delete this.cacheRule[key];
167
+ delete this.cacheValue[key];
178
168
  if (emit) {
179
- this.$nextTick(() => this.$emit('remove', index));
169
+ nextTick(() => this.$emit('remove', index));
180
170
  }
181
171
  },
182
- add(i) {
183
- if (this.disabled || false === this.onBeforeAdd(this.value)) {
172
+ add() {
173
+ if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {
184
174
  return;
185
175
  }
186
- this.addRule(i, true);
176
+ this.modelValue.push(this.field ? null : {});
177
+ this.$emit('update:modelValue', this.modelValue);
187
178
  },
188
179
  del(index, key) {
189
- if (this.disabled || false === this.onBeforeRemove(this.value, index)) {
180
+ if (this.disabled || false === this.onBeforeRemove(this.modelValue, index)) {
190
181
  return;
191
182
  }
192
183
  this.removeRule(key, true);
193
184
  this.subForm();
194
- this.value.splice(index, 1);
195
- this.input(this.value);
185
+ this.modelValue.splice(index, 1);
186
+ this.input(this.modelValue);
196
187
  },
197
188
  addIcon(key) {
198
- return <AIcon key={`a${key}`} type="plus-circle"
189
+ return <PlusCircleOutlined key={`a${key}`}
199
190
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}
200
- on-click={this.add}/>;
191
+ onClick={this.add}/>;
201
192
  },
202
193
  delIcon(index, key) {
203
- return <AIcon key={`d${key}`} type="minus-circle"
194
+ return <MinusCircleOutlined key={`d${key}`}
204
195
  style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}
205
- on-click={() => this.del(index, key)}/>;
196
+ onClick={() => this.del(index, key)}/>;
206
197
  },
207
198
  makeIcon(total, index, key) {
208
- if (this.$scopedSlots.button) {
209
- return this.$scopedSlots.button({
199
+ if (this.$slots.button) {
200
+ return this.$slots.button({
210
201
  total,
211
202
  index,
212
203
  vm: this,
@@ -227,46 +218,44 @@ export default {
227
218
  },
228
219
  expandRule(n) {
229
220
  for (let i = 0; i < n; i++) {
230
- this.value.push(this.field ? null : {});
221
+ this.modelValue.push(this.field ? null : {});
231
222
  }
232
223
  }
233
224
  },
234
225
  created() {
235
- this.type = this.formCreateInject.form.$form();
236
- const d = (this.expand || 0) - this.value.length;
226
+ const d = (this.expand || 0) - this.modelValue.length;
227
+ for (let i = 0; i < this.modelValue.length; i++) {
228
+ this.addRule(i);
229
+ }
237
230
  if (d > 0) {
238
231
  this.expandRule(d);
239
232
  }
240
- for (let i = 0; i < this.value.length; i++) {
241
- this.addRule(i);
242
- }
243
233
  },
244
234
  render() {
245
235
  const keys = Object.keys(this.cacheRule);
246
236
  const button = this.button;
247
- const Type = this.type;
237
+ const Type = this.form;
248
238
  return keys.length === 0 ?
249
- (this.$scopedSlots.default ? (this.$scopedSlots.default({
239
+ (this.$slots.default ? (this.$slots.default({
250
240
  vm: this,
251
241
  add: this.add
252
- })) : <AIcon key={'a_def'} type="plus-circle"
242
+ })) : <PlusCircleOutlined key={'a_def'}
253
243
  style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}
254
- on-click={this.add}/>) :
244
+ onClick={this.add}/>) :
255
245
  <div key={'con'}>{keys.map((key, index) => {
256
246
  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
247
+ return <aRow align="middle" type="flex" key={key}
248
+ style="border-bottom:1px dashed #DCDFE6;margin-bottom:10px;">
249
+ <aCol span={button ? 20 : 24}><Type
260
250
  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
- }}
251
+ onUpdate:modelValue={(formData) => this.formData(key, formData)}
252
+ modelValue={this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index]}
253
+ onEmit-event={(name, ...args) => this.emitEvent(name, args, index, key)}
254
+ onUpdate:api={($f) => this.add$f(index, key, $f)}
266
255
  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>
256
+ option={options} extendOption={true}/></aCol>
257
+ {button ? <aCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</aCol> : null}
258
+ </aRow>
270
259
  })}</div>
271
260
  }
272
- }
261
+ });
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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"}