UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 9.57 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_conf=_interopRequireDefault(require("../../conf")),_size=_interopRequireDefault(require("../../mixins/size")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_tools=require("../../tools"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}var Rule=function(){function t(e){_classCallCheck(this,t),Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.min,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}return _createClass(t,[{key:"message",get:function(){return _tools.UtilTools.getFuncText(this.$options.message)}}]),t}();function getResetValue(e,t){return _ctor.default.isArray(e)&&(t=[]),t}function renderPrefixIcon(e,t){return e("span",{class:"vxe-form--item-title-prefix"},[e("i",{class:t.icon||_conf.default.icon.FORM_PREFIX})])}function renderSuffixIcon(e,t){return e("span",{class:"vxe-form--item-title-suffix"},[e("i",{class:t.icon||_conf.default.icon.FORM_SUFFIX})])}function renderTitle(e,t,r){var i=t.data,n=r.slots,o=r.field,l=r.itemRender,a=r.titlePrefix,s=r.titleSuffix,u=l?_vXETable.default.renderer.get(l.name):null,c={data:i,property:o,item:r,$form:t},f=[];return a&&f.push(a.message?e("vxe-tooltip",{props:{content:_tools.UtilTools.getFuncText(a.message),enterable:a.enterable,theme:a.theme}},[renderPrefixIcon(e,a)]):renderPrefixIcon(e,a)),f.push(e("span",{class:"vxe-form--item-title-label"},u&&u.renderItemTitle?u.renderItemTitle(l,c):n&&n.title?n.title.call(t,c):_tools.UtilTools.getFuncText(r.title))),s&&f.push(s.message?e("vxe-tooltip",{props:{content:_tools.UtilTools.getFuncText(s.message),enterable:s.enterable,theme:s.theme}},[renderSuffixIcon(e,s)]):renderSuffixIcon(e,s)),f}function renderItems(R,y){var T=y._e,E=y.rules,e=y.formItems,$=y.data,w=y.collapseAll;return e.map(function(e,t){var r,i=e.slots,n=e.title,o=e.folding,l=e.visible,a=e.visibleMethod,s=e.field,u=e.collapseNode,c=e.itemRender,f=e.showError,d=e.errRule,m=c?_vXETable.default.renderer.get(c.name):null,h=e.span||y.span,v=e.align||y.align,p=e.titleAlign||y.titleAlign,g=e.titleWidth||y.titleWidth,_=a,x={data:$,property:s,item:e,$form:y};if(!1===l)return T();if(!_&&m&&m.itemVisibleMethod&&(_=m.itemVisibleMethod),E){var b=E[s];b&&(r=b.some(function(e){return e.required}))}var I=[];return m&&m.renderItemContent?I=m.renderItemContent.call(y,R,c,x):m&&m.renderItem?I=m.renderItem.call(y,R,c,x):i&&i.default&&(I=i.default.call(y,x,R)),R("div",{class:["vxe-form--item",e.id,h?"vxe-col--".concat(h," is--span"):null,{"is--title":n,"is--required":r,"is--hidden":o&&w,"is--active":!_||_(x),"is--error":f}],key:t},[R("div",{class:"vxe-form--item-inner"},[n?R("div",{class:["vxe-form--item-title",p?"align--".concat(p):null],style:g?{width:isNaN(g)?g:"".concat(g,"px")}:null},renderTitle(R,y,e)):null,R("div",{class:["vxe-form--item-content",v?"align--".concat(v):null]},I.concat([u?R("div",{class:"vxe-form--item-trigger-node",on:{click:y.toggleCollapseEvent}},[R("span",{class:"vxe-form--item-trigger-text"},w?_conf.default.i18n("vxe.form.unfolding"):_conf.default.i18n("vxe.form.folding")),R("i",{class:["vxe-form--item-trigger-icon",w?_conf.default.icon.FORM_FOLDING:_conf.default.icon.FORM_UNFOLDING]})]):null,d?R("div",{class:"vxe-form--item-valid",style:d.maxWidth?{width:"".concat(d.maxWidth,"px")}:null},d.message):null]))])])})}var _default2={name:"VxeForm",mixins:[_size.default],props:{loading:Boolean,data:Object,size:{type:String,default:function(){return _conf.default.form.size||_conf.default.size}},span:[String,Number],align:String,titleAlign:String,titleWidth:[String,Number],titleColon:{type:Boolean,default:function(){return _conf.default.form.titleColon}},titleAsterisk:{type:Boolean,default:function(){return _conf.default.form.titleAsterisk}},items:Array,rules:Object,preventSubmit:{type:Boolean,default:function(){return _conf.default.form.preventSubmit}},validConfig:Object},data:function(){return{collapseAll:!0,staticItems:[],formItems:[]}},provide:function(){return{$xeform:this}},computed:{validOpts:function(){return Object.assign({},_conf.default.form.validConfig,this.validConfig)}},created:function(){var e=this.items;e&&this.loadItem(e)},watch:{staticItems:function(e){this.formItems=e},items:function(e){this.loadItem(e)}},render:function(e){var t,r=this.loading,i=this.vSize;return e("form",{class:["vxe-form","vxe-row",(t={},_defineProperty(t,"size--".concat(i),i),_defineProperty(t,"is--colon",this.titleColon),_defineProperty(t,"is--asterisk",this.titleAsterisk),_defineProperty(t,"is--loading",r),t)],on:{submit:this.submitEvent,reset:this.resetEvent}},renderItems(e,this).concat([e("div",{class:"vxe-form-slots",ref:"hideItem"},this.$slots.default),e("div",{class:["vxe-loading",{"is--visible":r}]},[e("div",{class:"vxe-loading--spinner"})])]))},methods:{loadItem:function(e){var t=this,i=this.$scopedSlots;return e.forEach(function(e){e.slots&&_ctor.default.each(e.slots,function(e,t,r){_ctor.default.isFunction(e)||(i[e]?r[t]=i[e]:(r[t]=null,_tools.UtilTools.error("vxe.error.notSlot",[e])))})}),this.staticItems=e.map(function(e){return(0,_util.createItem)(t,e)}),this.$nextTick()},getItems:function(){return this.formItems.slice(0)},toggleCollapse:function(){return this.collapseAll=!this.collapseAll,this.$nextTick()},toggleCollapseEvent:function(e){this.toggleCollapse(),this.$emit("toggle-collapse",{collapse:!this.collapseAll,data:this.data,$form:this,$event:e},e)},submitEvent:function(t){var r=this;t.preventDefault(),this.preventSubmit||this.beginValidate().then(function(){r.$emit("submit",{data:r.data,$form:r,$event:t})}).catch(function(e){r.$emit("submit-invalid",{data:r.data,errMap:e,$form:r,$event:t})})},reset:function(){var o=this,l=this.data,e=this.formItems;return l&&e.forEach(function(e){var t=e.field,r=e.resetValue,i=e.itemRender;if(t){_ctor.default.set(l,t,null===r?getResetValue(_ctor.default.get(l,t),void 0):r);var n=i?_vXETable.default.renderer.get(i.name):null;n&&n.itemResetMethod&&n.itemResetMethod({data:l,property:t,item:e,$form:o})}}),this.clearValidate()},resetEvent:function(e){e.preventDefault(),this.reset(),this.$emit("reset",{data:this.data,$form:this,$event:e})},clearValidate:function(t){var e=this.formItems;if(t){var r=e.find(function(e){return e.field===t});r&&(r.showError=!1)}else e.forEach(function(e){e.showError=!1});return this.$nextTick()},validate:function(e){return this.beginValidate(e)},beginValidate:function(e,t){var o=this,l=this.data,r=this.rules,i=this.formItems,n=this.validOpts,a={},s=[],u=[];return this.clearValidate(),clearTimeout(this.showErrTime),l&&r?(i.forEach(function(i){var n=i.field;n&&u.push(o.validItemRules(e||"all",n).then(function(){i.errRule=null}).catch(function(e){var t=e.rule,r={rule:t,rules:e.rules,data:l,property:n,$form:o};return a[n]||(a[n]=[]),a[n].push(r),s.push(n),i.errRule=t,Promise.reject(r)}))}),Promise.all(u).then(function(){t&&t()}).catch(function(){return o.showErrTime=setTimeout(function(){i.forEach(function(e){e.errRule&&(e.showError=!0)})},20),t&&t(a),!1!==n.autoPos&&o.$nextTick(function(){o.handleFocus(s)}),Promise.reject(a)})):(t&&t(),Promise.resolve())},validItemRules:function(n,o,e){var l=this,a=this.data,t=this.rules,s=[],u=[];if(o&&t){var c=_ctor.default.get(t,o);if(c){var f=_ctor.default.isUndefined(e)?_ctor.default.get(a,o):e;c.forEach(function(t){if("all"===n||!t.trigger||n===t.trigger)if(_ctor.default.isFunction(t.validator)){var e=t.validator({itemValue:f,rule:t,rules:c,data:a,property:o,$form:l});e&&(_ctor.default.isError(e)?s.push(new Rule({type:"custom",trigger:t.trigger,message:e.message,rule:new Rule(t)})):e.catch&&u.push(e.catch(function(e){s.push(new Rule({type:"custom",trigger:t.trigger,message:e?e.message:t.message,rule:new Rule(t)}))})))}else{var r="number"===t.type,i=r?_ctor.default.toNumber(f):_ctor.default.getSize(f);null==f||""===f?t.required&&s.push(new Rule(t)):(r&&isNaN(f)||!isNaN(t.min)&&i<parseFloat(t.min)||!isNaN(t.max)&&i>parseFloat(t.max)||t.pattern&&!(t.pattern.test?t.pattern:new RegExp(t.pattern)).test(f))&&s.push(new Rule(t))}})}}return Promise.all(u).then(function(){if(s.length){var e={rules:s,rule:s[0]};return Promise.reject(e)}})},handleFocus:function(e){var l=this.$el,a=this.formItems;e.some(function(t){var e=a.find(function(e){return e.field===t});if(e&&e.itemRender){var r,i=e.itemRender,n=_vXETable.default.renderer.get(i.name);if(i.autofocus&&(r=l.querySelector(".".concat(e.id," ").concat(i.autofocus))),!r&&n&&n.autofocus&&(r=l.querySelector(".".concat(e.id," ").concat(n.autofocus))),r){if(r.focus(),_tools.DomTools.browse.msie){var o=r.createTextRange();o.collapse(!1),o.select()}return!0}}})},updateStatus:function(e,t){var i=this,n=e.property;n&&this.validItemRules("change",n,t).then(function(){i.clearValidate(n)}).catch(function(e){var t=e.rule,r=i.formItems.find(function(e){return e.field===n});r&&(r.showError=!0,r.errRule=t)})}}};exports.default=_default2;