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