vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 4.43 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _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,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var _default2={name:"VxePulldown",mixins:[_size.default],props:{disabled:Boolean,placement:String,size:{type:String,default:function(){return _conf.default.size}},destroyOnClose:Boolean,transfer:Boolean},data:function(){return{inited:!1,panelIndex:0,panelStyle:null,panelPlacement:null,currentValue:null,visiblePanel:!1,animatVisible:!1,isActivated:!1}},created:function(){_tools.GlobalEvent.on(this,"mousewheel",this.handleGlobalMousewheelEvent),_tools.GlobalEvent.on(this,"mousedown",this.handleGlobalMousedownEvent),_tools.GlobalEvent.on(this,"blur",this.handleGlobalBlurEvent)},beforeDestroy:function(){var e=this.$refs.panel;e&&e.parentNode&&e.parentNode.removeChild(e)},destroyed:function(){_tools.GlobalEvent.off(this,"mousewheel"),_tools.GlobalEvent.off(this,"mousedown"),_tools.GlobalEvent.off(this,"blur")},render:function(e){var t,i,n=this.$scopedSlots,l=this.inited,o=this.vSize,s=this.destroyOnClose,a=this.transfer,r=this.isActivated,d=this.disabled,u=this.animatVisible,h=this.visiblePanel,f=this.panelStyle,c=this.panelPlacement,p=n.default,v=n.dropdown;return e("div",{class:["vxe-pulldown",(t={},_defineProperty(t,"size--".concat(o),o),_defineProperty(t,"is--visivle",h),_defineProperty(t,"is--disabled",d),_defineProperty(t,"is--active",r),t)]},[e("div",{ref:"content",class:"vxe-pulldown--content"},p?p.call(this,{$pulldown:this},e):[]),e("div",{ref:"panel",class:["vxe-table--ignore-clear vxe-pulldown--panel",(i={},_defineProperty(i,"size--".concat(o),o),_defineProperty(i,"is--transfer",a),_defineProperty(i,"animat--leave",u),_defineProperty(i,"animat--enter",h),i)],attrs:{"data-placement":c},style:f},v?!l||s&&!h&&!u?[]:v.call(this,{$pulldown:this},e):[])])},methods:{handleGlobalMousewheelEvent:function(e){var t=this.$refs,i=this.disabled,n=this.visiblePanel;i||n&&(_tools.DomTools.getEventTargetNode(e,t.panel).flag?this.updatePlacement():(this.hidePanel(),this.$emit("hide-panel",{$event:e})))},handleGlobalMousedownEvent:function(e){var t=this.$refs,i=this.$el,n=this.disabled,l=this.visiblePanel;n||(this.isActivated=_tools.DomTools.getEventTargetNode(e,i).flag||_tools.DomTools.getEventTargetNode(e,t.panel).flag,l&&!this.isActivated&&(this.hidePanel(),this.$emit("hide-panel",{$event:e})))},handleGlobalBlurEvent:function(e){this.visiblePanel&&(this.hidePanel(),this.$emit("hide-panel",{$event:e}))},updateZindex:function(){this.panelIndex<_tools.UtilTools.getLastZIndex()&&(this.panelIndex=_tools.UtilTools.nextZIndex())},isPanelVisible:function(){return this.visiblePanel},togglePanel:function(){return this.visiblePanel?this.hidePanel():this.showPanel()},showPanel:function(){var t=this;return this.inited||(this.inited=!0,this.transfer&&document.body.appendChild(this.$refs.panel)),new Promise(function(e){t.disabled?e(t.$nextTick()):(clearTimeout(t.hidePanelTimeout),t.isActivated=!0,t.animatVisible=!0,setTimeout(function(){t.visiblePanel=!0,t.updatePlacement(),setTimeout(function(){e(t.updatePlacement())},40)},10),t.updateZindex())})},hidePanel:function(){var t=this;return this.visiblePanel=!1,new Promise(function(e){t.animatVisible?t.hidePanelTimeout=setTimeout(function(){t.animatVisible=!1,e(t.$nextTick())},350):e(t.$nextTick())})},updatePlacement:function(){var _=this;return this.$nextTick().then(function(){var e=_.$refs,t=_.transfer,i=_.placement,n=_.panelIndex;if(_.visiblePanel){var l=e.panel,o=e.content;if(l&&o){var s=o.offsetHeight,a=o.offsetWidth,r=l.offsetHeight,d=l.offsetWidth,u={zIndex:n},h=_tools.DomTools.getAbsolutePos(o),f=h.boundingTop,c=h.boundingLeft,p=h.visibleHeight,v=h.visibleWidth,b="bottom";if(t){var m=c,P=f+s;"top"===i?(b="top",P=f-r):i||(p<P+r+5&&(b="top",P=f-r),P<5&&(b="bottom",P=f+s)),v<m+d+5&&(m-=m+d+5-v),m<5&&(m=5),Object.assign(u,{left:"".concat(m,"px"),top:"".concat(P,"px"),minWidth:"".concat(a,"px")})}else"top"===i?(b="top",u.bottom="".concat(s,"px")):i||p<f+s+r&&5<f-s-r&&(b="top",u.bottom="".concat(s,"px"));_.panelStyle=u,_.panelPlacement=b}}return _.$nextTick()})}}};exports.default=_default2;