@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 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
@@ -0,0 +1,6 @@
1
+ # @form-create/component-antdv-group
2
+
3
+ @form-create/ant-design-vue 内置组件
4
+
5
+ [GitHub](https://github.com/xaboy/form-create) | [文档](http://form-create.com/v2/) | [Document](http://form-create.com/en/v2/)
6
+
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
@@ -0,0 +1,3 @@
1
+ import Group from './component';
2
+
3
+ export default Group;