@aplus-frontend/ui
Version:
2 lines (1 loc) • 4.5 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),ce=require("./use-sorted-filtered.js");require("../../config-provider/index.js");const q=require("../utils.js"),P=require("lodash-unified"),I=require("../../utils/index.js"),ie=require("../../config-provider/hooks/use-locale.js"),ue=require("../../config-provider/hooks/use-namespace.js"),g=1,b=20,j={defaultCurrent:g,defaultPageSize:b,showLessItems:!1,showTotal:!0};function le(u){return u===!1?{}:u==null||u===!0?j:{...j,...u}}function fe(u){const f={};return u===!1||(u===!0||u==null?(f.current=g,f.pageSize=b):(f.current=u.defaultCurrent||g,f.pageSize=u.defaultPageSize||b)),f}const de=({manual:u=!1,request:f,params:v={},defaultData:x=[],formatParams:A,paramsValueTypeMap:D,resetFieldsIgnores:L,filterFields:M,sortFields:k,namespace:B="ap-table",pagination:p,onClickReset:G,onAfterRequest:J})=>{let C=0,s={};const K=le(p),Q=e=>A?A(e):e,S=o.ref(),c=o.reactive(fe(p)),{getColumnSFConfig:W,setSF:Z,clearAll:$,sortedInfo:y,filteredInfo:O}=ce.useTableSortedAndFiltered(),{t:h}=ie.useLocale(),{b:m}=ue.useNamespace(B),a=o.reactive({total:x.length,records:x,loading:!1}),z=()=>S.value?.apForm?.getFieldsValueTransformed(!0)||{},N=async e=>{const t=Q(e),n=Date.now();C=n,a.loading=!0;try{const r=await f({...o.unref(v),...t});C===n&&(a.total=r.total||r.data?.length||0,a.records=[...r.data||[]],a.loading=!1)}catch{C===n&&(a.records=[],a.total=0,a.loading=!1)}finally{J?.(a.records)}},R=e=>{const t={};return Object.entries(e).forEach(([n,r])=>{if(t[n]=r,D&&r){const i=D[n];i&&(t[n]=q.parseFieldValue(i,r))}}),t},H=async e=>{const t=z(),n={};Object.entries(t).forEach(([r,i])=>{L&&L.indexOf(r)>-1&&(n[r]=i)}),await S.value?.apForm?.resetFields(),S.value?.apForm?.setFieldsValue?.(n),o.nextTick(()=>{e?.()})},T=e=>{s=e;const t=R(e);N(t)},X=e=>{T({...s,...e})},F=()=>{U(!0)},U=(e=!1)=>{const t=z(),n=p!==!1;n&&e&&(c.current=g),T({...t,filter:s.filter,sort:s.sort,current:n?e?g:s.current||c.current:void 0,pageSize:n?s.pageSize||c.pageSize:void 0})},Y=()=>{$(),s.sort={},s.filter={},G?.(),H(F)},w=()=>{T(s)},ee=e=>{if(p===!1)w();else{const{current:t,pageSize:n}=c,r=a.total-e,i=Math.ceil(r/n),d=t>i?i:t;X({current:d>0?d:1})}},E=(e,t,n)=>{const r=z();c.current=e.current,c.pageSize=e.pageSize,Z(t,n);const i=P.isArray(n)?[...n]:[n],d={};for(const l of i)o.unref(k)?.includes(l.columnKey||l.field)&&l.order&&(d[q.dataIndexToStr(l.columnKey||l.field)]=l.order);const V={};for(const l of Object.keys(t))o.unref(M)?.includes(l)&&t[l]&&(V[l]=t[l]);const _={...r,filter:V,sort:d,current:e.current,pageSize:e.pageSize};P.isEqualWith(s,_,q.isEqualCustom)||T(_)},te=(e,t=O.value||{},n=y.value||{})=>{const r=e?.current??c.current,i=e?.pageSize??c.pageSize;E({current:r,pageSize:i},t,n,{action:"sort",currentDataSource:[]})};o.onMounted(()=>{const e=z(),{current:t,pageSize:n}=c;if(s={current:t,pageSize:n,filter:{},sort:{},...e},!u){const r=R(s);N(r)}}),o.watch(()=>o.unref(v),()=>{F()},{deep:!0});const ne=o.computed(()=>{if(a.total===0)return"-";const{current:e,pageSize:t}=c;return`${e}/${Math.ceil(a.total/t)}`});function re(e){P.isArray(e)&&(a.records=e,a.total=e.length)}const ae=o.computed(()=>{const{showLessItems:e,showTotal:t,showQuickJumper:n,showSizeChanger:r,pageSizeOptions:i}=K;return{loading:a.loading,pagination:{current:c.current,pageSize:c.pageSize,total:a.total,showSizeChanger:I.isDef(r)?r:!e,showQuickJumper:I.isDef(n)?n:!e,showLessItems:e,size:"default",pageSizeOptions:P.isUndefined(i)?["10","20","50","100"]:i,showTotal:t?d=>o.createVNode("span",{class:m("pagination-total-wrapper")},[h("ap.apTable.pagination.totalLeftPrefix")," ",o.createVNode("span",{class:m("pagination-count-text")},[d])," ",h("ap.apTable.pagination.totalLeftSuffix"),o.createVNode("span",{class:m("pagination--total-right")},[h("ap.apTable.pagination.totalRightPrefix")," ",o.createVNode("span",{class:m("pagination-count-text")},[o.unref(ne)])," ",h("ap.apTable.pagination.totalRightSuffix")])]):void 0},onChange:E,dataSource:a.records}});function oe(e,t=!0){Object.assign(c,e),s.current=e.current,s.pageSize=e.pageSize,t&&w()}function se(){return{...c}}return{formRef:S,submit:F,reset:Y,refresh:w,refreshByDelete:ee,data:a,handleTableChange:E,handleTableChangeOptional:te,tableProps:ae,dataSource:o.computed(()=>a.records),setDataSource:re,getColumnSFConfig:W,sortedInfo:y,filteredInfo:O,getPaging:se,setPaging:oe,submitWith:U}};exports.DEFAULT_CURRENT=g;exports.DEFAULT_PAGE_SIZE=b;exports.useTablePaging=de;