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