UNPKG

@pureadmin/table

Version:

二次封装element-plus的Table,提供灵活的配置项

6 lines (5 loc) 12 kB
(function(y,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus"],e):e((y=typeof globalThis<"u"?globalThis:y||self).PureTable={},y.Vue,y.ElementPlus)})(this,function(y,e,j){"use strict";function ge(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:()=>t[r]})}}return n.default=t,Object.freeze(n)}const M=ge(e),me=Object.prototype.hasOwnProperty,L=(t,n)=>me.call(t,n),V=t=>t!==null&&typeof t=="object",H="__epPropKey",ye=((t,n)=>{if(!V(t)||V(r=t)&&r[H])return t;var r;const{values:i,required:c,default:d,type:u,validator:P}=t,w=i||P?O=>{let g=!1,b=[];if(i&&(b=Array.from(i),L(t,"default")&&b.push(d),g||(g=b.includes(O))),P&&(g||(g=P(O))),!g&&b.length>0){const p=[...new Set(b)].map(k=>JSON.stringify(k)).join(", ");e.warn(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${p}], got value ${JSON.stringify(O)}.`)}return g}:void 0,N={type:u,required:!!c,validator:w,[H]:!0};return L(t,"default")&&(N.default=d),N})({type:String,values:["","default","small","large"],required:!1});/** * @vue/shared v3.4.37 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/var be={data:{type:Array,default:()=>[]},size:ye,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object],tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:Boolean};const he={tableKey:{type:[String,Number],default:"0"},columns:{type:Array,default:[]},loading:{type:Boolean,default:!1},loadingConfig:{type:Object,default:()=>{}},alignWhole:{type:String,default:"left"},headerAlign:{type:String,default:""},showOverflowTooltip:{type:Boolean,default:!1},rowHoverBgColor:{type:String,default:""},pagination:{type:Object,default:{total:0,pageSize:5,align:"right",size:"default",background:!1,pageSizes:[5,10,15,20],layout:"total, sizes, prev, pager, next, jumper"}},adaptive:{type:Boolean,default:!1},adaptiveConfig:{type:Object,default:{offsetBottom:96,fixHeader:!0,timeout:60,zIndex:3}},locale:{type:[String,Object],default:""},...be},ve={render:{type:Function},params:{type:Object}},I=e.defineComponent({name:"Renderer",props:ve,setup:t=>()=>e.createVNode(e.Fragment,null,[t.render(t.params)])}),W={name:"en",el:{select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"}}},K={name:"zh-cn",el:{select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"}}},q={name:"zh-tw",el:{select:{loading:"載入中",noMatch:"無相符資料",noData:"無資料",placeholder:"請選擇"},pagination:{goto:"前往",pagesize:"項/頁",total:"共 {total} 項",pageClassifier:"頁",page:"頁",prev:"上一頁",next:"下一頁",currentPage:"第 {pager} 頁",prevPages:"向前 {pager} 頁",nextPages:"向后 {pager} 頁",deprecationWarning:"偵測到已過時的使用方式,請參閱 el-pagination 說明文件以了解更多資訊"},table:{emptyText:"暫無資料",confirmFilter:"篩選",resetFilter:"重置",clearFilter:"全部",sumText:"合計"}}};var _=Object.defineProperty,xe=Object.getOwnPropertyDescriptor,we=Object.getOwnPropertyNames,Oe=Object.prototype.hasOwnProperty,G=(t,n,r,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of we(n))!Oe.call(t,c)&&c!==r&&_(t,c,{get:()=>n[c],enumerable:!(i=xe(n,c))||i.enumerable});return t},Se=Object.prototype.toString;function J(t,n){return Se.call(t)===`[object ${n}]`}function U(t){return J(t,"String")}function Z(t){return typeof t=="function"}var Q,X,Y=t=>t.replace(/\B([A-Z])/g,"-$1").toLowerCase(),x={};((t,n)=>{for(var r in n)_(t,r,{get:n[r],enumerable:!0})})(x,{Vue:()=>M}),G(x,Q=M,"default"),X&&G(X,Q,"default");var je=t=>{let n,r=(t==null?void 0:t.className)??"dark",i=(0,x.shallowRef)(!1),c=()=>{let d=t!=null&&t.selector?t.selector==="html"?document.documentElement:document.body:document.documentElement;i.value=d.classList.contains(r)};return function(d){(0,x.getCurrentInstance)()&&(0,x.onUnmounted)(d)}(()=>{n&&(n.takeRecords(),n.disconnect())}),(0,x.onBeforeMount)(()=>{let d=t!=null&&t.selector?t.selector==="html"?document.documentElement:document.body:document.documentElement;c(),n=new MutationObserver(c),n.observe(d,{attributes:!0,attributeFilter:["class"]})}),{isDark:i,toggleDark:()=>{(t!=null&&t.selector?t.selector==="html"?document.documentElement:document.body:document.documentElement).classList.toggle(r)}}};function ee(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const R=e.defineComponent({name:"PureTable",props:he,directives:{Loading:j.ElLoadingDirective},emits:["page-size-change","page-current-change"],setup(t,{slots:n,attrs:r,emit:i,expose:c}){const{locale:d,i18n:u,ssr:P}=e.inject("locale",{locale:null,i18n:null,ssr:!1}),{locale:w,columns:N,loading:O,tableKey:g,adaptive:b,pagination:p,alignWhole:k,headerAlign:Pe,loadingConfig:F,adaptiveConfig:T,rowHoverBgColor:ne,showOverflowTooltip:Te}=e.toRefs(t),ae=e.ref(!1),{isDark:Ce}=je(),D=e.getCurrentInstance();let Ne=e.unref(p)&&e.unref(p).currentPage&&e.unref(p).pageSize,re=e.computed(()=>{var o,m,s,h;if(!e.unref(u))return;const a=((s=(m=u==null?void 0:u.global)==null?void 0:m.getLocaleMessage(e.unref((o=u==null?void 0:u.global)==null?void 0:o.locale)))==null?void 0:s.el)||((h=u==null?void 0:u.getLocaleMessage(e.unref(u==null?void 0:u.locale)))==null?void 0:h.el);return a?{el:a}:null}),oe=e.computed(()=>U(d)?[W,K,q].filter(a=>a.name===Y(d))[0]:d),$=e.computed(()=>{if(e.unref(w))return U(e.unref(w))?[W,K,q].filter(a=>a.name===Y(e.unref(w)))[0]:e.unref(w)}),Fe=e.computed(()=>{if(!e.unref(F))return;let{text:a,spinner:o,svg:m,viewBox:s}=e.unref(F);return{"element-loading-text":a,"element-loading-spinner":o,"element-loading-svg":m,"element-loading-svg-view-box":s}});const Be=e.computed(()=>{var a,o;if(e.unref(O))return{"element-loading-background":(a=e.unref(F))!=null&&a.background?(o=e.unref(F))==null?void 0:o.background:Ce.value?"rgba(0, 0, 0, 0.45)":"rgba(255, 255, 255, 0.45)"}}),ze=e.computed(()=>Object.assign({width:"100%",margin:"16px 0",display:"flex",flexWrap:"wrap",justifyContent:e.unref(p).align==="left"?"flex-start":e.unref(p).align==="center"?"center":"flex-end"},e.unref(p).style??{})),le=(a,o)=>{const{cellRenderer:m,slot:s,headerRenderer:h,headerSlot:C,filterIconSlot:de,expandSlot:fe,hide:S,children:z,prop:E,...Ee}=a;if(Z(S)&&S(r))return S(r);if(function(l){return J(l,"Boolean")}(S)&&S)return S;const v={default:l=>{var f;return m?e.createVNode(I,{render:m,params:Object.assign(l,{index:l.$index,props:t,attrs:r})},null):s?(f=n==null?void 0:n[s])==null?void 0:f.call(n,Object.assign(l,{index:l.$index,props:t,attrs:r})):void 0}};return h?v.header=l=>e.createVNode(I,{render:h,params:Object.assign(l,{index:l.$index,props:t,attrs:r})},null):n!=null&&n[C]&&(v.header=l=>{var f;return(f=n[C])==null?void 0:f.call(n,Object.assign(l,{index:l.$index,props:t,attrs:r}))}),n!=null&&n[de]&&(v["filter-icon"]=l=>{var f;return(f=n[de])==null?void 0:f.call(n,Object.assign(l,{index:l.$index,props:t,attrs:r}))}),n!=null&&n[fe]&&(v.expand=l=>{var f;return(f=n[fe])==null?void 0:f.call(n,Object.assign(l,{index:l.$index,props:t,attrs:r}))}),(z==null?void 0:z.length)>0&&(v.default=()=>z.map(le)),e.createVNode(j.ElTableColumn,e.mergeProps({key:o},Ee,{prop:Z(E)&&E(o)?E(o):E,align:a!=null&&a.align?a.align:e.unref(k),headerAlign:a!=null&&a.headerAlign?a.headerAlign:e.unref(Pe),showOverflowTooltip:a!=null&&a.showOverflowTooltip?a.showOverflowTooltip:e.unref(Te)}),ee(v)?v:{default:()=>[v]})},ie=()=>{var a;return(a=D==null?void 0:D.proxy)==null?void 0:a.$refs[`TableRef${e.unref(g)}`]},B=()=>ie().$refs,A=async()=>{await e.nextTick();const a=B().tableWrapper,o=e.unref(T).offsetBottom??96;a.style.height=window.innerHeight-a.getBoundingClientRect().top-o+"px"},ue=((a,o=200,m=!1)=>{let s,h,C=o;return function(){s&&clearTimeout(s),m?(s||a.call(h,...arguments),s=setTimeout(()=>s=null,C)):s=setTimeout(()=>a.call(h,...arguments),C)}})(A,e.unref(T).timeout??60),se=async(a=3)=>{await e.nextTick();const o=B().tableHeaderRef.$el.style;o.position="sticky",o.top=0,o.zIndex=a};e.onMounted(()=>{ae.value=!0,e.nextTick(()=>{if(e.unref(ne)&&B().tableWrapper.style.setProperty("--el-table-row-hover-bg-color",e.unref(ne),"important"),e.unref(b)){if(A(),window.addEventListener("resize",ue),Reflect.has(e.unref(T),"fixHeader")&&!e.unref(T).fixHeader)return;se(e.unref(T).zIndex??3)}})}),e.onBeforeUnmount(()=>{e.unref(b)&&window.removeEventListener("resize",ue)}),c({getTableRef:ie,getTableDoms:B,setAdaptive:A,setHeaderSticky:se});let pe=()=>e.createVNode(e.Fragment,null,[e.createVNode(j.ElTable,e.mergeProps(t,r,{ref:`TableRef${e.unref(g)}`}),{default:()=>e.unref(N).map(le),append:()=>n.append&&n.append(),empty:()=>n.empty&&n.empty()}),Ne?e.createVNode(j.ElPagination,e.mergeProps(r,{class:"pure-pagination",style:e.unref(ze)},e.unref(p),{layout:e.unref(p).layout??"total, sizes, prev, pager, next, jumper",pageSizes:e.unref(p).pageSizes??[5,10,15,20],onSizeChange:a=>(o=>{e.unref(p).pageSize=o,i("page-size-change",o)})(a),onCurrentChange:a=>(o=>{e.unref(p).currentPage=o,i("page-current-change",o)})(a)}),null):null]),ce=()=>{let a;return e.withDirectives(e.createVNode("div",e.mergeProps({class:"pure-table",style:"width:100%"},e.unref(Be),e.unref(Fe)),[e.unref(re)||e.unref(oe)||e.unref($)?e.createVNode(j.ElConfigProvider,{locale:e.unref($)?e.unref($):e.unref(re)||e.unref(oe)},ee(a=pe())?a:{default:()=>[a]}):pe()]),[[e.resolveDirective("loading"),e.unref(O)]])};return()=>P?ae.value&&ce():ce()}}),te=Object.assign(R,{install:(t,n)=>{t.component(R.name,R),t.provide("locale",n??{locale:null,i18n:null,ssr:!1})}});y.PureTable=te,y.default=te,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});