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