@form-create/component-antdv-group 2.5.9
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/LICENSE +21 -0
- package/README.md +6 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
- package/src/component.jsx +266 -0
- package/src/index.js +3 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 xaboy
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @form-create/component-antdv-group v2.5.9
|
|
3
|
+
* (c) 2018-2021 xaboy
|
|
4
|
+
* Github https://github.com/xaboy/form-create with @form-create/component-antdv-group
|
|
5
|
+
* Released under the MIT License.
|
|
6
|
+
*/
|
|
7
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).FcGroup=t()}(this,function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t,n=1;n<arguments.length;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)}var t=["attrs","props","domProps"],n=["class","style","directives"],i=["on","nativeOn"],r=function(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}},o=function(o){return o.reduce(function(o,a){for(var c in a)if(o[c])if(-1!==t.indexOf(c))o[c]=e({},o[c],a[c]);else if(-1!==n.indexOf(c)){var s=o[c]instanceof Array?o[c]:[o[c]],u=a[c]instanceof Array?a[c]:[a[c]];o[c]=s.concat(u)}else if(-1!==i.indexOf(c))for(var l in a[c])if(o[c][l]){var f=o[c][l]instanceof Array?o[c][l]:[o[c][l]],h=a[c][l]instanceof Array?a[c][l]:[a[c][l]];o[c][l]=f.concat(h)}else o[c][l]=a[c][l];else if("hook"==c)for(var d in a[c])o[c][d]=o[c][d]?r(o[c][d],a[c][d]):a[c][d];else o[c]=a[c];else o[c]=a[c];return o},{})};function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}return{name:"fcGroup",props:{field:String,rule:[Array,Object],rules:Array,expand:Number,options:Object,formCreate:Object,button:{type:Boolean,default:!0},max:{type:Number,default:0},min:{type:Number,default:0},value:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},fontSize:{type:Number,default:28},onBeforeRemove:{type:Function,default:function(){}},onBeforeAdd:{type:Function,default:function(){}}},data:function(){return{len:0,cacheRule:{},cacheValue:{}}},computed:{formRule:function(){return this.rule?Array.isArray(this.rule)?this.rule:[this.rule]:this.rules?this.rules:[]}},watch:{disabled:function(e){if(this.syncDisabled){var t=this.cacheRule;Object.keys(t).forEach(function(n){t[n].$f.disabled(e)})}},expand:function(e){var t=e-this.value.length;t>0&&this.expandRule(t)},value:function(e){var t=this;e=e||[];var n=Object.keys(this.cacheRule),i=n.length,r=i-e.length;if(r<0){for(var o=r;o<0;o++)this.addRule(e.length+o);for(var a=0;a<i;a++)this.setValue(n[a],e[a])}else{if(r>0){for(var c=0;c<r;c++)this.removeRule(n[i-c-1]);this.subForm()}e.forEach(function(i,r){t.setValue(n[r],e[r])})}}},methods:{_value:function(e){return e&&(t=e,n=this.field,{}.hasOwnProperty.call(t,n))?e[this.field]:e;var t,n},cache:function(e,t){this.cacheValue[e]=JSON.stringify(t)},input:function(e){this.$emit("input",e),this.$emit("change",e)},formData:function(e,t){var n=this,i=this.cacheRule,r=Object.keys(i);if(r.filter(function(e){return i[e].$f}).length===r.length){var o=r.map(function(i){var r=e===i?t:s({},n.cacheRule[i].$f.form),o=n.field?r[n.field]||null:r;return n.cache(i,o),o});this.input(o)}},setValue:function(e,t){var n=this.field,i=this.cacheRule[e].$f;n&&(t=a({},n,this._value(t))),this.cacheValue[e]!==JSON.stringify(n?t[n]:t)&&(this.cache(e,t),i.coverValue(t||{}))},addRule:function(e,t){var n=this,i=this.$formCreate.copyRules(this.formRule),r=this.options?s({},this.options):{submitBtn:!1,resetBtn:!1};r.formData=this.field?a({},this.field,this._value(this.value[e])):this.value[e]||{},this.$set(this.cacheRule,++this.len,{rule:i,options:r}),t&&this.$nextTick(function(){return n.$emit("add",i,Object.keys(n.cacheRule).length-1)})},add$f:function(e,t,n){var i=this;this.cacheRule[t].$f=n,this.subForm(),this.$nextTick(function(){i.syncDisabled&&n.disabled(i.disabled),i.$emit("itemMounted",n,Object.keys(i.cacheRule).indexOf(t))})},subForm:function(){var e=this;this.$emit("fc.sub-form",Object.keys(this.cacheRule).map(function(t){return e.cacheRule[t].$f}))},removeRule:function(e,t){var n=this,i=Object.keys(this.cacheRule).indexOf(e);this.$delete(this.cacheRule,e),this.$delete(this.cacheValue,e),t&&this.$nextTick(function(){return n.$emit("remove",i)})},add:function(e){this.disabled||!1===this.onBeforeAdd(this.value)||this.addRule(e,!0)},del:function(e,t){this.disabled||!1===this.onBeforeRemove(this.value)||(this.removeRule(t,!0),this.subForm(),this.value.splice(e,1),this.input(this.value))},addIcon:function(e){return(0,this.$createElement)("AIcon",{key:"a".concat(e),attrs:{type:"plus-circle"},style:"font-size:".concat(this.fontSize,"px;cursor:").concat(this.disabled?"not-allowed;color:#c9cdd4":"pointer",";"),on:{click:this.add}})},delIcon:function(e,t){var n=this;return(0,this.$createElement)("AIcon",{key:"d".concat(t),attrs:{type:"minus-circle"},style:"font-size:".concat(this.fontSize,"px;cursor:").concat(this.disabled?"not-allowed;color:#c9cdd4":"pointer;color:#606266",";"),on:{click:function(){return n.del(e,t)}}})},makeIcon:function(e,t,n){var i=this;return this.$scopedSlots.button?this.$scopedSlots.button({total:e,index:t,vm:this,key:n,del:function(){return i.del(t,n)},add:this.add}):0===t?[0!==this.max&&e>=this.max?null:this.addIcon(n),0===this.min||e>this.min?this.delIcon(t,n):null]:t>=this.min?this.delIcon(t,n):void 0},emitEvent:function(e,t,n,i){this.$emit.apply(this,[e].concat(u(t),[this.cacheRule[i].$f,n]))},expandRule:function(e){for(var t=0;t<e;t++)this.value.push(this.field?null:{})}},created:function(){var e=(this.expand||0)-this.value.length;e>0&&this.expandRule(e);for(var t=0;t<this.value.length;t++)this.addRule(t)},render:function(){var e=this,t=arguments[0],n=Object.keys(this.cacheRule),i=this.button;return 0===n.length?this.$scopedSlots.default?this.$scopedSlots.default({vm:this,add:this.add}):t("AIcon",{key:"a_def",attrs:{type:"plus-circle"},style:"font-size:".concat(this.fontSize,"px;vertical-align:middle;color:").concat(this.disabled?"#c9cdd4;cursor: not-allowed":"#606266;cursor:pointer",";"),on:{click:this.add}}):t("div",{key:"con"},[n.map(function(r,a){var c=e.cacheRule[r],s=c.rule,u=c.options;return t("ARow",{attrs:{align:"middle",type:"flex"},key:r,style:"border-bottom:1px dashed #d9d9d9;margin-bottom:10px;"},[t("ACol",{attrs:{span:i?20:24}},[t("FormCreate",o([{key:r},{on:{"update:value":function(t){return e.formData(r,t)},"emit-event":function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return e.emitEvent(t,i,a,r)},input:function(t){return e.add$f(a,r,t)}}},{attrs:{rule:s,option:u,extendOption:!0}}]))]),i?t("ACol",{attrs:{span:2,pull:1,push:1}},[e.makeIcon(n.length,a,r)]):null])})])}}});
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@form-create/component-antdv-group",
|
|
3
|
+
"version": "2.5.9",
|
|
4
|
+
"description": "@form-create/ant-design-vue 内置组件",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"unpkg": "./dist/index.js",
|
|
8
|
+
"jsdelivr": "./dist/index.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"clean": "rimraf dist/",
|
|
11
|
+
"bili": "cross-env bili",
|
|
12
|
+
"build": "npm-run-all clean bili"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"README.md",
|
|
16
|
+
"package.json",
|
|
17
|
+
"LICENSE",
|
|
18
|
+
"src",
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"@form-create",
|
|
23
|
+
"ant-design-vue",
|
|
24
|
+
"form-create-component"
|
|
25
|
+
],
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/xaboy/form-create.git"
|
|
29
|
+
},
|
|
30
|
+
"author": "xaboy",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@form-create/utils": "^2.5.9"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/xaboy/form-create/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "http://www.form-create.com",
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"gitHead": "b4e39524136df76ad16c92a3697fdfe94ac296a7"
|
|
43
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import {hasProperty} from '@form-create/utils/lib/type';
|
|
2
|
+
|
|
3
|
+
const NAME = 'fcGroup';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
name: NAME,
|
|
7
|
+
props: {
|
|
8
|
+
field: String,
|
|
9
|
+
rule: [Array, Object],
|
|
10
|
+
rules: Array,
|
|
11
|
+
expand: Number,
|
|
12
|
+
options: Object,
|
|
13
|
+
formCreate: Object,
|
|
14
|
+
button: {
|
|
15
|
+
type: Boolean,
|
|
16
|
+
default: true
|
|
17
|
+
},
|
|
18
|
+
max: {
|
|
19
|
+
type: Number,
|
|
20
|
+
default: 0
|
|
21
|
+
},
|
|
22
|
+
min: {
|
|
23
|
+
type: Number,
|
|
24
|
+
default: 0
|
|
25
|
+
},
|
|
26
|
+
value: {
|
|
27
|
+
type: Array,
|
|
28
|
+
default: () => []
|
|
29
|
+
},
|
|
30
|
+
disabled: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: false
|
|
33
|
+
},
|
|
34
|
+
syncDisabled: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: true
|
|
37
|
+
},
|
|
38
|
+
fontSize: {
|
|
39
|
+
type: Number,
|
|
40
|
+
default: 28
|
|
41
|
+
},
|
|
42
|
+
onBeforeRemove: {
|
|
43
|
+
type: Function,
|
|
44
|
+
default: () => {
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
onBeforeAdd: {
|
|
48
|
+
type: Function,
|
|
49
|
+
default: () => {
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
data() {
|
|
54
|
+
return {
|
|
55
|
+
len: 0,
|
|
56
|
+
cacheRule: {},
|
|
57
|
+
cacheValue: {},
|
|
58
|
+
}
|
|
59
|
+
},
|
|
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
|
+
},
|
|
71
|
+
watch: {
|
|
72
|
+
disabled(n) {
|
|
73
|
+
if (this.syncDisabled) {
|
|
74
|
+
const lst = this.cacheRule;
|
|
75
|
+
Object.keys(lst).forEach(k => {
|
|
76
|
+
lst[k].$f.disabled(n);
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
expand(n) {
|
|
81
|
+
let d = n - this.value.length;
|
|
82
|
+
if (d > 0) {
|
|
83
|
+
this.expandRule(d);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
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]);
|
|
100
|
+
}
|
|
101
|
+
this.subForm();
|
|
102
|
+
}
|
|
103
|
+
n.forEach((val, i) => {
|
|
104
|
+
this.setValue(keys[i], n[i]);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
methods: {
|
|
110
|
+
_value(v) {
|
|
111
|
+
return (v && hasProperty(v, this.field)) ? v[this.field] : v;
|
|
112
|
+
},
|
|
113
|
+
cache(k, val) {
|
|
114
|
+
this.cacheValue[k] = JSON.stringify(val);
|
|
115
|
+
},
|
|
116
|
+
input(value) {
|
|
117
|
+
this.$emit('input', value);
|
|
118
|
+
this.$emit('change', value);
|
|
119
|
+
},
|
|
120
|
+
formData(key, formData) {
|
|
121
|
+
const cacheRule = this.cacheRule;
|
|
122
|
+
const keys = Object.keys(cacheRule);
|
|
123
|
+
if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const value = keys.map(k => {
|
|
127
|
+
const data = key === k ? formData : {...this.cacheRule[k].$f.form};
|
|
128
|
+
const value = this.field ? data[this.field] || null : data;
|
|
129
|
+
this.cache(k, value);
|
|
130
|
+
return value;
|
|
131
|
+
});
|
|
132
|
+
this.input(value);
|
|
133
|
+
},
|
|
134
|
+
setValue(key, value) {
|
|
135
|
+
const field = this.field, $f = this.cacheRule[key].$f;
|
|
136
|
+
if (field) {
|
|
137
|
+
value = {[field]: this._value(value)};
|
|
138
|
+
}
|
|
139
|
+
if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.cache(key, value);
|
|
143
|
+
$f.coverValue(value || {});
|
|
144
|
+
},
|
|
145
|
+
addRule(i, emit) {
|
|
146
|
+
const rule = this.$formCreate.copyRules(this.formRule);
|
|
147
|
+
const options = this.options ? {...this.options} : {
|
|
148
|
+
submitBtn: false,
|
|
149
|
+
resetBtn: false,
|
|
150
|
+
};
|
|
151
|
+
options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});
|
|
152
|
+
this.$set(this.cacheRule, ++this.len, {rule, options});
|
|
153
|
+
if (emit) {
|
|
154
|
+
this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
add$f(i, key, $f) {
|
|
158
|
+
this.cacheRule[key].$f = $f;
|
|
159
|
+
this.subForm();
|
|
160
|
+
this.$nextTick(() => {
|
|
161
|
+
if (this.syncDisabled) {
|
|
162
|
+
$f.disabled(this.disabled);
|
|
163
|
+
}
|
|
164
|
+
this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));
|
|
165
|
+
});
|
|
166
|
+
},
|
|
167
|
+
subForm() {
|
|
168
|
+
this.$emit('fc.sub-form', Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));
|
|
169
|
+
},
|
|
170
|
+
removeRule(key, emit) {
|
|
171
|
+
const index = Object.keys(this.cacheRule).indexOf(key);
|
|
172
|
+
this.$delete(this.cacheRule, key);
|
|
173
|
+
this.$delete(this.cacheValue, key);
|
|
174
|
+
if (emit) {
|
|
175
|
+
this.$nextTick(() => this.$emit('remove', index));
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
add(i) {
|
|
179
|
+
if (this.disabled || false === this.onBeforeAdd(this.value)) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.addRule(i, true);
|
|
183
|
+
},
|
|
184
|
+
del(index, key) {
|
|
185
|
+
if (this.disabled || false === this.onBeforeRemove(this.value)) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this.removeRule(key, true);
|
|
189
|
+
this.subForm();
|
|
190
|
+
this.value.splice(index, 1);
|
|
191
|
+
this.input(this.value);
|
|
192
|
+
},
|
|
193
|
+
addIcon(key) {
|
|
194
|
+
return <AIcon key={`a${key}`} type="plus-circle"
|
|
195
|
+
style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}
|
|
196
|
+
on-click={this.add}/>;
|
|
197
|
+
},
|
|
198
|
+
delIcon(index, key) {
|
|
199
|
+
return <AIcon key={`d${key}`} type="minus-circle"
|
|
200
|
+
style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}
|
|
201
|
+
on-click={() => this.del(index, key)}/>;
|
|
202
|
+
},
|
|
203
|
+
makeIcon(total, index, key) {
|
|
204
|
+
if (this.$scopedSlots.button) {
|
|
205
|
+
return this.$scopedSlots.button({
|
|
206
|
+
total,
|
|
207
|
+
index,
|
|
208
|
+
vm: this,
|
|
209
|
+
key,
|
|
210
|
+
del: () => this.del(index, key),
|
|
211
|
+
add: this.add
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
if (index === 0) {
|
|
215
|
+
return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];
|
|
216
|
+
}
|
|
217
|
+
if (index >= this.min) {
|
|
218
|
+
return this.delIcon(index, key);
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
emitEvent(name, args, index, key) {
|
|
222
|
+
this.$emit(name, ...args, this.cacheRule[key].$f, index);
|
|
223
|
+
},
|
|
224
|
+
expandRule(n) {
|
|
225
|
+
for (let i = 0; i < n; i++) {
|
|
226
|
+
this.value.push(this.field ? null : {});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
created() {
|
|
231
|
+
const d = (this.expand || 0) - this.value.length;
|
|
232
|
+
if (d > 0) {
|
|
233
|
+
this.expandRule(d);
|
|
234
|
+
}
|
|
235
|
+
for (let i = 0; i < this.value.length; i++) {
|
|
236
|
+
this.addRule(i);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
render() {
|
|
240
|
+
const keys = Object.keys(this.cacheRule);
|
|
241
|
+
const button = this.button;
|
|
242
|
+
return keys.length === 0 ?
|
|
243
|
+
(this.$scopedSlots.default ? (this.$scopedSlots.default({
|
|
244
|
+
vm: this,
|
|
245
|
+
add: this.add
|
|
246
|
+
})) : <AIcon key={'a_def'} type="plus-circle"
|
|
247
|
+
style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}
|
|
248
|
+
on-click={this.add}/>) :
|
|
249
|
+
<div key={'con'}>{keys.map((key, index) => {
|
|
250
|
+
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
|
|
254
|
+
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
|
+
}}
|
|
260
|
+
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>
|
|
264
|
+
})}</div>
|
|
265
|
+
}
|
|
266
|
+
}
|
package/src/index.js
ADDED