UNPKG

6.39 kBJavaScriptView Raw
1"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,o=this.$listeners,i=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,p=this.disabled,h=this.loading,m=this.showPanel,v=this.animatVisible,b=this.panelPlacement,_=t.dropdowns;return _?e("div",{class:["vxe-button--dropdown",i,(_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",p||h),_defineProperty(t,"is--loading",h),t)],attrs:{name:f,type:l?a:"button",disabled:p||h},on:Object.assign({mouseenter:this.mouseenterTargetEvent,mouseleave:this.mouseleaveEvent},_xeUtils.default.objectMap(o,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:{mousedown:this.mousedownDropdownEvent,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),i,(_defineProperty(i={},"size--".concat(d),d),_defineProperty(i,"theme--".concat(u),u),_defineProperty(i,"is--round",this.round),_defineProperty(i,"is--circle",this.circle),_defineProperty(i,"is--disabled",p||h),_defineProperty(i,"is--loading",h),i)],attrs:{name:f,type:l?a:"button",disabled:p||h},on:_xeUtils.default.objectMap(o,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,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.closePanel()},updateZindex:function(){this.panelIndex<_tools.UtilTools.getLastZIndex()&&(this.panelIndex=_tools.UtilTools.nextZIndex())},mousedownDropdownEvent:function(e){0===e.button&&e.stopPropagation()},clickDropdownEvent:function(e){var t=this,n=e.currentTarget,o=this.$refs.panel,i=_tools.DomTools.getEventTargetNode(e,n,"vxe-button"),n=i.flag,i=i.targetElem;n&&(o&&(o.dataset.active="N"),this.showPanel=!1,setTimeout(function(){o&&"Y"===o.dataset.active||(t.animatVisible=!1)},350),this.$emit("dropdown-click",{name:i.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,o=f.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),e=d.boundingTop,s=d.boundingLeft,o=d.visibleHeight,i=d.visibleWidth,d="bottom";return t?(t=e+a,"top"===n?(d="top",t=e-l):n||(o<t+l+5&&(d="top",t=e-l),t<5&&(d="bottom",t=e+a)),i<(s=s+r-u)+u+5&&(s-=s+u+5-i),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||o<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;
\No newline at end of file