vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 6.16 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=require("../../hooks/size"),_dom=require("../../tools/dom"),_utils=require("../../tools/utils"),_event=require("../../tools/event");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=(0,_vue.defineComponent)({name:"VxeButton",props:{type:String,className:[String,Function],popupClassName:[String,Function],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,transfer:{type:Boolean,default:function(){return _conf.default.button.transfer}},layer:{type:[HTMLElement,String,Function]}},emits:["click","dropdown-click"],setup:function(_,e){function b(e){a.dispatchEvent("click",{$event:e},e)}function x(e){0===e.button&&e.stopPropagation()}function h(e){var t=e.currentTarget,n=q.value,o=(t=(0,_dom.getEventTargetNode)(e,t,"vxe-button")).flag,t=t.targetElem;o&&(n&&(n.dataset.active="N"),N.showPanel=!1,setTimeout(function(){n&&"Y"===n.dataset.active||(N.animatVisible=!1)},350),a.dispatchEvent("dropdown-click",{name:t.getAttribute("name"),$event:e},e))}function g(){var e=q.value;e&&(e.dataset.active="Y",N.inited||(N.inited=!0),n.showTime=setTimeout(function(){"Y"===e.dataset.active?E():N.animatVisible=!1},250))}function T(){l()}function w(){var e=_.content,t=_.icon,n=[];return _.loading?n.push((0,_vue.h)("i",{class:["vxe-button--loading-icon",_conf.default.icon.BUTTON_LOADING]})):y.icon?n.push((0,_vue.h)("span",{class:"vxe-button--custom-icon"},y.icon({}))):t&&n.push((0,_vue.h)("i",{class:["vxe-button--icon",t]})),y.default?n.push((0,_vue.h)("span",{class:"vxe-button--content"},y.default({}))):e&&n.push((0,_vue.h)("span",{class:"vxe-button--content"},(0,_utils.getFuncText)(e))),n}var y=e.slots,o=e.emit,t=_xeUtils.default.uniqueId(),S=(0,_size.useSize)(_),N=(0,_vue.reactive)({inited:!1,showPanel:!1,animatVisible:!1,panelIndex:0,panelStyle:{},panelPlacement:""}),n={showTime:null},P=(0,_vue.ref)(),k=(0,_vue.ref)(),q=(0,_vue.ref)(),i={refElem:P},z={xID:t,props:_,context:e,reactData:N,internalData:n,getRefMaps:function(){return i}},a={},O=(0,_vue.computed)(function(){var e=_.type;return!!e&&-1<["submit","reset","button"].indexOf(e)}),B=(0,_vue.computed)(function(){var e=_.type;return e&&"text"===e?e:"button"}),u=function(){N.panelIndex<(0,_utils.getLastZIndex)()&&(N.panelIndex=(0,_utils.nextZIndex)())},s=function(){return(0,_vue.nextTick)().then(function(){var e,t,n,o,i,a,u,s,l,c,r=_.transfer,d=_.placement,v=_.layer,f=N.panelIndex,p=k.value,m=q.value;if(m&&p)return e=p.offsetHeight,t=p.offsetWidth,n=m.offsetHeight,m=m.offsetWidth,f={zIndex:f},c=(l=(0,_dom.getAbsolutePos)(p)).top,s=l.left,o=l.boundingTop,i=l.boundingBottom,a=l.visibleHeight,l=l.visibleWidth,u="bottom",r?(r=c+e,"top"===d?(u="top",r=c-n):d||(a<o+e+n+5&&(u="top",r=c-n),r<5&&(u="bottom",r=c+e)),l<(c=s+t-m)+m+5&&(c-=c+m+5-l),c<5&&(c=5),Object.assign(f,{left:"".concat(c,"px"),right:"auto",top:"".concat(r,"px"),minWidth:"".concat(t,"px")})):(s=v?_xeUtils.default.isFunction(v)?v(p):_xeUtils.default.isString(v)?document.querySelector(v):v:void 0,"top"===d?(u="top",f.bottom="".concat(e,"px")):d||(s?(l=(m=s.getBoundingClientRect()).bottom,c=m.top,l<i+e+n&&c<o-e-n&&(u="top",f.bottom="".concat(e,"px"))):a<o+e+n&&5<o-e-n&&(u="top",f.bottom="".concat(e,"px")))),N.panelStyle=f,N.panelPlacement=u,(0,_vue.nextTick)()})},E=function(){var e=q.value;e&&(e.dataset.active="Y",N.animatVisible=!0,setTimeout(function(){"Y"===e.dataset.active&&(N.showPanel=!0,u(),s(),setTimeout(function(){N.showPanel&&s()},50))},20))},l=function(){var e=q.value;clearTimeout(n.showTime),e?(e.dataset.active="N",setTimeout(function(){"Y"!==e.dataset.active&&(N.showPanel=!1,setTimeout(function(){"Y"!==e.dataset.active&&(N.animatVisible=!1)},350))},100)):(N.animatVisible=!1,N.showPanel=!1)},a={dispatchEvent:function(e,t,n){o(e,Object.assign({$button:z,$event:n},t))},focus:function(){return k.value.focus(),(0,_vue.nextTick)()},blur:function(){return k.value.blur(),(0,_vue.nextTick)()}};Object.assign(z,a),(0,_vue.onMounted)(function(){_event.GlobalEvent.on(z,"mousewheel",function(e){var t=q.value;N.showPanel&&!(0,_dom.getEventTargetNode)(e,t).flag&&l()})}),(0,_vue.onUnmounted)(function(){_event.GlobalEvent.off(z,"mousewheel")});return z.renderVN=function(){var e=_.className,t=_.popupClassName,n=_.transfer,o=_.type,i=_.round,a=_.circle,u=_.destroyOnClose,s=_.status,l=_.name,c=_.disabled,r=_.loading,d=N.inited,v=N.showPanel,f=O.value,p=B.value,m=S.value;return y.dropdowns?(0,_vue.h)("div",{ref:P,class:["vxe-button--dropdown",e?_xeUtils.default.isFunction(e)?e({$button:z}):e:"",((e={})["size--".concat(m)]=m,e["is--active"]=v,e)]},[(0,_vue.h)("button",{ref:k,class:["vxe-button","type--".concat(p),((e={})["size--".concat(m)]=m,e["theme--".concat(s)]=s,e["is--round"]=i,e["is--circle"]=a,e["is--disabled"]=c||r,e["is--loading"]=r,e)],name:l,type:f?o:"button",disabled:c||r,onMouseenter:g,onMouseleave:T,onClick:b},w().concat([(0,_vue.h)("i",{class:"vxe-button--dropdown-arrow ".concat(_conf.default.icon.BUTTON_DROPDOWN)})])),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!n||!d},[(0,_vue.h)("div",{ref:q,class:["vxe-button--dropdown-panel",t?_xeUtils.default.isFunction(t)?t({$button:z}):t:"",((e={})["size--".concat(m)]=m,e["animat--leave"]=N.animatVisible,e["animat--enter"]=v,e)],placement:N.panelPlacement,style:N.panelStyle},d?[(0,_vue.h)("div",{class:"vxe-button--dropdown-wrapper",onMousedown:x,onClick:h,onMouseenter:E,onMouseleave:T},u&&!v?[]:y.dropdowns({}))]:[])])]):(0,_vue.h)("button",{ref:k,class:["vxe-button","type--".concat(p),((n={})["size--".concat(m)]=m,n["theme--".concat(s)]=s,n["is--round"]=i,n["is--circle"]=a,n["is--disabled"]=c||r,n["is--loading"]=r,n)],name:l,type:f?o:"button",disabled:c||r,onClick:b},w())},z},render:function(){return this.renderVN()}});exports.default=_default;