UNPKG

vxe-table

Version:

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

1 lines 5.87 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")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _default2={name:"VxeButton",mixins:[_size.default],props:{type:String,size:{type:String,default:function(){return _conf.default.button.size||_conf.default.size}},name:[String,Number],content:String,placement:String,status:String,icon:String,round:Boolean,circle:Boolean,disabled:Boolean,loading:Boolean,destroyOnClose:Boolean,transfer:{type:Boolean,default:function(){return _conf.default.button.transfer}}},data:function(){return{inited:!1,showPanel:!1,animatVisible:!1,panelIndex:0,panelStyle:null,panelPlacement:null}},computed:{isText:function(){return"text"===this.type},isFormBtn:function(){return-1<["submit","reset","button"].indexOf(this.type)},btnType:function(){return this.isText?this.type:"button"}},created:function(){_tools.GlobalEvent.on(this,"mousewheel",this.handleGlobalMousewheelEvent)},beforeDestroy:function(){var e=this.$refs.panel;e&&e.parentNode&&e.parentNode.removeChild(e)},destroyed:function(){_tools.GlobalEvent.off(this,"mousewheel")},render:function(e){var t,n,o,i,s=this,a=this.$scopedSlots,r=this.$listeners,l=this.inited,u=this.type,c=this.destroyOnClose,d=this.isFormBtn,f=this.status,p=this.btnType,h=this.vSize,m=this.name,v=this.disabled,b=this.loading,_=this.showPanel,x=this.animatVisible,y=this.panelPlacement,P=a.dropdowns;return P?e("div",{class:["vxe-button--dropdown",(t={},_defineProperty(t,"size--".concat(h),h),_defineProperty(t,"is--active",_),t)]},[e("button",{ref:"xBtn",class:["vxe-button","type--".concat(p),(n={},_defineProperty(n,"size--".concat(h),h),_defineProperty(n,"theme--".concat(f),f),_defineProperty(n,"is--round",this.round),_defineProperty(n,"is--circle",this.circle),_defineProperty(n,"is--disabled",v||b),_defineProperty(n,"is--loading",b),n)],attrs:{name:m,type:d?u:"button",disabled:v||b},on:Object.assign({mouseenter:this.mouseenterEvent,mouseleave:this.mouseleaveEvent},_ctor.default.objectMap(r,function(e,t){return function(e){return s.$emit(t,{$event:e})}}))},this.renderContent(e).concat([e("i",{class:"vxe-button--dropdown-arrow ".concat(_conf.default.icon.BUTTON_DROPDOWN)})])),e("div",{ref:"panel",class:["vxe-button--dropdown-panel",(o={},_defineProperty(o,"size--".concat(h),h),_defineProperty(o,"animat--leave",x),_defineProperty(o,"animat--enter",_),o)],attrs:{"data-placement":y},style:this.panelStyle},l?[e("div",{class:"vxe-button--dropdown-wrapper",on:{click:this.clickDropdownEvent,mouseenter:this.mouseenterEvent,mouseleave:this.mouseleaveEvent}},c&&!_?[]:P.call(this,{},e))]:null)]):e("button",{ref:"xBtn",class:["vxe-button","type--".concat(p),(i={},_defineProperty(i,"size--".concat(h),h),_defineProperty(i,"theme--".concat(f),f),_defineProperty(i,"is--round",this.round),_defineProperty(i,"is--circle",this.circle),_defineProperty(i,"is--disabled",v||b),_defineProperty(i,"is--loading",b),i)],attrs:{name:m,type:d?u:"button",disabled:v||b},on:_ctor.default.objectMap(r,function(e,t){return function(e){return s.$emit(t,{$event:e})}})},this.renderContent(e))},methods:{renderContent:function(e){var t=this.$scopedSlots,n=this.content,o=this.icon,i=[];return this.loading?i.push(e("i",{class:["vxe-button--loading-icon",_conf.default.icon.BUTTON_LOADING]})):o&&i.push(e("i",{class:["vxe-button--icon",o]})),t.default?i.push(e("span",{class:"vxe-button--content"},t.default.call(this))):n&&i.push(e("span",{class:"vxe-button--content"},[_tools.UtilTools.getFuncText(n)])),i},handleGlobalMousewheelEvent:function(e){this.showPanel&&!_tools.DomTools.getEventTargetNode(e,this.$refs.panel).flag&&this.updatePlacement()},updateZindex:function(){this.panelIndex<_tools.UtilTools.getLastZIndex()&&(this.panelIndex=_tools.UtilTools.nextZIndex())},clickDropdownEvent:function(e){var t=this,n=e.currentTarget,o=this.$refs.panel,i=_tools.DomTools.getEventTargetNode(e,n,"vxe-button"),s=i.flag,a=i.targetElem;s&&(o.dataset.active="N",this.showPanel=!1,setTimeout(function(){"Y"!==o.dataset.active&&(t.animatVisible=!1)},350),this.$emit("dropdown-click",{name:a.getAttribute("name"),$event:e}))},mouseenterEvent:function(){var e=this,t=this.$refs.panel;this.inited||(this.inited=!0,this.transfer&&document.body.appendChild(t)),t.dataset.active="Y",this.animatVisible=!0,setTimeout(function(){"Y"===t.dataset.active&&(e.showPanel=!0,e.updateZindex(),e.updatePlacement())},10)},mouseleaveEvent:function(){var e=this,t=this.$refs.panel;t.dataset.active="N",setTimeout(function(){"Y"!==t.dataset.active&&(e.showPanel=!1,setTimeout(function(){"Y"!==t.dataset.active&&(e.animatVisible=!1)},350))},100)},updatePlacement:function(){var x=this;return this.$nextTick().then(function(){var e=x.$refs,t=x.transfer,n=x.placement,o=x.panelIndex,i=e.xBtn,s=e.panel;if(s&&i){var a=i.offsetHeight,r=i.offsetWidth,l=s.offsetHeight,u=s.offsetWidth,c={zIndex:o},d=_tools.DomTools.getAbsolutePos(i),f=d.boundingTop,p=d.boundingLeft,h=d.visibleHeight,m=d.visibleWidth,v="bottom";if(t){var b=p,_=f+a;"top"===n?(v="top",_=f-l):n||(h<_+l+5&&(v="top",_=f-l),_<5&&(v="bottom",_=f+a)),m<b+u+5&&(b-=b+u+5-m),b<5&&(b=5),Object.assign(c,{left:"".concat(b,"px"),top:"".concat(_,"px"),minWidth:"".concat(r,"px")})}else"top"===n?(v="top",c.bottom="".concat(a,"px")):n||h<f+a+l&&5<f-a-l&&(v="top",c.bottom="".concat(a,"px"));return x.panelStyle=c,x.panelPlacement=v,x.$nextTick()}})},focus:function(){return this.$el.focus(),this.$nextTick()},blur:function(){return this.$el.blur(),this.$nextTick()}}};exports.default=_default2;