UNPKG

vxe-table

Version:

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

1 lines 6.29 kB
"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")),_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,className:String,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 n=this,t=this.$scopedSlots,i=this.$listeners,o=this.className,s=this.inited,a=this.type,r=this.destroyOnClose,l=this.isFormBtn,u=this.status,c=this.btnType,d=this.vSize,f=this.name,h=this.disabled,p=this.loading,m=this.showPanel,v=this.animatVisible,b=this.panelPlacement,_=t.dropdowns;return _?e("div",o,{class:["vxe-button--dropdown",(_defineProperty(t={},"size--".concat(d),d),_defineProperty(t,"is--active",m),t)]},[e("button",{ref:"xBtn",class:["vxe-button","type--".concat(c),(_defineProperty(t={},"size--".concat(d),d),_defineProperty(t,"theme--".concat(u),u),_defineProperty(t,"is--round",this.round),_defineProperty(t,"is--circle",this.circle),_defineProperty(t,"is--disabled",h||p),_defineProperty(t,"is--loading",p),t)],attrs:{name:f,type:l?a:"button",disabled:h||p},on:Object.assign({mouseenter:this.mouseenterTargetEvent,mouseleave:this.mouseleaveEvent},_xeUtils.default.objectMap(i,function(e,t){return function(e){return n.$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",(_defineProperty(t={},"size--".concat(d),d),_defineProperty(t,"animat--leave",v),_defineProperty(t,"animat--enter",m),t)],attrs:{placement:b},style:this.panelStyle},s?[e("div",{class:"vxe-button--dropdown-wrapper",on:{click:this.clickDropdownEvent,mouseenter:this.mouseenterEvent,mouseleave:this.mouseleaveEvent}},r&&!m?[]:_.call(this,{},e))]:null)]):e("button",{ref:"xBtn",class:["vxe-button","type--".concat(c),o,(_defineProperty(o={},"size--".concat(d),d),_defineProperty(o,"theme--".concat(u),u),_defineProperty(o,"is--round",this.round),_defineProperty(o,"is--circle",this.circle),_defineProperty(o,"is--disabled",h||p),_defineProperty(o,"is--loading",p),o)],attrs:{name:f,type:l?a:"button",disabled:h||p},on:_xeUtils.default.objectMap(i,function(e,t){return function(e){return n.$emit(t,{$event:e})}})},this.renderContent(e))},methods:{renderContent:function(e){var t=this.$scopedSlots,n=this.content,i=this.icon,o=[];return this.loading?o.push(e("i",{class:["vxe-button--loading-icon",_conf.default.icon.BUTTON_LOADING]})):i&&o.push(e("i",{class:["vxe-button--icon",i]})),t.default?o.push(e("span",{class:"vxe-button--content"},t.default.call(this))):n&&o.push(e("span",{class:"vxe-button--content"},[_tools.UtilTools.getFuncText(n)])),o},handleGlobalMousewheelEvent:function(e){this.showPanel&&!_tools.DomTools.getEventTargetNode(e,this.$refs.panel).flag&&this.closePanel()},updateZindex:function(){this.panelIndex<_tools.UtilTools.getLastZIndex()&&(this.panelIndex=_tools.UtilTools.nextZIndex())},clickDropdownEvent:function(e){var t=this,n=e.currentTarget,i=this.$refs.panel,o=_tools.DomTools.getEventTargetNode(e,n,"vxe-button"),n=o.flag,o=o.targetElem;n&&(i&&(i.dataset.active="N"),this.showPanel=!1,setTimeout(function(){i&&"Y"===i.dataset.active||(t.animatVisible=!1)},350),this.$emit("dropdown-click",{name:o.getAttribute("name"),$event:e}))},mouseenterTargetEvent:function(){var e=this,t=this.$refs.panel;t.dataset.active="Y",this.inited||(this.inited=!0,this.transfer&&document.body.appendChild(t)),this.showTime=setTimeout(function(){"Y"===t.dataset.active?e.mouseenterEvent():e.animatVisible=!1},250)},mouseenterEvent:function(){var e=this,t=this.$refs.panel;t.dataset.active="Y",this.animatVisible=!0,setTimeout(function(){"Y"===t.dataset.active&&(e.showPanel=!0,e.updateZindex(),e.updatePlacement(),setTimeout(function(){e.showPanel&&e.updatePlacement()},50))},20)},mouseleaveEvent:function(){this.closePanel()},closePanel:function(){var e=this,t=this.$refs.panel;clearTimeout(this.showTime),t?(t.dataset.active="N",setTimeout(function(){"Y"!==t.dataset.active&&(e.showPanel=!1,setTimeout(function(){"Y"!==t.dataset.active&&(e.animatVisible=!1)},350))},100)):(this.animatVisible=!1,this.showPanel=!1)},updatePlacement:function(){var f=this;return this.$nextTick().then(function(){var e=f.$refs,t=f.transfer,n=f.placement,i=f.panelIndex,o=e.xBtn,s=e.panel;if(s&&o){var a=o.offsetHeight,r=o.offsetWidth,l=s.offsetHeight,u=s.offsetWidth,c={zIndex:i},d=_tools.DomTools.getAbsolutePos(o),e=d.boundingTop,s=d.boundingLeft,i=d.visibleHeight,o=d.visibleWidth,d="bottom";return t?(t=e+a,"top"===n?(d="top",t=e-l):n||(i<t+l+5&&(d="top",t=e-l),t<5&&(d="bottom",t=e+a)),o<(s=s+r-u)+u+5&&(s-=s+u+5-o),s<5&&(s=5),Object.assign(c,{left:"".concat(s,"px"),right:"auto",top:"".concat(t,"px"),minWidth:"".concat(r,"px")})):"top"===n?(d="top",c.bottom="".concat(a,"px")):n||i<e+a+l&&5<e-a-l&&(d="top",c.bottom="".concat(a,"px")),f.panelStyle=c,f.panelPlacement=d,f.$nextTick()}})},focus:function(){return this.$el.focus(),this.$nextTick()},blur:function(){return this.$el.blur(),this.$nextTick()}}};exports.default=_default2;