vhb-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 7.43 kB
JavaScript
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-h-b-table/src/conf")),_size=_interopRequireDefault(require("../../mixins/size")),_utils=_interopRequireWildcard(require("../../tools/utils")),_dom=_interopRequireDefault(require("../../tools/dom")),_event=require("../../tools/event");function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_getRequireWildcardCache=function(e){return e?n:t})(e)}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&Object.prototype.hasOwnProperty.call(e,r)){var s=o?Object.getOwnPropertyDescriptor(e,r):null;s&&(s.get||s.set)?Object.defineProperty(i,r,s):i[r]=e[r]}return i.default=e,n&&n.set(e,i),i}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:"VhbButton",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(){_event.GlobalEvent.on(this,"mousewheel",this.handleGlobalMousewheelEvent)},beforeDestroy:function(){var e=this.$refs.panel;e&&e.parentNode&&e.parentNode.removeChild(e)},destroyed:function(){_event.GlobalEvent.off(this,"mousewheel")},render:function(e){var t,n,i,o,r=this,s=this.$scopedSlots,a=this.$listeners,u=this.className,l=this.inited,c=this.type,d=this.destroyOnClose,f=this.isFormBtn,p=this.status,h=this.btnType,b=this.vSize,m=this.name,v=this.disabled,y=this.loading,_=this.showPanel,P=this.animatVisible,g=this.panelPlacement,x=s.dropdowns;return x?e("div",{class:["vhb-button--dropdown",u,(t={},_defineProperty(t,"size--".concat(b),b),_defineProperty(t,"is--active",_),t)]},[e("button",{ref:"xBtn",class:["vhb-button","type--".concat(h),(n={},_defineProperty(n,"size--".concat(b),b),_defineProperty(n,"theme--".concat(p),p),_defineProperty(n,"is--round",this.round),_defineProperty(n,"is--circle",this.circle),_defineProperty(n,"is--disabled",v||y),_defineProperty(n,"is--loading",y),n)],attrs:{name:m,type:f?c:"button",disabled:v||y},on:Object.assign({mouseenter:this.mouseenterTargetEvent,mouseleave:this.mouseleaveEvent},_xeUtils.default.objectMap(a,function(e,t){return function(e){return r.$emit(t,{$event:e})}}))},this.renderContent(e).concat([e("i",{class:"vhb-button--dropdown-arrow ".concat(_conf.default.icon.BUTTON_DROPDOWN)})])),e("div",{ref:"panel",class:["vhb-button--dropdown-panel",(i={},_defineProperty(i,"size--".concat(b),b),_defineProperty(i,"animat--leave",P),_defineProperty(i,"animat--enter",_),i)],attrs:{placement:g},style:this.panelStyle},l?[e("div",{class:"vhb-button--dropdown-wrapper",on:{mousedown:this.mousedownDropdownEvent,click:this.clickDropdownEvent,mouseenter:this.mouseenterEvent,mouseleave:this.mouseleaveEvent}},d&&!_?[]:x.call(this,{},e))]:null)]):e("button",{ref:"xBtn",class:["vhb-button","type--".concat(h),u,(o={},_defineProperty(o,"size--".concat(b),b),_defineProperty(o,"theme--".concat(p),p),_defineProperty(o,"is--round",this.round),_defineProperty(o,"is--circle",this.circle),_defineProperty(o,"is--disabled",v||y),_defineProperty(o,"is--loading",y),o)],attrs:{name:m,type:f?c:"button",disabled:v||y},on:_xeUtils.default.objectMap(a,function(e,t){return function(e){return r.$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:["vhb-button--loading-icon",_conf.default.icon.BUTTON_LOADING]})):i&&o.push(e("i",{class:["vhb-button--icon",i]})),t.default?o.push(e("span",{class:"vhb-button--content"},t.default.call(this))):n&&o.push(e("span",{class:"vhb-button--content"},[(0,_utils.getFuncText)(n)])),o},handleGlobalMousewheelEvent:function(e){this.showPanel&&!_dom.default.getEventTargetNode(e,this.$refs.panel).flag&&this.closePanel()},updateZindex:function(){this.panelIndex<_utils.default.getLastZIndex()&&(this.panelIndex=_utils.default.nextZIndex())},mousedownDropdownEvent:function(e){0===e.button&&e.stopPropagation()},clickDropdownEvent:function(e){var t=this,n=e.currentTarget,i=this.$refs.panel,o=_dom.default.getEventTargetNode(e,n,"vhb-button"),r=o.flag,s=o.targetElem;r&&(i&&(i.dataset.active="N"),this.showPanel=!1,setTimeout(function(){i&&"Y"===i.dataset.active||(t.animatVisible=!1)},350),this.$emit("dropdown-click",{name:s.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 P=this;return this.$nextTick().then(function(){var e=P.$refs,t=P.transfer,n=P.placement,i=P.panelIndex,o=e.xBtn,r=e.panel;if(r&&o){var s=o.offsetHeight,a=o.offsetWidth,u=r.offsetHeight,l=r.offsetWidth,c={zIndex:i},d=_dom.default.getAbsolutePos(o),f=d.top,p=d.left,h=d.boundingTop,b=d.visibleHeight,m=d.visibleWidth,v="bottom";if(t){var y=p+a-l,_=f+s;"top"===n?(v="top",_=f-u):n||(b<h+s+u+5&&(v="top",_=f-u),_<5&&(v="bottom",_=f+s)),m<y+l+5&&(y-=y+l+5-m),y<5&&(y=5),Object.assign(c,{left:"".concat(y,"px"),right:"auto",top:"".concat(_,"px"),minWidth:"".concat(a,"px")})}else"top"===n?(v="top",c.bottom="".concat(s,"px")):n||b<h+s+u&&5<h-s-u&&(v="top",c.bottom="".concat(s,"px"));return P.panelStyle=c,P.panelPlacement=v,P.$nextTick()}})},focus:function(){return this.$el.focus(),this.$nextTick()},blur:function(){return this.$el.blur(),this.$nextTick()}}};exports.default=_default2;