@jecloud/ui
Version:
JECloud UI库,基于ant-design-vue封装
1 lines • 9.79 kB
JavaScript
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t<a;t++)for(var r in n=arguments[t])Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);return e},e.apply(this,arguments)};import{isVNode as n,createTextVNode as t,createVNode as a}from"vue";import{defineComponent as r,h as u,computed as o,ref as i,nextTick as l,toRaw as c,watch as s}from"vue";import{uniqueId as p,toNumber as g,toString as f,isNumber as v,isFunction as d,toTemplate as m}from"@jecloud/utils";import{hasEventKey as b,EVENT_KEYS as P}from"../../utils/event";import j from"../../select";import h from"../../dropdown";import y from"../../menu";import{useInjectGrid as x}from"../../grid/src/context";import{useModelValue as z}from"../../hooks";function k(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!n(e)}var E={pager:{size:"middle",pageSize:30,pagerCount:7,align:"left",layouts:["Sizes","Message","JumpNumber","FullJump","Refresh","Size"],pageSizes:[10,20,30,40,50,60,70,80,90,100],sizes:[{text:"宽松",value:"large",icon:"jeicon jeicon-spacious"},{text:"舒适",value:"middle",icon:"jeicon jeicon-comfortable"},{text:"紧凑",value:"small",icon:"jeicon jeicon-compact-list"},{text:"迷你",value:"mini",icon:"jeicon jeicon-mini"}]},i18n:function(e){return{goto:"前往 :",pagesize:" 显示行数 : ",total:"共 {total} 条记录",message:"{start}-{end}条/共{total}条",pageClassifier:"页",prevPage:"上一页",nextPage:"下一页",prevJump:"向上跳页",nextJump:"向下跳页"}[e]},icon:{PAGER_JUMP_PREV:"fal fa-angle-double-left",PAGER_JUMP_NEXT:"fal fa-angle-double-right",PAGER_PREV_PAGE:"fal fa-angle-left",PAGER_NEXT_PAGE:"fal fa-angle-right",PAGER_JUMP_MORE:"fal fa-ellipsis-h"}};function J(e){return!!E.pager.sizes.find((function(n){return n.value===e}))}export default r({name:"JePager",components:{Select:j,Dropdown:h,Menu:y},props:{size:{type:String,default:function(){return E.pager.size},validator:function(e){return J(e)}},layouts:{type:Array,default:function(){return E.pager.layouts}},currentPage:{type:Number,default:1},loading:Boolean,pageSize:{type:Number,default:function(){return E.pager.pageSize}},total:{type:Number,default:0},pagerCount:{type:Number,default:function(){return E.pager.pagerCount}},pageSizes:{type:Array,default:function(){return E.pager.pageSizes}},align:{type:String,default:function(){return E.pager.align}},border:{type:Boolean,default:function(){return E.pager.border}},background:{type:Boolean,default:function(){return E.pager.background}},perfect:{type:Boolean,default:function(){return E.pager.perfect}},autoHidden:{type:Boolean,default:function(){return E.pager.autoHidden}},transfer:{type:Boolean,default:function(){return E.pager.transfer}},className:[String,Function],iconPrevPage:String,iconJumpPrev:String,iconJumpNext:String,iconNextPage:String,iconJumpMore:String},emits:["update:pageSize","update:currentPage","update:size","page-change","load"],setup:function(n,r){var J,S,N=r.slots,M=r.emit,R=z({props:n,context:r,key:"size"}),_=z({props:n,context:r,key:"pageSize"}),C=z({props:n,context:r,key:"currentPage"}),A=x(),w=p(),G=i(),O=o((function(){var e={pageSize:_.value,currentPage:C.value,total:n.total};return e.start=(C.value-1)*e.pageSize+1,e.end=e.start+e.pageSize-1,e.pageCount=T(e.total,e.pageSize),e.end=e.end>e.total?e.total:e.end,e.message=m(n.message||E.i18n("message"),e),e})),U={refElem:G},V={xID:w,props:n,context:r,pageInfo:O,getRefMaps:function(){return U}},B={},T=function(e,n){return Math.max(Math.ceil(e/n),1)},D=o((function(){return T(n.total,n.pageSize)}));s((function(){return C.value}),(function(){null==A||A.updateSeqConfig(O.value)}));var X=function(n){var t=e(e({},c(O.value)),{type:n});B.dispatchEvent("page-change",t),B.dispatchEvent("load",t)},F=function(e,t){C.value=e,t&&e!==n.currentPage&&X("pageChange")},H=function(e){var n=g(e);C.value=1,_.value=n,X("pageSize")},I=function(e){var n=e.target,t=g(n.value),a=D.value,r=t<=0?1:t>=a?a:t;n.value=f(r),F(r,e)},K=o((function(){for(var e=n.pagerCount,t=D.value>e?e-2:e,a=[],r=0;r<t;r++)a.push(r);return a})),W=o((function(){return Math.floor((n.pagerCount-2)/2)})),$=o((function(){return n.pageSizes.map((function(n){return v(n)?{value:n,label:n}:e({value:"",label:""},n)}))})),q=function(e){var t=n.currentPage,a=D.value;t>1&&F(Math.min(a,Math.max(t-1,1)),e)},L=function(e){var t=n.currentPage,a=D.value;t<a&&F(Math.min(a,t+1),e)},Q=function(e){var t=K.value;F(Math.max(n.currentPage-t.length,1),e)},Y=function(e){var t=D.value,a=K.value;F(Math.min(n.currentPage+a.length,t),e)},Z=function(e){b(e,P.ENTER)?I(e):b(e,P.ARROW_UP)?(e.preventDefault(),L(e)):b(e,P.ARROW_DOWN)&&(e.preventDefault(),q(e))},ee=function(){return a("button",{class:["je-pager--prev-btn",{"is--disabled":n.currentPage<=1}],type:"button",title:E.i18n("prevPage"),onClick:q},[a("i",{class:["je-pager--btn-icon",n.iconPrevPage||E.icon.PAGER_PREV_PAGE]},null)])},ne=function(e){return a("button",{class:["je-pager--jump-prev",{"is--disabled":n.currentPage<=1}],type:"button",title:E.i18n("prevJump"),onClick:Q},[e?a("i",{class:["je-pager--btn-icon","je-pager--jump-more-icon",n.iconJumpMore||E.icon.PAGER_JUMP_MORE]},null):"",a("i",{class:["je-pager--jump-icon",n.iconJumpPrev||E.icon.PAGER_JUMP_PREV]},null)])},te=function(e){var t=D.value;return a("button",{class:["je-pager--jump-next",{"is--disabled":n.currentPage>=t}],type:"button",title:E.i18n("nextJump"),onClick:Y},[e?a("i",{class:["je-pager--btn-icon","je-pager--jump-more-icon",n.iconJumpMore||E.icon.PAGER_JUMP_MORE]},null):"",a("i",{class:["je-pager--jump-icon",n.iconJumpNext||E.icon.PAGER_JUMP_NEXT]},null)])},ae=function(){var e=D.value;return a("button",{class:["je-pager--next-btn",{"is--disabled":n.currentPage>=e}],type:"button",title:E.i18n("nextPage"),onClick:L},[a("i",{class:["je-pager--btn-icon",n.iconNextPage||E.icon.PAGER_NEXT_PAGE]},null)])},re=function(e){var r=n.currentPage,u=n.pagerCount,o=[],i=D.value,l=K.value,c=W.value,s=i>u,p=s&&r>c+1,g=s&&r<i-c,f=1;return s&&(f=r>=i-c?Math.max(i-l.length+1,1):Math.max(r-c,1)),e&&o.push(ee()),e&&p&&o.push(a("button",{class:"je-pager--num-btn",type:"button",onClick:function(e){return F(1,e)}},[t("1")]),ne(!0)),l.forEach((function(e,n){var t=f+n;t<=i&&o.push(a("button",{key:t,class:["je-pager--num-btn",{"is--active":r===t}],type:"button",onClick:function(e){return F(t,e)}},[t]))})),e&&g&&o.push(te(!0),a("button",{class:"je-pager--num-btn",type:"button",onClick:function(e){return F(i,e)}},[i])),e&&o.push(ae()),a("span",{class:"je-pager--btn-wrapper"},[o])},ue=function(){return re(!0)},oe=i(),ie=function(){var e=$.value;return a("span",{class:"je-pager--sizes"},[a("span",null,[E.i18n("pagesize")]),a(j,{allowClear:!1,getPopupContainer:function(){return G.value},ref:oe,class:"je-pager--sizes-select",dropdownClassName:"je-pager--sizes-select-dropdown",placement:"topLeft",value:_.value,"onUpdate:value":function(e){return _.value=e},options:e,onChange:H},null)])},le=function(e){return u("span",{class:"je-pager--jump"},[e?u("span",{class:"je-pager--goto-text"},E.i18n("goto")):null,u("input",{class:"je-pager--goto",value:n.currentPage,type:"text",autocomplete:"off",onKeydown:Z,onBlur:I}),e?u("span",{class:"je-pager--classifier-text"},E.i18n("pageClassifier")):null])},ce=function(){return le(!0)},se=function(){var e=D.value;return u("span",{class:"je-pager--count"},[u("span",{class:"je-pager--separator"}),u("span",e)])},pe=function(){return u("span",{class:"je-pager--total"},m(E.i18n("total"),n))},ge=function(){return u("span",{class:"je-pager--message"},O.value.message)},fe=function(){return a("span",{class:"je-pager--icon-btn je-pager--refresh",onClick:function(){X("refresh")}},[a("i",{class:"fal fa-sync"},null)])},ve=function(e){var n=e.key;A.size.value=n,R.value=n},de=i([null===(J=null==A?void 0:A.size)||void 0===J?void 0:J.value]),me=function(){return A?a("span",{class:"je-pager--icon-btn je-pager--size"},[a(h,{placement:"top",trigger:["click"]},{default:function(){return[a("i",{class:"jeicon jeicon-width"},null)]},overlay:function(){var e;return a(y,{onClick:ve,selectable:!0,selectedKeys:de.value,"onUpdate:selectedKeys":function(e){return de.value=e}},k(e=E.pager.sizes.map((function(e){return a(y.Item,{key:e.value},{default:function(){return[a("div",{style:"padding:2px 5px;width:80px;text-align:center;"},[a("i",{class:e.icon,style:"margin-right:10px;font-weight: bold;font-size:14px;"},null),e.text])]}})})))?e:{default:function(){return[e]}})}})]):null};B={dispatchEvent:function(e,n,t){M(e,Object.assign({$pager:V,$event:t},n))},prevPage:function(){return q(),l()},nextPage:function(){return L(),l()},prevJump:function(){return Q(),l()},nextJump:function(){return Y(),l()}},S={handlePrevPage:q,handleNextPage:L,handlePrevJump:Q,handleNextJump:Y},Object.assign(V,B,S);return V.renderVN=function(){var e,t=n.align,a=n.layouts,r=n.className,o=[],i=R.value,l=D.value;return N.left&&o.push(u("span",{class:"je-pager--left-wrapper"},N.left())),a.forEach((function(e){var n;switch(e){case"PrevPage":n=ee;break;case"PrevJump":n=ne;break;case"Number":n=re;break;case"JumpNumber":n=ue;break;case"NextJump":n=te;break;case"NextPage":n=ae;break;case"Sizes":n=ie;break;case"FullJump":n=ce;break;case"Jump":n=le;break;case"PageCount":n=se;break;case"Total":n=pe;break;case"Message":n=ge;break;case"Refresh":n=fe;break;case"Size":n=me}n&&o.push(n())})),N.right&&o.push(u("span",{class:"je-pager--right-wrapper"},N.right())),u("div",{ref:G,class:["je-pager",r?d(r)?r({$pager:V}):r:"",(e={},e["size--"+i]=i,e["align--"+t]=t,e["is--border"]=n.border,e["is--background"]=n.background,e["is--perfect"]=n.perfect,e["is--hidden"]=n.autoHidden&&1===l,e["is--loading"]=n.loading,e)]},[u("div",{class:"je-pager--wrapper"},o)])},V},render:function(){return this.renderVN()}});