UNPKG

vxe-table

Version:

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

1 lines 4.84 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,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function updateTipStyle(e){var t,i,o,n,s,r,l,a=e.$el,u=e.tipTarget,c=e.tipStore;u&&(t=(r=_tools.DomTools.getDomNode()).scrollTop,i=r.scrollLeft,o=r.visibleWidth,n=(l=_tools.DomTools.getAbsolutePos(u)).top,s=l.left,e=a.offsetHeight,r=a.offsetWidth,l=n-e-6,i+o<(a=Math.max(6,s+Math.floor((u.offsetWidth-r)/2)))+r+6&&(a=i+o-r-6),n-e<t+6&&(c.placement="bottom",l=n+u.offsetHeight+6),c.style.top="".concat(l,"px"),c.style.left="".concat(a,"px"),c.arrowStyle.left="".concat(s-a+u.offsetWidth/2,"px"))}var _default2={name:"VxeTooltip",mixins:[_size.default],props:{value:Boolean,size:{type:String,default:function(){return _conf.default.tooltip.size||_conf.default.size}},trigger:{type:String,default:function(){return _conf.default.tooltip.trigger}},theme:{type:String,default:function(){return _conf.default.tooltip.theme}},content:[String,Number],zIndex:[String,Number],isArrow:{type:Boolean,default:!0},enterable:Boolean,leaveDelay:{type:Number,default:_conf.default.tooltip.leaveDelay},leaveMethod:Function},data:function(){return{isUpdate:!1,isHover:!1,visible:!1,message:"",tipTarget:null,tipZindex:0,tipStore:{style:{},placement:"",arrowStyle:null}}},watch:{content:function(e){this.message=e},value:function(e){this.isUpdate||this[e?"open":"close"](),this.isUpdate=!1}},mounted:function(){var i,o=this.$el,e=this.trigger,t=this.content,n=this.value,s=o.parentNode;this.message=t,this.tipZindex=_tools.UtilTools.nextZIndex(),_xeUtils.default.arrayEach(o.children,function(e,t){1<t&&(s.insertBefore(e,o),i=i||e)}),s.removeChild(o),(this.target=i)&&("hover"===e?(i.onmouseleave=this.targetMouseleaveEvent,i.onmouseenter=this.targetMouseenterEvent):"click"===e&&(i.onclick=this.clickEvent)),n&&this.open()},beforeDestroy:function(){var e=this.$el,t=this.target,i=this.trigger,o=e.parentNode;o&&o.removeChild(e),t&&("hover"===i?(t.onmouseenter=null,t.onmouseleave=null):"click"===i&&(t.onclick=null))},render:function(e){var t,i=this.$scopedSlots,o=this.vSize,n=this.theme,s=this.message,r=this.isHover,l=this.isArrow,a=this.visible,u=this.tipStore,c=this.enterable;return c&&(t={mouseenter:this.wrapperMouseenterEvent,mouseleave:this.wrapperMouseleaveEvent}),e("div",{class:["vxe-table--tooltip-wrapper","theme--".concat(n),(_defineProperty(n={},"size--".concat(o),o),_defineProperty(n,"placement--".concat(u.placement),u.placement),_defineProperty(n,"is--enterable",c),_defineProperty(n,"is--visible",a),_defineProperty(n,"is--arrow",l),_defineProperty(n,"is--hover",r),n)],style:u.style,ref:"tipWrapper",on:t},[e("div",{class:"vxe-table--tooltip-content"},i.content?i.content.call(this,{}):s),e("div",{class:"vxe-table--tooltip-arrow",style:u.arrowStyle})].concat(i.default?i.default.call(this,{}):[]))},methods:{open:function(e,t){return this.toVisible(e||this.target,t)},close:function(){return this.tipTarget=null,Object.assign(this.tipStore,{style:{},placement:"",arrowStyle:null}),this.update(!1),this.$nextTick()},update:function(e){e!==this.visible&&(this.visible=e,this.isUpdate=!0,this.$listeners.input&&this.$emit("input",this.visible))},updateZindex:function(){this.tipZindex<_tools.UtilTools.getLastZIndex()&&(this.tipZindex=_tools.UtilTools.nextZIndex())},toVisible:function(e,t){if(this.targetActive=!0,e){var i=this.$el,o=this.tipStore,n=this.zIndex;return i.parentNode||document.body.appendChild(i),t&&(this.message=t),this.tipTarget=e,this.update(!0),this.updateZindex(),o.placement="top",o.style={width:"auto",left:0,top:0,zIndex:n||this.tipZindex},o.arrowStyle={left:"50%"},this.updatePlacement()}return this.$nextTick()},updatePlacement:function(){var t=this;return this.$nextTick().then(function(){var e=t.$el;if(t.tipTarget&&e)return updateTipStyle(t),t.$nextTick().then(function(){return updateTipStyle(t)})})},clickEvent:function(){this[this.visible?"close":"open"]()},targetMouseenterEvent:function(){this.open()},targetMouseleaveEvent:function(){var e=this,t=this.trigger,i=this.enterable,o=this.leaveDelay;this.targetActive=!1,i&&"hover"===t?setTimeout(function(){e.isHover||e.close()},o):this.close()},wrapperMouseenterEvent:function(){this.isHover=!0},wrapperMouseleaveEvent:function(e){var t=this,i=this.leaveMethod,o=this.trigger,n=this.enterable,s=this.leaveDelay;this.isHover=!1,i&&!1===i({$event:e})||n&&"hover"===o&&setTimeout(function(){t.targetActive||t.close()},s)}}};exports.default=_default2;