vxe-table
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 8.42 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")),_event=require("../../tools/event"),_size=require("../../hooks/size");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var u in t=arguments[n])Object.prototype.hasOwnProperty.call(t,u)&&(e[u]=t[u]);return e}).apply(this,arguments)},_default=(0,_vue.defineComponent)({name:"VxePager",props:{size:{type:String,default:function(){return _conf.default.pager.size||_conf.default.size}},layouts:{type:Array,default:function(){return _conf.default.pager.layouts||["PrevJump","PrevPage","Jump","PageCount","NextPage","NextJump","Sizes","Total"]}},currentPage:{type:Number,default:1},loading:Boolean,pageSize:{type:Number,default:function(){return _conf.default.pager.pageSize||10}},total:{type:Number,default:0},pagerCount:{type:Number,default:function(){return _conf.default.pager.pagerCount||7}},pageSizes:{type:Array,default:function(){return _conf.default.pager.pageSizes||[10,15,20,50,100]}},align:{type:String,default:function(){return _conf.default.pager.align}},border:{type:Boolean,default:function(){return _conf.default.pager.border}},background:{type:Boolean,default:function(){return _conf.default.pager.background}},perfect:{type:Boolean,default:function(){return _conf.default.pager.perfect}},autoHidden:{type:Boolean,default:function(){return _conf.default.pager.autoHidden}},transfer:{type:Boolean,default:function(){return _conf.default.pager.transfer}},className:[String,Function],iconPrevPage:String,iconJumpPrev:String,iconJumpNext:String,iconNextPage:String,iconJumpMore:String},emits:["update:pageSize","update:currentPage","page-change"],setup:function(l,e){function a(e,t){return Math.max(Math.ceil(e/t),1)}function u(e,t){r("update:currentPage",e),t&&e!==l.currentPage&&m.dispatchEvent("page-change",{type:"current",pageSize:l.pageSize,currentPage:e},t)}function i(){return(0,_vue.h)("button",{class:["vxe-pager--prev-btn",{"is--disabled":l.currentPage<=1}],type:"button",title:_conf.default.i18n("vxe.pager.prevPage"),onClick:z},[(0,_vue.h)("i",{class:["vxe-pager--btn-icon",l.iconPrevPage||_conf.default.icon.PAGER_PREV_PAGE]})])}function o(){var e=b.value;return(0,_vue.h)("button",{class:["vxe-pager--next-btn",{"is--disabled":l.currentPage>=e}],type:"button",title:_conf.default.i18n("vxe.pager.nextPage"),onClick:J},[(0,_vue.h)("i",{class:["vxe-pager--btn-icon",l.iconNextPage||_conf.default.icon.PAGER_NEXT_PAGE]})])}function c(){return T(!0)}function p(){var e=k.value;return(0,_vue.h)((0,_vue.resolveComponent)("vxe-select"),{class:"vxe-pager--sizes",modelValue:l.pageSize,placement:"top",transfer:l.transfer,options:e,onChange:R})}function s(){return U(!0)}function f(){var e=b.value;return(0,_vue.h)("span",{class:"vxe-pager--count"},[(0,_vue.h)("span",{class:"vxe-pager--separator"}),(0,_vue.h)("span",e)])}function g(){return(0,_vue.h)("span",{class:"vxe-pager--total"},_conf.default.i18n("vxe.pager.total",[l.total]))}var v=e.slots,r=e.emit,t=_xeUtils.default.uniqueId(),_=(0,_size.useSize)(l),d=(0,_vue.inject)("$xegrid",null),x=(0,_vue.reactive)({inpCurrPage:l.currentPage}),h=(0,_vue.ref)(),n={refElem:h},P={xID:t,props:l,context:e,getRefMaps:function(){return n}},m={},b=(0,_vue.computed)(function(){return a(l.total,l.pageSize)}),y=function(e,t){r("update:currentPage",t),e&&t!==l.currentPage&&m.dispatchEvent("page-change",{type:"current",pageSize:l.pageSize,currentPage:t},e)},E=function(e){var t=e.target,n=_xeUtils.default.toInteger(t.value),a=b.value,a=n<=0?1:a<=n?a:n,n=_xeUtils.default.toValueString(a);t.value=n,x.inpCurrPage=n,u(a,e)},N=(0,_vue.computed)(function(){for(var e=l.pagerCount,t=e<b.value?e-2:e,n=[],a=0;a<t;a++)n.push(a);return n}),S=(0,_vue.computed)(function(){return Math.floor((l.pagerCount-2)/2)}),k=(0,_vue.computed)(function(){return l.pageSizes.map(function(e){return _xeUtils.default.isNumber(e)?{value:e,label:"".concat(_conf.default.i18n("vxe.pager.pagesize",[e]))}:__assign({value:"",label:""},e)})}),z=function(e){var t=l.currentPage,n=b.value;1<t&&u(Math.min(n,Math.max(t-1,1)),e)},J=function(e){var t=l.currentPage,n=b.value;t<n&&u(Math.min(n,t+1),e)},C=function(e){var t=N.value;u(Math.max(l.currentPage-t.length,1),e)},M=function(e){var t=b.value,n=N.value;u(Math.min(l.currentPage+n.length,t),e)},R=function(e){var e=e.value,e=_xeUtils.default.toNumber(e),t=a(l.total,e),n=l.currentPage;t<n&&r("update:currentPage",n=t),r("update:pageSize",e),m.dispatchEvent("page-change",{type:"size",pageSize:e,currentPage:n})},O=function(e){e=e.target;x.inpCurrPage=e.value},V=function(e){(0,_event.hasEventKey)(e,_event.EVENT_KEYS.ENTER)?E(e):(0,_event.hasEventKey)(e,_event.EVENT_KEYS.ARROW_UP)?(e.preventDefault(),J(e)):(0,_event.hasEventKey)(e,_event.EVENT_KEYS.ARROW_DOWN)&&(e.preventDefault(),z(e))},j=function(e){return(0,_vue.h)(e||"button",{class:["vxe-pager--jump-prev",{"is--fixed":!e,"is--disabled":l.currentPage<=1}],type:"button",title:_conf.default.i18n("vxe.pager.prevJump"),onClick:C},[e?(0,_vue.h)("i",{class:["vxe-pager--jump-more-icon",l.iconJumpMore||_conf.default.icon.PAGER_JUMP_MORE]}):null,(0,_vue.h)("i",{class:["vxe-pager--jump-icon",l.iconJumpPrev||_conf.default.icon.PAGER_JUMP_PREV]})])},A=function(e){var t=b.value;return(0,_vue.h)(e||"button",{class:["vxe-pager--jump-next",{"is--fixed":!e,"is--disabled":l.currentPage>=t}],type:"button",title:_conf.default.i18n("vxe.pager.nextJump"),onClick:M},[e?(0,_vue.h)("i",{class:["vxe-pager--jump-more-icon",l.iconJumpMore||_conf.default.icon.PAGER_JUMP_MORE]}):null,(0,_vue.h)("i",{class:["vxe-pager--jump-icon",l.iconJumpNext||_conf.default.icon.PAGER_JUMP_NEXT]})])},T=function(e){var a=l.currentPage,t=l.pagerCount,u=[],r=b.value,n=N.value,i=S.value,t=t<r,o=t&&i+1<a,c=t&&a<r-i,p=1;return t&&(p=r-i<=a?Math.max(r-n.length+1,1):Math.max(a-i,1)),e&&o&&u.push((0,_vue.h)("button",{class:"vxe-pager--num-btn",type:"button",onClick:function(e){return y(e,1)}},1),j("span")),n.forEach(function(e,t){var n=p+t;n<=r&&u.push((0,_vue.h)("button",{key:n,class:["vxe-pager--num-btn",{"is--active":a===n}],type:"button",onClick:function(e){return y(e,n)}},n))}),e&&c&&u.push(A("button"),(0,_vue.h)("button",{class:"vxe-pager--num-btn",type:"button",onClick:function(e){return y(e,r)}},r)),(0,_vue.h)("span",{class:"vxe-pager--btn-wrapper"},u)},U=function(e){return(0,_vue.h)("span",{class:"vxe-pager--jump"},[e?(0,_vue.h)("span",{class:"vxe-pager--goto-text"},_conf.default.i18n("vxe.pager.goto")):null,(0,_vue.h)("input",{class:"vxe-pager--goto",value:x.inpCurrPage,type:"text",autocomplete:"off",onInput:O,onKeydown:V,onBlur:E}),e?(0,_vue.h)("span",{class:"vxe-pager--classifier-text"},_conf.default.i18n("vxe.pager.pageClassifier")):null])},m={dispatchEvent:function(e,t,n){r(e,Object.assign({$pager:P,$event:n},t))},prevPage:function(){return z(),(0,_vue.nextTick)()},nextPage:function(){return J(),(0,_vue.nextTick)()},prevJump:function(){return C(),(0,_vue.nextTick)()},nextJump:function(){return M(),(0,_vue.nextTick)()}};Object.assign(P,m,{handlePrevPage:z,handleNextPage:J,handlePrevJump:C,handleNextJump:M}),(0,_vue.watch)(function(){return l.currentPage},function(e){x.inpCurrPage=e});return P.renderVN=function(){var e=l.align,t=l.layouts,n=l.className,a=[],u=_.value,r=b.value;return v.left&&a.push((0,_vue.h)("span",{class:"vxe-pager--left-wrapper"},v.left({$grid:d}))),t.forEach(function(e){var t;switch(e){case"PrevPage":t=i;break;case"PrevJump":t=j;break;case"Number":t=T;break;case"JumpNumber":t=c;break;case"NextJump":t=A;break;case"NextPage":t=o;break;case"Sizes":t=p;break;case"FullJump":t=s;break;case"Jump":t=U;break;case"PageCount":t=f;break;case"Total":t=g}t&&a.push(t())}),v.right&&a.push((0,_vue.h)("span",{class:"vxe-pager--right-wrapper"},v.right({$grid:d}))),(0,_vue.h)("div",{ref:h,class:["vxe-pager",n?_xeUtils.default.isFunction(n)?n({$pager:P}):n:"",((t={})["size--".concat(u)]=u,t["align--".concat(e)]=e,t["is--border"]=l.border,t["is--background"]=l.background,t["is--perfect"]=l.perfect,t["is--hidden"]=l.autoHidden&&1===r,t["is--loading"]=l.loading,t)]},[(0,_vue.h)("div",{class:"vxe-pager--wrapper"},a)])},P},render:function(){return this.renderVN()}});exports.default=_default;