vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 12.7 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=_interopRequireDefault(require("../../mixins/size")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_tools=require("../../tools"),_util=require("./util"),_dom=require("../../tools/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function ownKeys(t,e){var i,r=Object.keys(t);return Object.getOwnPropertySymbols&&(i=Object.getOwnPropertySymbols(t),e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)),r}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(i),!0).forEach(function(e){_defineProperty(t,e,i[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))})}return t}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,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 i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),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 t=_xeUtils.default.isArray(e)?[]:t}function callSlot(e,t,i,r){if(t){var n=e.$scopedSlots;if(_xeUtils.default.isString(t)&&(t=n[t]||null),_xeUtils.default.isFunction(t))return t.call(e,i,r)}return[]}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,i){var r=t.data,n=i.slots,l=i.field,o=i.itemRender,s=i.titlePrefix,a=i.titleSuffix,u=(0,_tools.isEnableConf)(o)?_vXETable.default.renderer.get(o.name):null,r={data:r,property:l,item:i,$form:t},l=[];return s&&l.push(s.message?e("vxe-tooltip",{props:{content:_tools.UtilTools.getFuncText(s.message),enterable:s.enterable,theme:s.theme}},[renderPrefixIcon(e,s)]):renderPrefixIcon(e,s)),l.push(e("span",{class:"vxe-form--item-title-label"},u&&u.renderItemTitle?u.renderItemTitle(o,r):n&&n.title?callSlot(t,n.title,r,e):_tools.UtilTools.getFuncText(i.title))),a&&l.push(a.message?e("vxe-tooltip",{props:{content:_tools.UtilTools.getFuncText(a.message),enterable:a.enterable,theme:a.theme}},[renderSuffixIcon(e,a)]):renderSuffixIcon(e,a)),l}function renderItems(I,w,e){var R=w._e,S=w.rules,$=w.data,P=w.collapseAll,U=w.validOpts,j=w.titleOverflow;return e.map(function(e,t){var i,r=e.slots,n=e.title,l=e.folding,o=e.visible,s=e.visibleMethod,a=e.field,u=e.collapseNode,c=e.itemRender,f=e.showError,d=e.errRule,m=e.className,p=e.titleOverflow,h=e.children,v=(0,_tools.isEnableConf)(c)?_vXETable.default.renderer.get(c.name):null,g=e.span||w.span,_=e.align||w.align,x=e.titleAlign||w.titleAlign,b=e.titleWidth||w.titleWidth,y=s,T=_xeUtils.default.isUndefined(p)||_xeUtils.default.isNull(p)?j:p,s="title"===T,p=!0===T||"tooltip"===T,T=s||p||"ellipsis"===T,O={data:$,property:a,item:e,$form:w};if(!1===o)return R();if(h&&0<h.length){h=renderItems(I,w,e.children);return h.length?I("div",{class:["vxe-form--gather vxe-row",e.id,g?"vxe-col--".concat(g," is--span"):"",m?_xeUtils.default.isFunction(m)?m(O):m:""]},h):R()}!y&&v&&v.itemVisibleMethod&&(y=v.itemVisibleMethod),!S||(E=S[a])&&(i=E.some(function(e){return e.required}));var E=[];r&&r.default?E=callSlot(w,r.default,O,I):v&&v.renderItemContent?E=v.renderItemContent.call(w,I,c,O):v&&v.renderItem?E=v.renderItem.call(w,I,c,O):a&&(E=["".concat(_xeUtils.default.get($,a))]);p=p?{mouseenter:function(e){w.triggerHeaderHelpEvent(e,O)},mouseleave:w.handleTargetLeaveEvent}:{};return I("div",{class:["vxe-form--item",e.id,g?"vxe-col--".concat(g," is--span"):null,m?_xeUtils.default.isFunction(m)?m(O):m:"",{"is--title":n,"is--required":i,"is--hidden":l&&P,"is--active":!y||y(O),"is--error":f}],key:t},[I("div",{class:"vxe-form--item-inner"},[n||r&&r.title?I("div",{class:["vxe-form--item-title",x?"align--".concat(x):null,{"is--ellipsis":T}],style:b?{width:isNaN(b)?b:"".concat(b,"px")}:null,attrs:{title:s?_tools.UtilTools.getFuncText(n):null},on:p},renderTitle(I,w,e)):null,I("div",{class:["vxe-form--item-content",_?"align--".concat(_):null]},E.concat([u?I("div",{class:"vxe-form--item-trigger-node",on:{click:w.toggleCollapseEvent}},[I("span",{class:"vxe-form--item-trigger-text"},P?_conf.default.i18n("vxe.form.unfolding"):_conf.default.i18n("vxe.form.folding")),I("i",{class:["vxe-form--item-trigger-icon",P?_conf.default.icon.FORM_FOLDING:_conf.default.icon.FORM_UNFOLDING]})]):null,d&&U.showMessage?I("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:{type:String,default:function(){return _conf.default.form.align}},titleAlign:{type:String,default:function(){return _conf.default.form.titleAlign}},titleWidth:[String,Number],titleColon:{type:Boolean,default:function(){return _conf.default.form.titleColon}},titleAsterisk:{type:Boolean,default:function(){return _conf.default.form.titleAsterisk}},titleOverflow:{type:[Boolean,String],default:null},items:Array,rules:Object,preventSubmit:{type:Boolean,default:function(){return _conf.default.form.preventSubmit}},validConfig:Object},data:function(){return{collapseAll:!0,staticItems:[],formItems:[],tooltipTimeout:null,tooltipActive:!1,tooltipStore:{item:null,visible:!1}}},provide:function(){return{$xeform:this}},computed:{validOpts:function(){return Object.assign({},_conf.default.form.validConfig,this.validConfig)},tooltipOpts:function(){var e=Object.assign({leaveDelay:300},_conf.default.form.tooltipConfig,this.tooltipConfig);return e.enterable&&(e.leaveMethod=this.handleTooltipLeaveMethod),e}},created:function(){var t=this;this.$nextTick(function(){var e=t.items;e&&t.loadItem(e)})},watch:{staticItems:function(e){this.formItems=e},items:function(e){this.loadItem(e)}},render:function(e){var t,i=this._e,r=this.loading,n=this.vSize,l=this.tooltipOpts,o=this.formItems,s=_vXETable.default._tooltip;return e("form",{class:["vxe-form",(_defineProperty(t={},"size--".concat(n),n),_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}},[e("div",{class:"vxe-form--wrapper vxe-row"},renderItems(e,this,o)),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"})]),s?e("vxe-tooltip",_objectSpread({ref:"tooltip"},l)):i()])},methods:{loadItem:function(e){var t,i=this;return"development"===process.env.NODE_ENV&&(t=this.$scopedSlots,e.forEach(function(e){e.slots&&_xeUtils.default.each(e.slots,function(e){_xeUtils.default.isFunction(e)||t[e]||_tools.UtilTools.error("vxe.error.notSlot",[e])})})),this.staticItems=e.map(function(e){return(0,_util.createItem)(i,e)}),this.$nextTick()},getItems:function(){var t=[];return _xeUtils.default.eachTree(this.formItems,function(e){t.push(e)},{children:"children"}),t},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 i=this;t.preventDefault(),this.preventSubmit||this.beginValidate().then(function(){i.$emit("submit",{data:i.data,$form:i,$event:t})}).catch(function(e){i.$emit("submit-invalid",{data:i.data,errMap:e,$form:i,$event:t})})},reset:function(){var n=this,l=this.data;return l&&this.getItems().forEach(function(e){var t=e.field,i=e.resetValue,r=e.itemRender;(0,_tools.isEnableConf)(r)&&((r=_vXETable.default.renderer.get(r.name))&&r.itemResetMethod?r.itemResetMethod({data:l,property:t,item:e,$form:n}):t&&_xeUtils.default.set(l,t,null===i?getResetValue(_xeUtils.default.get(l,t),void 0):i))}),this.clearValidate()},resetEvent:function(e){e.preventDefault(),this.reset(),this.$emit("reset",{data:this.data,$form:this,$event:e})},handleTooltipLeaveMethod:function(){var e=this,t=this.tooltipOpts;return setTimeout(function(){e.tooltipActive||e.closeTooltip()},t.leaveDelay),!1},closeTooltip:function(){var e=this.tooltipStore,t=this.$refs.tooltip;return e.visible&&(Object.assign(e,{item:null,visible:!1}),t&&t.close()),this.$nextTick()},triggerHeaderHelpEvent:function(e,t){var i=t.item,r=this.tooltipStore,n=this.$refs.tooltip,l=e.currentTarget,t=(l.textContent||"").trim(),e=l.scrollWidth>l.clientWidth;clearTimeout(this.tooltipTimeout),this.tooltipActive=!0,this.closeTooltip(),t&&e&&(Object.assign(r,{item:i,visible:!0}),n&&n.open(l,t))},handleTargetLeaveEvent:function(){var t=this,e=this.tooltipOpts;this.tooltipActive=!1,e.enterable?this.tooltipTimeout=setTimeout(function(){var e=t.$refs.tooltip;e&&!e.isHover&&t.closeTooltip()},e.leaveDelay):this.closeTooltip()},clearValidate:function(t){var e,i=this.getItems();return t?(e=i.find(function(e){return e.field===t}))&&(e.showError=!1):i.forEach(function(e){e.showError=!1}),this.$nextTick()},validate:function(e){return this.beginValidate("",e)},beginValidate:function(e,t){var n=this,l=this.data,i=this.rules,r=this.validOpts,o={},s=[],a=[],u=this.getItems();return this.clearValidate(),clearTimeout(this.showErrTime),l&&i?(u.forEach(function(i){var r=i.field;r&&a.push(n.validItemRules(e||"all",r).then(function(){i.errRule=null}).catch(function(e){var t=e.rule,e={rule:t,rules:e.rules,data:l,property:r,$form:n};return o[r]||(o[r]=[]),o[r].push(e),s.push(r),i.errRule=t,Promise.reject(e)}))}),Promise.all(a).then(function(){t&&t()}).catch(function(){return n.showErrTime=setTimeout(function(){u.forEach(function(e){e.errRule&&(e.showError=!0)})},20),t&&t(o),r.autoPos&&n.$nextTick(function(){n.handleFocus(s)}),Promise.reject(o)})):(t&&t(),Promise.resolve())},validItemRules:function(r,n,e){var l,o,s=this,a=this.data,t=this.rules,u=[],c=[];return n&&t&&((l=_xeUtils.default.get(t,n))&&(o=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(a,n):e,l.forEach(function(t){var e,i;"all"!==r&&t.trigger&&r!==t.trigger||(_xeUtils.default.isFunction(t.validator)?(i=t.validator({itemValue:o,rule:t,rules:l,data:a,property:n,$form:s}))&&(_xeUtils.default.isError(i)?u.push(new Rule({type:"custom",trigger:t.trigger,message:i.message,rule:new Rule(t)})):i.catch&&c.push(i.catch(function(e){u.push(new Rule({type:"custom",trigger:t.trigger,message:(e||t).message,rule:new Rule(t)}))}))):(i=(e="number"===t.type)?_xeUtils.default.toNumber(o):_xeUtils.default.getSize(o),null==o||""===o?t.required&&u.push(new Rule(t)):(e&&isNaN(o)||!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(o))&&u.push(new Rule(t))))}))),Promise.all(c).then(function(){if(u.length){var e={rules:u,rule:u[0]};return Promise.reject(e)}})},handleFocus:function(e){var l=this.$el,o=this.getItems();e.some(function(t){var e=o.find(function(e){return e.field===t});if(e&&(0,_tools.isEnableConf)(e.itemRender)){var i,r=e.itemRender,n=_vXETable.default.renderer.get(r.name);if(r.autofocus&&(i=l.querySelector(".".concat(e.id," ").concat(r.autofocus))),!i&&n&&n.autofocus&&(i=l.querySelector(".".concat(e.id," ").concat(n.autofocus))),i)return i.focus(),_dom.browse.msie&&((i=i.createTextRange()).collapse(!1),i.select()),!0}})},updateStatus:function(e,t){var i=this,r=e.property;r&&this.validItemRules("change",r,t).then(function(){i.clearValidate(r)}).catch(function(e){var t=e.rule,e=i.getItems().find(function(e){return e.field===r});e&&(e.showError=!0,e.errRule=t)})}}};exports.default=_default2;