3 lines
2.7 KiB
JavaScript
3 lines
2.7 KiB
JavaScript
import{j as e,E as k,r as f,I as p}from"./index-BTPmxtwM.js";function N({columns:l,rows:i,pageSize:r=10}){const[t,o]=f.useState({key:null,dir:1}),[s,d]=f.useState(1);f.useEffect(()=>d(1),[i]);const a=f.useMemo(()=>{if(!t.key)return i;const n=l.find(c=>c.key===t.key);return[...i].sort((c,m)=>{let u=n!=null&&n.sortValue?n.sortValue(c):c[t.key],j=n!=null&&n.sortValue?n.sortValue(m):m[t.key];return typeof u=="string"&&(u=u.toLowerCase(),j=(j||"").toLowerCase()),u<j?-1*t.dir:u>j?1*t.dir:0})},[i,l,t]),h=a.length,g=Math.max(1,Math.ceil(h/r)),b=Math.min(s,g),x=(b-1)*r;function y(n){o(c=>c.key===n?{key:n,dir:c.dir*-1}:{key:n,dir:1})}return{pageRows:a.slice(x,x+r),sort:t,toggleSort:y,page:b,pages:g,setPage:d,from:h?x+1:0,to:Math.min(x+r,h),total:h,pageButtons:v(b,g)}}function v(l,i){const r=[];for(let t=1;t<=i;t++)t===1||t===i||Math.abs(t-l)<=1?r.push(t):r[r.length-1]!=="…"&&r.push("…");return r}function C({from:l,to:i,total:r,page:t,pages:o,setPage:s,pageButtons:d}){return e.jsxs("div",{className:"pagination",children:[e.jsxs("span",{className:"page-info",children:["Showing ",e.jsxs("b",{children:[l,"–",i]})," of ",e.jsx("b",{children:r})]}),e.jsxs("div",{className:"page-controls",children:[e.jsx("button",{className:"page-btn",disabled:t===1,onClick:()=>s(t-1),"aria-label":"Previous page",children:e.jsx(p,{name:"chevron-left"})}),d.map((a,h)=>a==="…"?e.jsx("span",{className:"page-btn",style:{cursor:"default"},children:"…"},`gap-${h}`):e.jsx("button",{className:`page-btn ${a===t?"active":""}`,onClick:()=>s(a),"aria-current":a===t?"page":void 0,children:a},a)),e.jsx("button",{className:"page-btn",disabled:t===o,onClick:()=>s(t+1),"aria-label":"Next page",children:e.jsx(p,{name:"chevron-right"})})]})]})}function S({columns:l,rows:i,pageSize:r=10,empty:t}){const o=N({columns:l,rows:i,pageSize:r});return e.jsxs("div",{className:"dt",children:[e.jsx("div",{className:"table-wrap",children:e.jsxs("table",{className:"data",children:[e.jsx("thead",{children:e.jsx("tr",{children:l.map(s=>{const d=o.sort.key===s.key,a=[s.sortable?"sortable":"",d?o.sort.dir===1?"sorted-asc":"sorted-desc":""].filter(Boolean).join(" ");return e.jsxs("th",{className:a,style:{textAlign:s.align||"left"},onClick:s.sortable?()=>o.toggleSort(s.key):void 0,children:[s.label,s.sortable&&e.jsx("span",{className:"sort-ind",children:d?o.sort.dir===1?"▲":"▼":"⇅"})]},s.key)})})}),e.jsx("tbody",{children:o.pageRows.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:l.length,children:e.jsx(k,{children:t})})}):o.pageRows.map((s,d)=>e.jsx("tr",{children:l.map(a=>e.jsx("td",{style:{textAlign:a.align||"left"},children:a.render?a.render(s):s[a.key]??""},a.key))},s.id??d))})]})}),e.jsx(C,{...o})]})}export{S as D,C as P,N as u};
|
||
//# sourceMappingURL=DataTable-D5imKbZq.js.map
|