@chumsinc/sortable-tables 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,7 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
9
9
 
10
- #### [v3.1.1](https://github.com/ChumsInc/sortable-tables/compare/v3.1.0...v3.1.1)
10
+ #### [v3.1.2](https://github.com/ChumsInc/sortable-tables/compare/v3.1.2-beta.0...v3.1.2)
11
+
12
+ > 2026-04-01
13
+
14
+
15
+
16
+
17
+ ### Commits
18
+
19
+ - [`653ae4f`](https://github.com/ChumsInc/sortable-tables/commit/653ae4f315eb962832c141c0b636ed8d875425e1) chore: do the actual fucking build...
20
+ - [`6c66f93`](https://github.com/ChumsInc/sortable-tables/commit/6c66f93a3a2d596c4ecdc5fc01131d8f3c3981e1) docs: add usage example for `TableVirtuoso` in README.md
21
+ - [`f028a65`](https://github.com/ChumsInc/sortable-tables/commit/f028a6512528b12461967cdaa51f1d84683edd96) refactor: add `DataTableRowCellSet` to exports for increased modularity and update `DataTableRow` to use it
22
+
23
+ #### [v3.1.2-beta.0](https://github.com/ChumsInc/sortable-tables/compare/v3.1.1...v3.1.2-beta.0) - 2026-04-01
24
+
25
+ > 2026-04-01
26
+
27
+
28
+
29
+
30
+ ### Commits
31
+
32
+ - [`20fd61c`](https://github.com/ChumsInc/sortable-tables/commit/20fd61c4674f10f469b3d39030ef6edc402b3b67) npm updates
33
+ - [`9cfce05`](https://github.com/ChumsInc/sortable-tables/commit/9cfce053dfe0849b24ce3e710c0a8e85f8816b8b) chore: update dependencies including @typescript-eslint to 8.58.0 and related packages
34
+ - [`b10d111`](https://github.com/ChumsInc/sortable-tables/commit/b10d111daa11f62afb5e2514a8fb41b4c2a0b359) refactor: extract `DataTableTR` and `DataTableRowCellSet` components to allow for use with react-virtuoso TableVirtuoso components, update `DataTableRow` to use them, and update exports. Export Table component for use with TableVirtuoso
35
+
36
+ #### [v3.1.1](https://github.com/ChumsInc/sortable-tables/compare/v3.1.0...v3.1.1) - 2026-03-02
11
37
 
12
38
  > 2026-03-02
13
39
 
package/README.md CHANGED
@@ -163,6 +163,44 @@ export default function ProductLinesList() {
163
163
  }
164
164
  ```
165
165
 
166
+ ### Usage in TableVirtuoso
167
+ ```tsx
168
+
169
+ const components: TableComponents<DataRow> = {
170
+ Table: ({children, style}) => (
171
+ <Table style={style} className="table table-xs table-list">{children}</Table>
172
+ ),
173
+ TableRow: ({children, item, ...rest}) => (
174
+ <DataTableTR row={item} selected={item._id === selected} onClick={() => setSelected(item._id)} {...rest}>
175
+ {children}
176
+ </DataTableTR>
177
+ ),
178
+ }
179
+ return (
180
+ <TableContainer className="table-responsive">
181
+ <TableVirtuoso data={data} components={components}
182
+ fixedItemHeight={25}
183
+ fixedHeaderContent={() => (
184
+ <tr >
185
+ {fields
186
+ .map((tableField, index) => (
187
+ <SortableTableTH key={index} field={tableField}
188
+ sorted={sort?.field === tableField.field}
189
+ ascending={sort?.ascending}
190
+ className={classNames({[`text-${tableField.align}`]: !!tableField.align})}
191
+ onClick={sortChangeHandler}/>
192
+ ))}
193
+ </tr>
194
+ )}
195
+ itemContent={(_index, row) => (
196
+ <DataTableRowCellSet fields={fields} row={row}/>
197
+ )}
198
+ />
199
+ </TableContainer>
200
+ )
201
+
202
+ ```
203
+
166
204
  ##
167
205
  ## Breaking Changes
168
206
  Breaking changes from `chums-components`
@@ -1,5 +1,5 @@
1
1
  import type { DataTableRowProps } from "./types";
2
- declare function DataTableRow<T = unknown>({ fields, className, rowClassName, selected, row, trRef, onClick, ...rest }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element | null;
2
+ declare function DataTableRow<T = unknown>({ fields, className, rowClassName, selected, row, trRef, onClick, ...rest }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
3
3
  declare namespace DataTableRow {
4
4
  var displayName: string;
5
5
  }
@@ -0,0 +1,2 @@
1
+ import type { DataTableCellSetProps } from "./types";
2
+ export default function DataTableRowCellSet<T = unknown>({ fields, row }: DataTableCellSetProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { DataTableTRProps } from "./types";
2
+ declare function DataTableTR<T = unknown>({ className, rowClassName, selected, row, trRef, onClick, children, ...rest }: DataTableTRProps<T>): import("react/jsx-runtime").JSX.Element | null;
3
+ declare namespace DataTableTR {
4
+ var displayName: string;
5
+ }
6
+ export default DataTableTR;
package/dist/index.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("react"),E=require("@emotion/styled"),h=p.createContext(null);function y({children:e,initialFields:t=[],initialSort:a=null}){const[s,l]=p.useState(t),[r,c]=p.useState(a),u=p.useCallback(m=>{l(m)},[]),i=p.useCallback(m=>{c(m)},[]),d=p.useCallback((m,f)=>{const N=s.map(j=>j.id===m?{...j,...f}:j);l(N)},[s]),o=p.useCallback(m=>s.find(f=>f.id===m),[s]),b=p.useMemo(()=>({fields:s,setFields:u,sort:r,setSort:i,getField:o,updateField:d}),[s,u,r,i,d,o]);return n.jsx(h.Provider,{value:b,children:e})}y.displayName="DataTableProvider";function M(e){var t,a,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(t=0;t<l;t++)e[t]&&(a=M(e[t]))&&(s&&(s+=" "),s+=a)}else for(a in e)e[a]&&(s&&(s+=" "),s+=a);return s}function x(){for(var e,t,a=0,s="",l=arguments.length;a<l;a++)(e=arguments[a])&&(t=M(e))&&(s&&(s+=" "),s+=t);return s}const F=E.table`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),T=require("react"),_=require("@emotion/styled");function q(e){var a,s,t="";if(typeof e=="string"||typeof e=="number")t+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(a=0;a<l;a++)e[a]&&(s=q(e[a]))&&(t&&(t+=" "),t+=s)}else for(s in e)e[s]&&(t&&(t+=" "),t+=s);return t}function b(){for(var e,a,s=0,t="",l=arguments.length;s<l;s++)(e=arguments[s])&&(a=q(e))&&(t&&(t+=" "),t+=a);return t}const M=_.table`
2
2
  --table-sticky-top: ${e=>e.sticky?"0":void 0};
3
3
 
4
4
  thead {
@@ -10,11 +10,11 @@
10
10
  background: ${e=>e.sticky?"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))":"unset"};
11
11
  }
12
12
  }
13
- `;function _({sticky:e,responsive:t,children:a,className:s,ref:l,...r}){if(t){const c=x(s,{"table-responsive":t===!0,[`table-responsive-${t}`]:t!==!0});return n.jsx("div",{className:c,children:n.jsx(F,{ref:l,...r,children:a})})}return n.jsx(F,{className:s,sticky:e,ref:l,...r,children:a})}function v({field:e,className:t,children:a,...s}){if(e.visible===!1)return null;const l=x({[`text-${e.align}`]:!!e.align},t);return n.jsx("th",{className:l,scope:"col",...s,children:a??e.title})}v.displayName="DataTableTH";function T(){const e=p.useContext(h);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return[e.fields,e.setFields]}function q({...e}){const[t]=T();return n.jsx("thead",{...e,children:n.jsx("tr",{children:t.map((a,s)=>n.jsx(v,{...a.thProps,field:a,className:x(typeof a.className=="function"?{[`text-${a.align}`]:!!a.align}:a.className)},String(a.id??s)))})})}q.displayName="DataTableHead";function D({className:e,size:t,responsive:a,sticky:s,data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:i,selected:d,tableHeadProps:o,children:b,tfoot:m,...f}){const N=x("table",e,{[`table-${t}`]:!!t});return n.jsxs(_,{sticky:s,responsive:a,className:N,...f,children:[n.jsx(S,{}),n.jsx(q,{...o}),!!l.length&&n.jsx(C,{data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:i,selected:d}),b,m]})}D.displayName="ContainedDataTable";function B({fields:e,...t}){return n.jsx(y,{initialFields:e,children:n.jsx(D,{...t})})}B.displayName="DataTable";function k({field:e,row:t,className:a,as:s,...l}){if(e.visible===!1)return null;const r=x({[`text-${e.align}`]:!!e.align},a,typeof e.className=="function"?e.className(t):e.className);return p.createElement(s??e.as??"td",{className:r,scope:(s??e.as)==="th"?"row":void 0,colSpan:e.colSpan,...e.cellProps,...l},t[e.field]===void 0&&!e.render?null:typeof e.render=="function"?e.render(t):t[e.field])}k.displayName="DataTableCell";function $({className:e,rowClassName:t,selected:a,row:s,trRef:l,onClick:r,...c}){const[u]=T(),i=o=>{r?.(s,o)},d=typeof t=="function"?t(s):t;return s?n.jsx("tr",{ref:l,className:x({"table-active":a},e,d),onClick:i,...c,children:u.map((o,b)=>n.jsx(k,{field:o,row:s},String(o?.id??b)))}):null}$.displayName="ContainedDataTableRow";function A({fields:e,className:t,rowClassName:a,selected:s,row:l,trRef:r,onClick:c,...u}){const i=o=>{c?.(l,o)},d=typeof a=="function"?a(l):a;return l?n.jsx("tr",{ref:r,className:x({"table-active":s},t,d),onClick:i,...u,children:e.map((o,b)=>n.jsx(k,{field:o,row:l},String(o?.id??b)))}):null}A.displayName="DataTableRow";function C({data:e,keyField:t,rowClassName:a,renderRow:s,onSelectRow:l,selected:r="",children:c,...u}){return n.jsxs("tbody",{...u,children:[e.map(i=>{const d=String(typeof t=="function"?t(i):i[t]),o=typeof r=="function"?r(i):d===r;return s?s(i):n.jsx($,{onClick:l,rowClassName:a,row:i,selected:o},d)}),c]})}C.displayName="DataTableTBody";function g(){const e=p.useContext(h);if(!e)throw new Error("useTableSort must be used within a DataTableProvider");return[e.sort,e.setSort]}const I=e=>e?e==="end"?"flex-end":"center":"flex-start",J=E.div`
13
+ `;function k({sticky:e,responsive:a,children:s,className:t,ref:l,...r}){if(a){const o=b(t,{"table-responsive":a===!0,[`table-responsive-${a}`]:a!==!0});return n.jsx("div",{className:o,children:n.jsx(M,{ref:l,...r,children:s})})}return n.jsx(M,{className:t,sticky:e,ref:l,...r,children:s})}function $({className:e,rowClassName:a,selected:s,row:t,trRef:l,onClick:r,children:o,...c}){const i=d=>{r?.(t,d)},u=typeof a=="function"?a(t):a;return t?n.jsx("tr",{ref:l,className:b({"table-active":s},e,u),onClick:i,...c,children:o}):null}$.displayName="DataTableTR";function y({field:e,row:a,className:s,as:t,...l}){if(e.visible===!1)return null;const r=b({[`text-${e.align}`]:!!e.align},s,typeof e.className=="function"?e.className(a):e.className);return T.createElement(t??e.as??"td",{className:r,scope:(t??e.as)==="th"?"row":void 0,colSpan:e.colSpan,...e.cellProps,...l},a[e.field]===void 0&&!e.render?null:typeof e.render=="function"?e.render(a):a[e.field])}y.displayName="DataTableCell";function B({fields:e,row:a}){return n.jsx(n.Fragment,{children:e.map((s,t)=>n.jsx(y,{field:s,row:a},String(s?.id??t)))})}const f=T.createContext(null);function v({children:e,initialFields:a=[],initialSort:s=null}){const[t,l]=T.useState(a),[r,o]=T.useState(s),c=T.useCallback(m=>{l(m)},[]),i=T.useCallback(m=>{o(m)},[]),u=T.useCallback((m,p)=>{const N=t.map(j=>j.id===m?{...j,...p}:j);l(N)},[t]),d=T.useCallback(m=>t.find(p=>p.id===m),[t]),x=T.useMemo(()=>({fields:t,setFields:c,sort:r,setSort:i,getField:d,updateField:u}),[t,c,r,i,u,d]);return n.jsx(f.Provider,{value:x,children:e})}v.displayName="DataTableProvider";function C({field:e,className:a,children:s,...t}){if(e.visible===!1)return null;const l=b({[`text-${e.align}`]:!!e.align},a);return n.jsx("th",{className:l,scope:"col",...t,children:s??e.title})}C.displayName="DataTableTH";function h(){const e=T.useContext(f);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return[e.fields,e.setFields]}function A({...e}){const[a]=h();return n.jsx("thead",{...e,children:n.jsx("tr",{children:a.map((s,t)=>n.jsx(C,{...s.thProps,field:s,className:b(typeof s.className=="function"?{[`text-${s.align}`]:!!s.align}:s.className)},String(s.id??t)))})})}A.displayName="DataTableHead";function H({className:e,size:a,responsive:s,sticky:t,data:l,keyField:r,rowClassName:o,renderRow:c,onSelectRow:i,selected:u,tableHeadProps:d,children:x,tfoot:m,...p}){const N=b("table",e,{[`table-${a}`]:!!a});return n.jsxs(k,{sticky:t,responsive:s,className:N,...p,children:[n.jsx(S,{}),n.jsx(A,{...d}),!!l.length&&n.jsx(g,{data:l,keyField:r,rowClassName:o,renderRow:c,onSelectRow:i,selected:u}),x,m]})}H.displayName="ContainedDataTable";function V({fields:e,...a}){return n.jsx(v,{initialFields:e,children:n.jsx(H,{...a})})}V.displayName="DataTable";function R({className:e,rowClassName:a,selected:s,row:t,trRef:l,onClick:r,...o}){const[c]=h(),i=d=>{r?.(t,d)},u=typeof a=="function"?a(t):a;return t?n.jsx("tr",{ref:l,className:b({"table-active":s},e,u),onClick:i,...o,children:c.map((d,x)=>n.jsx(y,{field:d,row:t},String(d?.id??x)))}):null}R.displayName="ContainedDataTableRow";function W({fields:e,className:a,rowClassName:s,selected:t,row:l,trRef:r,onClick:o,...c}){return n.jsx($,{className:a,rowClassName:s,row:l,selected:t,trRef:r,onClick:o,...c,children:n.jsx(B,{fields:e,row:l})})}W.displayName="DataTableRow";function g({data:e,keyField:a,rowClassName:s,renderRow:t,onSelectRow:l,selected:r="",children:o,...c}){return n.jsxs("tbody",{...c,children:[e.map(i=>{const u=String(typeof a=="function"?a(i):i[a]),d=typeof r=="function"?r(i):u===r;return t?t(i):n.jsx(R,{onClick:l,rowClassName:s,row:i,selected:d},u)}),o]})}g.displayName="DataTableTBody";function D(){const e=T.useContext(f);if(!e)throw new Error("useTableSort must be used within a DataTableProvider");return[e.sort,e.setSort]}const L=e=>e?e==="end"?"flex-end":"center":"flex-start",O=_.div`
14
14
  display: flex;
15
15
  width: 100%;
16
16
  flex-direction: ${e=>e.align==="end"?"row-reverse":"row"};
17
- justify-content: ${e=>I(e.align)};
17
+ justify-content: ${e=>L(e.align)};
18
18
 
19
19
  .sort-icon {
20
20
  flex-grow: ${e=>e.align==="end"?"1":"0"};
@@ -26,5 +26,5 @@
26
26
  opacity: 0.75;
27
27
  transition: opacity 0.2s;
28
28
  }
29
- `;function H({field:e,sorted:t,ascending:a,className:s,onClick:l}){if(e.visible===!1)return null;if(!e.sortable)return n.jsx(v,{field:e,className:s});const{className:r,...c}=e.thProps??{},u=x(s,r,{[`text-${e.align}`]:!!e.align}),i=()=>{l({field:e.field,ascending:t?!a:!0})},d={"bi-arrow-down":a,"bi-arrow-up":!a};return n.jsx("th",{...c,className:x("sortable",u),scope:"col",onClick:i,children:n.jsxs(J,{sorted:t,align:e.align,children:[n.jsx("div",{className:"field-title",children:e.title}),n.jsx("div",{className:x("me-1 sort-icon",d)})]})})}H.displayName="SortableTableTH";function w({onChangeSort:e}){const[t]=T(),[a]=g();return n.jsx("thead",{children:n.jsx("tr",{children:t.map((s,l)=>n.jsx(H,{field:s,sorted:a?.field===s.field,ascending:a?.ascending,className:x(typeof s.className=="function"?{[`text-${s.align}`]:!!s.align}:s.className),onClick:e},l))})})}w.displayName="SortableTableHead";function V({onChangeSort:e}){const[t]=T(),[a]=g();return n.jsx(w,{fields:t,currentSort:a,onChangeSort:e})}V.displayName="SortableTableHeadWrapper";function P({className:e,size:t,responsive:a,sticky:s,data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:i,selected:d,tableHeadProps:o,children:b,tfoot:m,onChangeSort:f,...N}){const j=x("table",e,{[`table-${t}`]:!!t});return n.jsxs(_,{className:j,responsive:a,sticky:s,...N,children:[n.jsx(S,{}),n.jsx(V,{onChangeSort:f,...o}),!!l.length&&n.jsx(C,{data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:i,selected:d}),b,m]})}P.displayName="ContainedSortableTable";function L({nextSort:e}){const[,t]=g();return p.useEffect(()=>{console.log("setNextSort",e),t(e)},[e,t]),null}function W({fields:e,currentSort:t,...a}){return n.jsxs(y,{initialFields:e,initialSort:t,children:[n.jsx(L,{nextSort:t}),n.jsx(P,{...a})]})}W.displayName="SortableTable";const O=[10,25,50,100,250,500,1e3];function R({value:e,pageValues:t=O,size:a,label:s,className:l,onChange:r,...c}){const u=p.useId(),i=b=>r(Number(b.target.value)),d=l??x("form-select",{[`form-select-${a}`]:!!a}),o=x("input-group",{[`input-group-${a}`]:!!a});return n.jsxs("div",{className:o,children:[n.jsx("label",{className:"input-group-text",htmlFor:u,children:s??"Rows"}),n.jsx("select",{className:d,id:u,value:e,onChange:i,...c,children:t.map(b=>n.jsx("option",{value:b,children:b},b))})]},e)}R.displayName="RowsPerPage";function G({page:e,rowsPerPage:t,onChangePage:a,count:s,size:l,showFirst:r,showLast:c,className:u,rowsPerPageProps:i,...d}){const o=s===0?0:e*t+1,b=Math.min(e*t+t,s),m=t===0?0:Math.floor((s-1)/t),f=x("btn btn-link",{[`btn-${l}`]:!!l});return n.jsxs("div",{className:x("row g-3 justify-content-end",u),...d,children:[!!i&&n.jsx("div",{className:"col-auto",children:n.jsx(R,{...i,value:t,size:l})}),n.jsx("div",{className:"col-auto",children:n.jsxs("div",{className:"row g-3 flex-nowrap align-items-baseline",children:[n.jsxs("div",{className:"col-auto",children:[o,"-",b," of ",s]}),r&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:f,disabled:e===0,onClick:()=>a(0),"aria-label":"First page",children:n.jsx("span",{className:"bi-chevron-bar-left","aria-hidden":"true"})})}),n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:f,disabled:e===0,onClick:()=>a(e-1),"aria-label":"Previous page",children:n.jsx("span",{className:"bi-chevron-left","aria-hidden":"true"})})}),n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:f,disabled:e>=m,onClick:()=>a(e+1),"aria-label":"Next page",children:n.jsx("span",{className:"bi-chevron-right","aria-hidden":"true"})})}),c&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:f,disabled:e>=m,onClick:()=>a(m),"aria-label":"Last page",children:n.jsx("span",{className:"bi-chevron-bar-right","aria-hidden":"true"})})})]})})]})}G.displayname="TablePagination";function S(){const[e]=T();return n.jsx("colgroup",{children:e.filter(t=>t.visible!==!1).map((t,a)=>n.jsx("col",{className:t.colClassName,span:t.colSpan??1},a))})}S.displayName="DataTableCols";function K(e){const t=p.useContext(h);if(!t)throw new Error("useField must be used within a DataTableProvider");return[t.fields.find(a=>a.id===e)??null,t.updateField]}function Q(){const e=p.useContext(h);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return e}exports.ContainedDataTable=D;exports.ContainedDataTableRow=$;exports.ContainedSortableTable=P;exports.DataTable=B;exports.DataTableCols=S;exports.DataTableContext=h;exports.DataTableProvider=y;exports.DataTableRow=A;exports.DataTableTBody=C;exports.DataTableTH=v;exports.RowsPerPage=R;exports.SortableTable=W;exports.SortableTableHead=w;exports.SortableTableTH=H;exports.TablePagination=G;exports.useField=K;exports.useTableContext=Q;exports.useTableFields=T;exports.useTableSort=g;
29
+ `;function w({field:e,sorted:a,ascending:s,className:t,onClick:l}){if(e.visible===!1)return null;if(!e.sortable)return n.jsx(C,{field:e,className:t});const{className:r,...o}=e.thProps??{},c=b(t,r,{[`text-${e.align}`]:!!e.align}),i=()=>{l({field:e.field,ascending:a?!s:!0})},u={"bi-arrow-down":s,"bi-arrow-up":!s};return n.jsx("th",{...o,className:b("sortable",c),scope:"col",onClick:i,children:n.jsxs(O,{sorted:a,align:e.align,children:[n.jsx("div",{className:"field-title",children:e.title}),n.jsx("div",{className:b("me-1 sort-icon",u)})]})})}w.displayName="SortableTableTH";function P({onChangeSort:e}){const[a]=h(),[s]=D();return n.jsx("thead",{children:n.jsx("tr",{children:a.map((t,l)=>n.jsx(w,{field:t,sorted:s?.field===t.field,ascending:s?.ascending,className:b(typeof t.className=="function"?{[`text-${t.align}`]:!!t.align}:t.className),onClick:e},l))})})}P.displayName="SortableTableHead";function G({onChangeSort:e}){const[a]=h(),[s]=D();return n.jsx(P,{fields:a,currentSort:s,onChangeSort:e})}G.displayName="SortableTableHeadWrapper";function F({className:e,size:a,responsive:s,sticky:t,data:l,keyField:r,rowClassName:o,renderRow:c,onSelectRow:i,selected:u,tableHeadProps:d,children:x,tfoot:m,onChangeSort:p,...N}){const j=b("table",e,{[`table-${a}`]:!!a});return n.jsxs(k,{className:j,responsive:s,sticky:t,...N,children:[n.jsx(S,{}),n.jsx(G,{onChangeSort:p,...d}),!!l.length&&n.jsx(g,{data:l,keyField:r,rowClassName:o,renderRow:c,onSelectRow:i,selected:u}),x,m]})}F.displayName="ContainedSortableTable";function K({nextSort:e}){const[,a]=D();return T.useEffect(()=>{console.log("setNextSort",e),a(e)},[e,a]),null}function I({fields:e,currentSort:a,...s}){return n.jsxs(v,{initialFields:e,initialSort:a,children:[n.jsx(K,{nextSort:a}),n.jsx(F,{...s})]})}I.displayName="SortableTable";const Q=[10,25,50,100,250,500,1e3];function E({value:e,pageValues:a=Q,size:s,label:t,className:l,onChange:r,...o}){const c=T.useId(),i=x=>r(Number(x.target.value)),u=l??b("form-select",{[`form-select-${s}`]:!!s}),d=b("input-group",{[`input-group-${s}`]:!!s});return n.jsxs("div",{className:d,children:[n.jsx("label",{className:"input-group-text",htmlFor:c,children:t??"Rows"}),n.jsx("select",{className:u,id:c,value:e,onChange:i,...o,children:a.map(x=>n.jsx("option",{value:x,children:x},x))})]},e)}E.displayName="RowsPerPage";function J({page:e,rowsPerPage:a,onChangePage:s,count:t,size:l,showFirst:r,showLast:o,className:c,rowsPerPageProps:i,...u}){const d=t===0?0:e*a+1,x=Math.min(e*a+a,t),m=a===0?0:Math.floor((t-1)/a),p=b("btn btn-link",{[`btn-${l}`]:!!l});return n.jsxs("div",{className:b("row g-3 justify-content-end",c),...u,children:[!!i&&n.jsx("div",{className:"col-auto",children:n.jsx(E,{...i,value:a,size:l})}),n.jsx("div",{className:"col-auto",children:n.jsxs("div",{className:"row g-3 flex-nowrap align-items-baseline",children:[n.jsxs("div",{className:"col-auto",children:[d,"-",x," of ",t]}),r&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,disabled:e===0,onClick:()=>s(0),"aria-label":"First page",children:n.jsx("span",{className:"bi-chevron-bar-left","aria-hidden":"true"})})}),n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,disabled:e===0,onClick:()=>s(e-1),"aria-label":"Previous page",children:n.jsx("span",{className:"bi-chevron-left","aria-hidden":"true"})})}),n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,disabled:e>=m,onClick:()=>s(e+1),"aria-label":"Next page",children:n.jsx("span",{className:"bi-chevron-right","aria-hidden":"true"})})}),o&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,disabled:e>=m,onClick:()=>s(m),"aria-label":"Last page",children:n.jsx("span",{className:"bi-chevron-bar-right","aria-hidden":"true"})})})]})})]})}J.displayname="TablePagination";function S(){const[e]=h();return n.jsx("colgroup",{children:e.filter(a=>a.visible!==!1).map((a,s)=>n.jsx("col",{className:a.colClassName,span:a.colSpan??1},s))})}S.displayName="DataTableCols";function U(e){const a=T.useContext(f);if(!a)throw new Error("useField must be used within a DataTableProvider");return[a.fields.find(s=>s.id===e)??null,a.updateField]}function X(){const e=T.useContext(f);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return e}exports.ContainedDataTable=H;exports.ContainedDataTableRow=R;exports.ContainedSortableTable=F;exports.DataTable=V;exports.DataTableCell=y;exports.DataTableCols=S;exports.DataTableContext=f;exports.DataTableProvider=v;exports.DataTableRow=W;exports.DataTableRowCellSet=B;exports.DataTableTBody=g;exports.DataTableTH=C;exports.DataTableTR=$;exports.RowsPerPage=E;exports.SortableTable=I;exports.SortableTableHead=P;exports.SortableTableTH=w;exports.Table=k;exports.TablePagination=J;exports.useField=U;exports.useTableContext=X;exports.useTableFields=h;exports.useTableSort=D;
30
30
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/DataTableContext.ts","../src/DataTableProvider.tsx","../node_modules/clsx/dist/clsx.mjs","../src/Table.tsx","../src/DataTableTH.tsx","../src/useTableFields.ts","../src/DataTableHead.tsx","../src/ContainedDataTable.tsx","../src/DataTable.tsx","../src/DataTableCell.tsx","../src/ContainedDataTableRow.tsx","../src/DataTableRow.tsx","../src/DataTableTBody.tsx","../src/useTableSort.ts","../src/SortableTableTH.tsx","../src/SortableTableHead.tsx","../src/SortableTableHeadWrapper.tsx","../src/ContainedSortableTable.tsx","../src/SortHelper.tsx","../src/SortableTable.tsx","../src/RowsPerPage.tsx","../src/TablePagination.tsx","../src/DataTableCols.tsx","../src/useField.ts","../src/useTableContext.ts"],"sourcesContent":["import {createContext} from \"react\";\r\nimport type {DataTableField, SortProps} from \"./types\";\r\n\r\nexport interface TableContextData<T = unknown> {\r\n fields: DataTableField<T>[];\r\n setFields: (next: DataTableField<T>[] | ((prev: DataTableField<T>[]) => DataTableField<T>[])) => void;\r\n sort: SortProps<T>|null;\r\n setSort: (next: SortProps<T> | null | ((prev:SortProps<T>|null) => SortProps<T>|null )) => void;\r\n getField: (key: string | number) => DataTableField<T> | undefined;\r\n updateField: (key: string | number, arg: Partial<DataTableField<T>>) => void;\r\n}\r\n\r\nexport const DataTableContext = createContext<TableContextData<unknown> | null>(null)\r\n","import {type ReactNode, useCallback, useMemo, useState} from \"react\";\r\nimport type {DataTableField, SortProps} from \"./types\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport interface TableProviderProps<T = unknown> {\r\n initialFields: DataTableField<T>[];\r\n initialSort?: SortProps<T>|null;\r\n children: ReactNode;\r\n}\r\n\r\nexport default function DataTableProvider<T = unknown>({\r\n children,\r\n initialFields = [],\r\n initialSort = null,\r\n }: TableProviderProps<T>) {\r\n const [fields, setFieldsState] = useState<DataTableField<T>[]>(initialFields);\r\n const [sort, setProviderSort] = useState<SortProps<T> | null>(initialSort);\r\n\r\n const setFields = useCallback(\r\n (fields: DataTableField<T>[] | ((prev: DataTableField<T>[]) => DataTableField<T>[])) => {\r\n setFieldsState(fields)\r\n }, []);\r\n\r\n const setSort = useCallback(\r\n (sort: SortProps<T> | null | ((sort:SortProps<T>|null) => SortProps<T> | null)) => {\r\n setProviderSort(sort)\r\n }, [])\r\n\r\n\r\n const updateField = useCallback((key: string | number, arg: Partial<DataTableField<T>>) => {\r\n const nextState = fields.map(field => {\r\n if (field.id === key) {\r\n return {...field, ...arg}\r\n }\r\n return field;\r\n });\r\n setFieldsState(nextState);\r\n }, [fields])\r\n\r\n const getField = useCallback((key: string | number) => fields.find(field => field.id === key), [fields]);\r\n\r\n\r\n const value = useMemo<TableContextData<T>>(\r\n () => ({\r\n fields,\r\n setFields,\r\n sort,\r\n setSort,\r\n getField,\r\n updateField\r\n }),\r\n [fields, setFields, sort, setSort, updateField, getField]\r\n )\r\n\r\n return (\r\n <DataTableContext.Provider value={value as unknown as TableContextData<unknown>}>\r\n {children}\r\n </DataTableContext.Provider>\r\n )\r\n}\r\nDataTableProvider.displayName = 'DataTableProvider';\r\n\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {type RefObject, type TableHTMLAttributes} from 'react';\r\nimport styled from \"@emotion/styled\";\r\nimport type {DataTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nexport interface StyledTableProps extends TableHTMLAttributes<HTMLTableElement>, Pick<DataTableProps, 'sticky' | 'responsive'> {\r\n ref?: RefObject<HTMLTableElement>;\r\n}\r\n\r\nconst StyledTable = styled.table<StyledTableProps>`\r\n --table-sticky-top: ${props => props.sticky ? '0' : undefined};\r\n\r\n thead {\r\n tr:nth-of-type(1) td,\r\n tr:nth-of-type(1) th {\r\n top: var(--table-sticky-top, unset);\r\n position: ${props => props.sticky ? \"sticky\" : \"unset\"};\r\n z-index: ${props => props.sticky ? 10 : \"unset\"};\r\n background: ${props => props.sticky ? \"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))\" : \"unset\"};\r\n }\r\n }\r\n`\r\n\r\n\r\nexport default function Table({\r\n sticky,\r\n responsive,\r\n children,\r\n className,\r\n ref,\r\n ...rest\r\n }: StyledTableProps) {\r\n if (responsive) {\r\n const _className = clsx(className, {\r\n 'table-responsive': responsive === true,\r\n [`table-responsive-${responsive}`]: responsive !== true,\r\n })\r\n return (\r\n <div className={_className}>\r\n <StyledTable ref={ref} {...rest}>{children}</StyledTable>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <StyledTable className={className} sticky={sticky} ref={ref} {...rest}>{children}</StyledTable>\r\n )\r\n}\r\n\r\n","import type {DataTableTHProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\n\r\nexport default function DataTableTH<T = unknown>({\r\n field,\r\n className,\r\n children,\r\n ...rest\r\n }: DataTableTHProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n const thClassName = clsx({[`text-${field.align}`]: !!field.align}, className);\r\n return (\r\n <th className={thClassName} scope=\"col\" {...rest}>\r\n {children ?? field.title}\r\n </th>\r\n )\r\n}\r\nDataTableTH.displayName = 'DataTableTH';\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\n/**\r\n * Returns a tuple containing the fields and a function to update them.\r\n * @returns [fields, setFields]\r\n */\r\nexport function useTableFields<T = unknown>(): [\r\n fields: TableContextData<T>['fields'],\r\n setFields: TableContextData<T>['setFields']\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableContext must be used within a DataTableProvider');\r\n }\r\n return [\r\n context.fields,\r\n context.setFields\r\n ];\r\n}\r\n","import {type TableHTMLAttributes} from \"react\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\n\r\nexport default function DataTableHead<T = unknown>({...rest}: TableHTMLAttributes<HTMLTableSectionElement>) {\r\n const [fields] = useTableFields<T>()\r\n return (\r\n <thead {...rest}>\r\n <tr>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableTH key={String(field.id ?? index)}\r\n {...field.thProps}\r\n field={field}\r\n className={clsx(\r\n typeof field.className === 'function'\r\n ? {[`text-${field.align}`]: !!field.align}\r\n : field.className\r\n )}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\nDataTableHead.displayName = 'DataTableHead';\r\n","import type {DataTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport Table from \"./Table\";\r\nimport {DataTableCols, DataTableTBody} from \"./index\";\r\nimport DataTableHead from \"./DataTableHead\";\r\n\r\nexport default function ContainedDataTable<T = unknown>({\r\n className,\r\n size,\r\n responsive,\r\n sticky,\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected,\r\n tableHeadProps,\r\n children,\r\n tfoot,\r\n ...rest\r\n }: Omit<DataTableProps<T>, 'fields'>) {\r\n const tableClassName = clsx('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table sticky={sticky} responsive={responsive} className={tableClassName} {...rest}>\r\n <DataTableCols/>\r\n <DataTableHead {...tableHeadProps}/>\r\n {!!data.length && (\r\n <DataTableTBody data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\nContainedDataTable.displayName = 'ContainedDataTable';\r\n","import type {DataTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport ContainedDataTable from \"./ContainedDataTable\";\r\n\r\n\r\nexport default function DataTable<T = unknown>({\r\n fields,\r\n ...rest\r\n }: DataTableProps<T>) {\r\n return (\r\n <DataTableProvider initialFields={fields}>\r\n <ContainedDataTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\nDataTable.displayName = 'DataTable';\r\n","import {createElement, type ReactNode} from 'react';\r\nimport type {DataTableCellProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\n\r\nexport default function DataTableCell<T = unknown>({field, row, className, as, ...rest}: DataTableCellProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n const cellClassName = clsx(\r\n {[`text-${field.align}`]: !!field.align},\r\n className,\r\n typeof field.className === 'function' ? field.className(row) : field.className\r\n );\r\n return createElement(\r\n (as ?? field.as) ?? 'td',\r\n {\r\n className: cellClassName,\r\n scope: (as ?? field.as) === 'th' ? 'row' : undefined,\r\n colSpan: field.colSpan,\r\n ...field.cellProps,\r\n ...rest\r\n },\r\n (row[field.field] === undefined && !field.render)\r\n ? null\r\n : (\r\n typeof field.render === 'function'\r\n ? field.render(row)\r\n : row[field.field] as ReactNode\r\n )\r\n )\r\n}\r\nDataTableCell.displayName = 'DataTableCell';\r\n","import {type MouseEvent} from 'react';\r\nimport type {DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\n\r\nexport default function ContainedDataTableRow<T = unknown>({\r\n className,\r\n rowClassName,\r\n selected,\r\n row,\r\n trRef,\r\n onClick,\r\n ...rest\r\n }: Omit<DataTableRowProps<T>, 'fields'>) {\r\n const [fields] = useTableFields<T>()\r\n const clickHandler = (ev: MouseEvent<HTMLTableRowElement>) => {\r\n onClick?.(row, ev)\r\n }\r\n\r\n const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;\r\n if (!row) {\r\n return null;\r\n }\r\n\r\n return (\r\n <tr ref={trRef}\r\n className={clsx({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableCell key={String(field?.id ?? index)} field={field} row={row}/>\r\n ))}\r\n </tr>\r\n )\r\n}\r\nContainedDataTableRow.displayName = 'ContainedDataTableRow';\r\n","import {type MouseEvent} from 'react';\r\nimport type {DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\nimport clsx from \"clsx\";\r\n\r\nexport default function DataTableRow<T = unknown>({\r\n fields,\r\n className,\r\n rowClassName,\r\n selected,\r\n row,\r\n trRef,\r\n onClick,\r\n ...rest\r\n }: DataTableRowProps<T>) {\r\n const clickHandler = (ev: MouseEvent<HTMLTableRowElement>) => {\r\n onClick?.(row, ev)\r\n }\r\n\r\n const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;\r\n if (!row) {\r\n return null;\r\n }\r\n\r\n return (\r\n <tr ref={trRef}\r\n className={clsx({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableCell key={String(field?.id ?? index)} field={field} row={row}/>\r\n ))}\r\n </tr>\r\n )\r\n}\r\nDataTableRow.displayName = 'DataTableRow';\r\n","import ContainedDataTableRow from \"./ContainedDataTableRow\";\r\nimport type {DataTableTBodyProps} from \"./types\";\r\n\r\n\r\nexport default function DataTableTBody<T = unknown>({\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n children,\r\n ...rest\r\n }: DataTableTBodyProps<T>) {\r\n return (\r\n <tbody {...rest}>\r\n {data.map(row => {\r\n const keyValue = String(typeof keyField === \"function\" ? keyField(row) : row[keyField]);\r\n const isSelected = typeof selected === 'function' ? selected(row) : keyValue === selected;\r\n if (renderRow) {\r\n return renderRow(row);\r\n }\r\n return (\r\n <ContainedDataTableRow key={keyValue} onClick={onSelectRow}\r\n rowClassName={rowClassName}\r\n row={row} selected={isSelected}/>\r\n )\r\n })}\r\n {children}\r\n </tbody>\r\n )\r\n}\r\nDataTableTBody.displayName = 'DataTableTBody';\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\n/**\r\n * Returns a tuple containing the currentSort and a function to update the sort.\r\n * @returns [sort, setSort]\r\n */\r\nexport function useTableSort<T = unknown>(): [\r\n sort: TableContextData<T>['sort'],\r\n setSort: TableContextData<T>['setSort']\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableSort must be used within a DataTableProvider');\r\n }\r\n return [\r\n context.sort,\r\n context.setSort\r\n ];\r\n}\r\n","import DataTableTH from \"./DataTableTH\";\r\nimport type {SortableTableTHProps, UIFlexAlign} from \"./types\";\r\nimport styled from '@emotion/styled';\r\nimport clsx from \"clsx\";\r\n\r\nconst flexJustifyContent = (align?: UIFlexAlign) => {\r\n if (!align) {\r\n return 'flex-start';\r\n }\r\n switch (align) {\r\n case 'end':\r\n return 'flex-end';\r\n default:\r\n return 'center';\r\n }\r\n}\r\n\r\ntype FieldTitleProps = {\r\n sorted?: boolean;\r\n align?: UIFlexAlign;\r\n};\r\nconst FieldTitle = styled.div<FieldTitleProps>`\r\n display: flex;\r\n width: 100%;\r\n flex-direction: ${props => props.align === 'end' ? 'row-reverse' : 'row'};\r\n justify-content: ${props => flexJustifyContent(props.align)};\r\n\r\n .sort-icon {\r\n flex-grow: ${props => props.align === 'end' ? '1' : '0'};\r\n opacity: ${props => props.sorted ? 1 : 0};\r\n }\r\n\r\n &:hover .sort-icon {\r\n color: ${props => props.sorted ? 'unset' : 'var(--bs-primary)'};\r\n opacity: 0.75;\r\n transition: opacity 0.2s;\r\n }\r\n`\r\n\r\nexport default function SortableTableTH<T = unknown>({\r\n field,\r\n sorted,\r\n ascending,\r\n className,\r\n onClick\r\n }: SortableTableTHProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n if (!field.sortable) {\r\n return (<DataTableTH field={field} className={className}/>)\r\n }\r\n\r\n const {className: _thClassName, ...thProps} = field.thProps ?? {};\r\n const thClassName = clsx(\r\n className,\r\n _thClassName,\r\n {[`text-${field.align}`]: !!field.align}\r\n );\r\n\r\n const clickHandler = () => {\r\n onClick({field: field.field, ascending: !sorted ? true : !ascending});\r\n }\r\n\r\n const iconClassName = {\r\n 'bi-arrow-down': ascending,\r\n 'bi-arrow-up': !ascending,\r\n }\r\n\r\n return (\r\n <th {...thProps} className={clsx(\"sortable\", thClassName)} scope=\"col\" onClick={clickHandler}>\r\n <FieldTitle sorted={sorted} align={field.align}>\r\n <div className=\"field-title\">{field.title}</div>\r\n <div className={clsx('me-1 sort-icon', iconClassName)}/>\r\n </FieldTitle>\r\n </th>\r\n )\r\n}\r\nSortableTableTH.displayName = 'SortableTableTH';\r\n","import SortableTableTH from \"./SortableTableTH\";\r\nimport type {SortableTableHeadProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\nimport {useTableSort} from \"./useTableSort\";\r\n\r\nexport default function SortableTableHead<T = unknown>({\r\n onChangeSort,\r\n }: SortableTableHeadProps<T>) {\r\n const [fields] = useTableFields<T>()\r\n const [sort] = useTableSort<T>();\r\n return (\r\n <thead>\r\n <tr>\r\n {fields\r\n .map((tableField, index) => (\r\n <SortableTableTH<T> key={index} field={tableField}\r\n sorted={sort?.field === tableField.field} ascending={sort?.ascending}\r\n className={clsx(\r\n typeof tableField.className === 'function'\r\n ? {[`text-${tableField.align}`]: !!tableField.align}\r\n : tableField.className\r\n )} onClick={onChangeSort}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\n\r\nSortableTableHead.displayName = 'SortableTableHead';\r\n\r\n","import {useTableFields} from \"./useTableFields\";\r\nimport {useTableSort} from \"./useTableSort\";\r\nimport SortableTableHead from \"./SortableTableHead\";\r\nimport type {SortProps} from \"./types\";\r\n\r\nexport interface SortableTableHeadWrapperProps<T = unknown> {\r\n onChangeSort: (sort: SortProps<T>) => void;\r\n}\r\n\r\nexport default function SortableTableHeadWrapper<T = unknown>({\r\n onChangeSort,\r\n }: SortableTableHeadWrapperProps<T>) {\r\n const [fields] = useTableFields<T>()\r\n const [sort] = useTableSort<T>();\r\n\r\n return (\r\n <SortableTableHead fields={fields} currentSort={sort} onChangeSort={onChangeSort} />\r\n )\r\n}\r\nSortableTableHeadWrapper.displayName = 'SortableTableHeadWrapper';\r\n","import type {SortableTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport Table from \"./Table\";\r\nimport {DataTableCols, DataTableTBody} from \"./index\";\r\nimport SortableTableHeadWrapper from \"./SortableTableHeadWrapper\";\r\n\r\nexport default function ContainedSortableTable<T = unknown>({\r\n className,\r\n size,\r\n responsive,\r\n sticky,\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected,\r\n tableHeadProps,\r\n children,\r\n tfoot,\r\n onChangeSort,\r\n ...rest\r\n }: Omit<SortableTableProps<T>, 'fields' | 'currentSort'>) {\r\n const tableClassName = clsx('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table className={tableClassName} responsive={responsive} sticky={sticky} {...rest}>\r\n <DataTableCols/>\r\n <SortableTableHeadWrapper onChangeSort={onChangeSort} {...tableHeadProps}/>\r\n {!!data.length && (\r\n <DataTableTBody data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\nContainedSortableTable.displayName = 'ContainedSortableTable';\r\n","import type {SortProps} from \"./types\";\r\nimport {useTableSort} from \"./useTableSort\";\r\nimport {useEffect} from \"react\";\r\n\r\nexport interface StandaloneSortHelperProps<T = unknown> {\r\n nextSort: SortProps<T>\r\n}\r\nexport function SortHelper<T = unknown>({nextSort}:StandaloneSortHelperProps<T>) {\r\n const [, setNextSort] = useTableSort<T>();\r\n useEffect(() => {\r\n console.log('setNextSort', nextSort);\r\n setNextSort(nextSort);\r\n }, [nextSort, setNextSort]);\r\n return null;\r\n}\r\n","import type {SortableTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport ContainedSortableTable from \"./ContainedSortableTable\";\r\nimport {SortHelper} from \"./SortHelper\";\r\n\r\n\r\nexport default function SortableTable<T = unknown>({\r\n fields,\r\n currentSort,\r\n ...rest\r\n }: SortableTableProps<T>) {\r\n return (\r\n <DataTableProvider initialFields={fields} initialSort={currentSort}>\r\n <SortHelper nextSort={currentSort}/>\r\n <ContainedSortableTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\n\r\nSortableTable.displayName = 'SortableTable';\r\n","import {type ChangeEvent, useId} from 'react';\r\nimport type {RowsPerPageProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nconst defaultRowsPerPageValues: number[] = [10, 25, 50, 100, 250, 500, 1000];\r\n\r\nexport default function RowsPerPage({\r\n value,\r\n pageValues = defaultRowsPerPageValues,\r\n size,\r\n label,\r\n className,\r\n onChange,\r\n ...rest\r\n }: RowsPerPageProps) {\r\n const id = useId();\r\n const changeHandler = (ev: ChangeEvent<HTMLSelectElement>) => onChange(Number(ev.target.value));\r\n const selectClassName = className ?? clsx('form-select', {[`form-select-${size}`]: !!size});\r\n const inputGroupClassName = clsx('input-group', {\r\n [`input-group-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <div className={inputGroupClassName} key={value}>\r\n <label className=\"input-group-text\" htmlFor={id}>{label ?? 'Rows'}</label>\r\n <select className={selectClassName} id={id}\r\n value={value} onChange={changeHandler} {...rest}>\r\n {pageValues.map(value => (\r\n <option key={value} value={value}>{value}</option>\r\n ))}\r\n </select>\r\n </div>\r\n )\r\n}\r\nRowsPerPage.displayName = 'RowsPerPage';\r\n","import RowsPerPage from \"./RowsPerPage\";\r\nimport type {TablePaginationProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nexport default function TablePagination({\r\n page,\r\n rowsPerPage,\r\n onChangePage,\r\n count,\r\n size,\r\n showFirst,\r\n showLast,\r\n className,\r\n rowsPerPageProps,\r\n ...rest\r\n }: TablePaginationProps) {\r\n\r\n const first = count === 0 ? 0 : (page * rowsPerPage) + 1;\r\n const last = Math.min(page * rowsPerPage + rowsPerPage, count);\r\n const lastPage = rowsPerPage === 0 ? 0 : Math.floor((count - 1) / rowsPerPage);\r\n\r\n const buttonClassName = clsx(\"btn btn-link\", {[`btn-${size}`]: !!size});\r\n\r\n return (\r\n <div className={clsx(\"row g-3 justify-content-end\", className)} {...rest}>\r\n {!!rowsPerPageProps && (\r\n <div className=\"col-auto\">\r\n <RowsPerPage {...rowsPerPageProps} value={rowsPerPage} size={size}/>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <div className=\"row g-3 flex-nowrap align-items-baseline\">\r\n <div className=\"col-auto\">\r\n {first}-{last} of {count}\r\n </div>\r\n {showFirst && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(0)} aria-label=\"First page\">\r\n <span className=\"bi-chevron-bar-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(page - 1)} aria-label=\"Previous page\">\r\n <span className=\"bi-chevron-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(page + 1)} aria-label=\"Next page\">\r\n <span className=\"bi-chevron-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n {showLast && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(lastPage)} aria-label=\"Last page\">\r\n <span className=\"bi-chevron-bar-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\nTablePagination.displayname = 'TablePagination';\r\n","import {useTableFields} from \"./useTableFields\";\r\n\r\nexport default function DataTableCols<T = unknown>() {\r\n const [fields] = useTableFields<T>()\r\n return (\r\n <colgroup>\r\n {fields\r\n .filter(field => field.visible !== false)\r\n .map((field, index) => (\r\n <col key={index}\r\n className={field.colClassName}\r\n span={field.colSpan ?? 1}/>\r\n ))}\r\n </colgroup>\r\n )\r\n}\r\nDataTableCols.displayName = 'DataTableCols';\r\n\r\n","import type {DataTableField} from \"./types\";\r\nimport {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport type UseFieldArg<T = unknown> = keyof T & ((string | number) & {})\r\nexport function useField<T = unknown>(key: UseFieldArg<T>): [\r\n field:DataTableField<T>|null,\r\n updateField: (key: string|number, arg: Partial<DataTableField<T>>) => void\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useField must be used within a DataTableProvider');\r\n }\r\n\r\n return [\r\n context.fields.find(field => field.id === key) ?? null,\r\n context.updateField,\r\n ]\r\n}\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport function useTableContext<T = unknown>():TableContextData<T> {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableContext must be used within a DataTableProvider');\r\n }\r\n return context;\r\n}\r\n"],"names":["DataTableContext","createContext","DataTableProvider","children","initialFields","initialSort","fields","setFieldsState","useState","sort","setProviderSort","setFields","useCallback","setSort","updateField","key","arg","nextState","field","getField","value","useMemo","jsx","r","f","n","o","clsx","StyledTable","styled","props","Table","sticky","responsive","className","ref","rest","_className","DataTableTH","thClassName","useTableFields","context","useContext","DataTableHead","index","ContainedDataTable","size","data","keyField","rowClassName","renderRow","onSelectRow","selected","tableHeadProps","tfoot","tableClassName","DataTableCols","DataTableTBody","DataTable","DataTableCell","row","as","cellClassName","createElement","ContainedDataTableRow","trRef","onClick","clickHandler","ev","DataTableRow","jsxs","keyValue","isSelected","useTableSort","flexJustifyContent","align","FieldTitle","SortableTableTH","sorted","ascending","_thClassName","thProps","iconClassName","SortableTableHead","onChangeSort","tableField","SortableTableHeadWrapper","ContainedSortableTable","SortHelper","nextSort","setNextSort","useEffect","SortableTable","currentSort","defaultRowsPerPageValues","RowsPerPage","pageValues","label","onChange","id","useId","changeHandler","selectClassName","inputGroupClassName","TablePagination","page","rowsPerPage","onChangePage","count","showFirst","showLast","rowsPerPageProps","first","last","lastPage","buttonClassName","useField","useTableContext"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/Table.tsx","../src/DataTableTR.tsx","../src/DataTableCell.tsx","../src/DataTableRowCellSet.tsx","../src/DataTableContext.ts","../src/DataTableProvider.tsx","../src/DataTableTH.tsx","../src/useTableFields.ts","../src/DataTableHead.tsx","../src/ContainedDataTable.tsx","../src/DataTable.tsx","../src/ContainedDataTableRow.tsx","../src/DataTableRow.tsx","../src/DataTableTBody.tsx","../src/useTableSort.ts","../src/SortableTableTH.tsx","../src/SortableTableHead.tsx","../src/SortableTableHeadWrapper.tsx","../src/ContainedSortableTable.tsx","../src/SortHelper.tsx","../src/SortableTable.tsx","../src/RowsPerPage.tsx","../src/TablePagination.tsx","../src/DataTableCols.tsx","../src/useField.ts","../src/useTableContext.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {type RefObject, type TableHTMLAttributes} from 'react';\r\nimport styled from \"@emotion/styled\";\r\nimport type {DataTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nexport interface StyledTableProps extends TableHTMLAttributes<HTMLTableElement>, Pick<DataTableProps, 'sticky' | 'responsive'> {\r\n ref?: RefObject<HTMLTableElement>;\r\n}\r\n\r\nconst StyledTable = styled.table<StyledTableProps>`\r\n --table-sticky-top: ${props => props.sticky ? '0' : undefined};\r\n\r\n thead {\r\n tr:nth-of-type(1) td,\r\n tr:nth-of-type(1) th {\r\n top: var(--table-sticky-top, unset);\r\n position: ${props => props.sticky ? \"sticky\" : \"unset\"};\r\n z-index: ${props => props.sticky ? 10 : \"unset\"};\r\n background: ${props => props.sticky ? \"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))\" : \"unset\"};\r\n }\r\n }\r\n`\r\n\r\n\r\nexport default function Table({\r\n sticky,\r\n responsive,\r\n children,\r\n className,\r\n ref,\r\n ...rest\r\n }: StyledTableProps) {\r\n if (responsive) {\r\n const _className = clsx(className, {\r\n 'table-responsive': responsive === true,\r\n [`table-responsive-${responsive}`]: responsive !== true,\r\n })\r\n return (\r\n <div className={_className}>\r\n <StyledTable ref={ref} {...rest}>{children}</StyledTable>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <StyledTable className={className} sticky={sticky} ref={ref} {...rest}>{children}</StyledTable>\r\n )\r\n}\r\n\r\n","import {type MouseEvent} from 'react';\r\nimport type {DataTableTRProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nexport default function DataTableTR<T = unknown>({\r\n className,\r\n rowClassName,\r\n selected,\r\n row,\r\n trRef,\r\n onClick,\r\n children,\r\n ...rest\r\n }: DataTableTRProps<T>) {\r\n const clickHandler = (ev: MouseEvent<HTMLTableRowElement>) => {\r\n onClick?.(row, ev)\r\n }\r\n\r\n const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;\r\n if (!row) {\r\n return null;\r\n }\r\n\r\n return (\r\n <tr ref={trRef}\r\n className={clsx({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {children}\r\n </tr>\r\n )\r\n}\r\nDataTableTR.displayName = 'DataTableTR';\r\n","import {createElement, type ReactNode} from 'react';\r\nimport type {DataTableCellProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\n\r\nexport default function DataTableCell<T = unknown>({field, row, className, as, ...rest}: DataTableCellProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n const cellClassName = clsx(\r\n {[`text-${field.align}`]: !!field.align},\r\n className,\r\n typeof field.className === 'function' ? field.className(row) : field.className\r\n );\r\n return createElement(\r\n (as ?? field.as) ?? 'td',\r\n {\r\n className: cellClassName,\r\n scope: (as ?? field.as) === 'th' ? 'row' : undefined,\r\n colSpan: field.colSpan,\r\n ...field.cellProps,\r\n ...rest\r\n },\r\n (row[field.field] === undefined && !field.render)\r\n ? null\r\n : (\r\n typeof field.render === 'function'\r\n ? field.render(row)\r\n : row[field.field] as ReactNode\r\n )\r\n )\r\n}\r\nDataTableCell.displayName = 'DataTableCell';\r\n","import DataTableCell from \"./DataTableCell\";\r\nimport type {DataTableCellSetProps} from \"./types\";\r\n\r\nexport default function DataTableRowCellSet<T = unknown>({fields, row}:DataTableCellSetProps<T>) {\r\n return (\r\n <>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableCell key={String(field?.id ?? index)} field={field} row={row}/>\r\n ))}\r\n </>\r\n )\r\n}\r\n","import {createContext} from \"react\";\r\nimport type {DataTableField, SortProps} from \"./types\";\r\n\r\nexport interface TableContextData<T = unknown> {\r\n fields: DataTableField<T>[];\r\n setFields: (next: DataTableField<T>[] | ((prev: DataTableField<T>[]) => DataTableField<T>[])) => void;\r\n sort: SortProps<T>|null;\r\n setSort: (next: SortProps<T> | null | ((prev:SortProps<T>|null) => SortProps<T>|null )) => void;\r\n getField: (key: string | number) => DataTableField<T> | undefined;\r\n updateField: (key: string | number, arg: Partial<DataTableField<T>>) => void;\r\n}\r\n\r\nexport const DataTableContext = createContext<TableContextData<unknown> | null>(null)\r\n","import {type ReactNode, useCallback, useMemo, useState} from \"react\";\r\nimport type {DataTableField, SortProps} from \"./types\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport interface TableProviderProps<T = unknown> {\r\n initialFields: DataTableField<T>[];\r\n initialSort?: SortProps<T>|null;\r\n children: ReactNode;\r\n}\r\n\r\nexport default function DataTableProvider<T = unknown>({\r\n children,\r\n initialFields = [],\r\n initialSort = null,\r\n }: TableProviderProps<T>) {\r\n const [fields, setFieldsState] = useState<DataTableField<T>[]>(initialFields);\r\n const [sort, setProviderSort] = useState<SortProps<T> | null>(initialSort);\r\n\r\n const setFields = useCallback(\r\n (fields: DataTableField<T>[] | ((prev: DataTableField<T>[]) => DataTableField<T>[])) => {\r\n setFieldsState(fields)\r\n }, []);\r\n\r\n const setSort = useCallback(\r\n (sort: SortProps<T> | null | ((sort:SortProps<T>|null) => SortProps<T> | null)) => {\r\n setProviderSort(sort)\r\n }, [])\r\n\r\n\r\n const updateField = useCallback((key: string | number, arg: Partial<DataTableField<T>>) => {\r\n const nextState = fields.map(field => {\r\n if (field.id === key) {\r\n return {...field, ...arg}\r\n }\r\n return field;\r\n });\r\n setFieldsState(nextState);\r\n }, [fields])\r\n\r\n const getField = useCallback((key: string | number) => fields.find(field => field.id === key), [fields]);\r\n\r\n\r\n const value = useMemo<TableContextData<T>>(\r\n () => ({\r\n fields,\r\n setFields,\r\n sort,\r\n setSort,\r\n getField,\r\n updateField\r\n }),\r\n [fields, setFields, sort, setSort, updateField, getField]\r\n )\r\n\r\n return (\r\n <DataTableContext.Provider value={value as unknown as TableContextData<unknown>}>\r\n {children}\r\n </DataTableContext.Provider>\r\n )\r\n}\r\nDataTableProvider.displayName = 'DataTableProvider';\r\n\r\n","import type {DataTableTHProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\n\r\nexport default function DataTableTH<T = unknown>({\r\n field,\r\n className,\r\n children,\r\n ...rest\r\n }: DataTableTHProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n const thClassName = clsx({[`text-${field.align}`]: !!field.align}, className);\r\n return (\r\n <th className={thClassName} scope=\"col\" {...rest}>\r\n {children ?? field.title}\r\n </th>\r\n )\r\n}\r\nDataTableTH.displayName = 'DataTableTH';\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\n/**\r\n * Returns a tuple containing the fields and a function to update them.\r\n * @returns [fields, setFields]\r\n */\r\nexport function useTableFields<T = unknown>(): [\r\n fields: TableContextData<T>['fields'],\r\n setFields: TableContextData<T>['setFields']\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableContext must be used within a DataTableProvider');\r\n }\r\n return [\r\n context.fields,\r\n context.setFields\r\n ];\r\n}\r\n","import {type TableHTMLAttributes} from \"react\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\n\r\nexport default function DataTableHead<T = unknown>({...rest}: TableHTMLAttributes<HTMLTableSectionElement>) {\r\n const [fields] = useTableFields<T>()\r\n return (\r\n <thead {...rest}>\r\n <tr>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableTH key={String(field.id ?? index)}\r\n {...field.thProps}\r\n field={field}\r\n className={clsx(\r\n typeof field.className === 'function'\r\n ? {[`text-${field.align}`]: !!field.align}\r\n : field.className\r\n )}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\nDataTableHead.displayName = 'DataTableHead';\r\n","import type {DataTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport Table from \"./Table\";\r\nimport {DataTableCols, DataTableTBody} from \"./index\";\r\nimport DataTableHead from \"./DataTableHead\";\r\n\r\nexport default function ContainedDataTable<T = unknown>({\r\n className,\r\n size,\r\n responsive,\r\n sticky,\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected,\r\n tableHeadProps,\r\n children,\r\n tfoot,\r\n ...rest\r\n }: Omit<DataTableProps<T>, 'fields'>) {\r\n const tableClassName = clsx('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table sticky={sticky} responsive={responsive} className={tableClassName} {...rest}>\r\n <DataTableCols/>\r\n <DataTableHead {...tableHeadProps}/>\r\n {!!data.length && (\r\n <DataTableTBody data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\nContainedDataTable.displayName = 'ContainedDataTable';\r\n","import type {DataTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport ContainedDataTable from \"./ContainedDataTable\";\r\n\r\n\r\nexport default function DataTable<T = unknown>({\r\n fields,\r\n ...rest\r\n }: DataTableProps<T>) {\r\n return (\r\n <DataTableProvider initialFields={fields}>\r\n <ContainedDataTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\nDataTable.displayName = 'DataTable';\r\n","import {type MouseEvent} from 'react';\r\nimport type {DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\n\r\nexport default function ContainedDataTableRow<T = unknown>({\r\n className,\r\n rowClassName,\r\n selected,\r\n row,\r\n trRef,\r\n onClick,\r\n ...rest\r\n }: Omit<DataTableRowProps<T>, 'fields'>) {\r\n const [fields] = useTableFields<T>()\r\n const clickHandler = (ev: MouseEvent<HTMLTableRowElement>) => {\r\n onClick?.(row, ev)\r\n }\r\n\r\n const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;\r\n if (!row) {\r\n return null;\r\n }\r\n\r\n return (\r\n <tr ref={trRef}\r\n className={clsx({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {fields\r\n .map((field, index) => (\r\n <DataTableCell key={String(field?.id ?? index)} field={field} row={row}/>\r\n ))}\r\n </tr>\r\n )\r\n}\r\nContainedDataTableRow.displayName = 'ContainedDataTableRow';\r\n","import type {DataTableRowProps} from \"./types\";\r\nimport DataTableTR from \"./DataTableTR\";\r\nimport DataTableRowCellSet from \"./DataTableRowCellSet\";\r\n\r\nexport default function DataTableRow<T = unknown>({\r\n fields,\r\n className,\r\n rowClassName,\r\n selected,\r\n row,\r\n trRef,\r\n onClick,\r\n ...rest\r\n }: DataTableRowProps<T>) {\r\n return (\r\n <DataTableTR<T> className={className} rowClassName={rowClassName}\r\n row={row} selected={selected} trRef={trRef} onClick={onClick} {...rest} >\r\n <DataTableRowCellSet<T> fields={fields} row={row}/>\r\n </DataTableTR>\r\n )\r\n}\r\nDataTableRow.displayName = 'DataTableRow';\r\n","import ContainedDataTableRow from \"./ContainedDataTableRow\";\r\nimport type {DataTableTBodyProps} from \"./types\";\r\n\r\n\r\nexport default function DataTableTBody<T = unknown>({\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n children,\r\n ...rest\r\n }: DataTableTBodyProps<T>) {\r\n return (\r\n <tbody {...rest}>\r\n {data.map(row => {\r\n const keyValue = String(typeof keyField === \"function\" ? keyField(row) : row[keyField]);\r\n const isSelected = typeof selected === 'function' ? selected(row) : keyValue === selected;\r\n if (renderRow) {\r\n return renderRow(row);\r\n }\r\n return (\r\n <ContainedDataTableRow key={keyValue} onClick={onSelectRow}\r\n rowClassName={rowClassName}\r\n row={row} selected={isSelected}/>\r\n )\r\n })}\r\n {children}\r\n </tbody>\r\n )\r\n}\r\nDataTableTBody.displayName = 'DataTableTBody';\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\n/**\r\n * Returns a tuple containing the currentSort and a function to update the sort.\r\n * @returns [sort, setSort]\r\n */\r\nexport function useTableSort<T = unknown>(): [\r\n sort: TableContextData<T>['sort'],\r\n setSort: TableContextData<T>['setSort']\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableSort must be used within a DataTableProvider');\r\n }\r\n return [\r\n context.sort,\r\n context.setSort\r\n ];\r\n}\r\n","import DataTableTH from \"./DataTableTH\";\r\nimport type {SortableTableTHProps, UIFlexAlign} from \"./types\";\r\nimport styled from '@emotion/styled';\r\nimport clsx from \"clsx\";\r\n\r\nconst flexJustifyContent = (align?: UIFlexAlign) => {\r\n if (!align) {\r\n return 'flex-start';\r\n }\r\n switch (align) {\r\n case 'end':\r\n return 'flex-end';\r\n default:\r\n return 'center';\r\n }\r\n}\r\n\r\ntype FieldTitleProps = {\r\n sorted?: boolean;\r\n align?: UIFlexAlign;\r\n};\r\nconst FieldTitle = styled.div<FieldTitleProps>`\r\n display: flex;\r\n width: 100%;\r\n flex-direction: ${props => props.align === 'end' ? 'row-reverse' : 'row'};\r\n justify-content: ${props => flexJustifyContent(props.align)};\r\n\r\n .sort-icon {\r\n flex-grow: ${props => props.align === 'end' ? '1' : '0'};\r\n opacity: ${props => props.sorted ? 1 : 0};\r\n }\r\n\r\n &:hover .sort-icon {\r\n color: ${props => props.sorted ? 'unset' : 'var(--bs-primary)'};\r\n opacity: 0.75;\r\n transition: opacity 0.2s;\r\n }\r\n`\r\n\r\nexport default function SortableTableTH<T = unknown>({\r\n field,\r\n sorted,\r\n ascending,\r\n className,\r\n onClick\r\n }: SortableTableTHProps<T>) {\r\n if (field.visible === false) {\r\n return null;\r\n }\r\n if (!field.sortable) {\r\n return (<DataTableTH field={field} className={className}/>)\r\n }\r\n\r\n const {className: _thClassName, ...thProps} = field.thProps ?? {};\r\n const thClassName = clsx(\r\n className,\r\n _thClassName,\r\n {[`text-${field.align}`]: !!field.align}\r\n );\r\n\r\n const clickHandler = () => {\r\n onClick({field: field.field, ascending: !sorted ? true : !ascending});\r\n }\r\n\r\n const iconClassName = {\r\n 'bi-arrow-down': ascending,\r\n 'bi-arrow-up': !ascending,\r\n }\r\n\r\n return (\r\n <th {...thProps} className={clsx(\"sortable\", thClassName)} scope=\"col\" onClick={clickHandler}>\r\n <FieldTitle sorted={sorted} align={field.align}>\r\n <div className=\"field-title\">{field.title}</div>\r\n <div className={clsx('me-1 sort-icon', iconClassName)}/>\r\n </FieldTitle>\r\n </th>\r\n )\r\n}\r\nSortableTableTH.displayName = 'SortableTableTH';\r\n","import SortableTableTH from \"./SortableTableTH\";\r\nimport type {SortableTableHeadProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\nimport {useTableSort} from \"./useTableSort\";\r\n\r\nexport default function SortableTableHead<T = unknown>({\r\n onChangeSort,\r\n }: SortableTableHeadProps<T>) {\r\n const [fields] = useTableFields<T>()\r\n const [sort] = useTableSort<T>();\r\n return (\r\n <thead>\r\n <tr>\r\n {fields\r\n .map((tableField, index) => (\r\n <SortableTableTH<T> key={index} field={tableField}\r\n sorted={sort?.field === tableField.field} ascending={sort?.ascending}\r\n className={clsx(\r\n typeof tableField.className === 'function'\r\n ? {[`text-${tableField.align}`]: !!tableField.align}\r\n : tableField.className\r\n )} onClick={onChangeSort}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\n\r\nSortableTableHead.displayName = 'SortableTableHead';\r\n\r\n","import {useTableFields} from \"./useTableFields\";\r\nimport {useTableSort} from \"./useTableSort\";\r\nimport SortableTableHead from \"./SortableTableHead\";\r\nimport type {SortProps} from \"./types\";\r\n\r\nexport interface SortableTableHeadWrapperProps<T = unknown> {\r\n onChangeSort: (sort: SortProps<T>) => void;\r\n}\r\n\r\nexport default function SortableTableHeadWrapper<T = unknown>({\r\n onChangeSort,\r\n }: SortableTableHeadWrapperProps<T>) {\r\n const [fields] = useTableFields<T>()\r\n const [sort] = useTableSort<T>();\r\n\r\n return (\r\n <SortableTableHead fields={fields} currentSort={sort} onChangeSort={onChangeSort} />\r\n )\r\n}\r\nSortableTableHeadWrapper.displayName = 'SortableTableHeadWrapper';\r\n","import type {SortableTableProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\nimport Table from \"./Table\";\r\nimport {DataTableCols, DataTableTBody} from \"./index\";\r\nimport SortableTableHeadWrapper from \"./SortableTableHeadWrapper\";\r\n\r\nexport default function ContainedSortableTable<T = unknown>({\r\n className,\r\n size,\r\n responsive,\r\n sticky,\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected,\r\n tableHeadProps,\r\n children,\r\n tfoot,\r\n onChangeSort,\r\n ...rest\r\n }: Omit<SortableTableProps<T>, 'fields' | 'currentSort'>) {\r\n const tableClassName = clsx('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table className={tableClassName} responsive={responsive} sticky={sticky} {...rest}>\r\n <DataTableCols/>\r\n <SortableTableHeadWrapper onChangeSort={onChangeSort} {...tableHeadProps}/>\r\n {!!data.length && (\r\n <DataTableTBody data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\nContainedSortableTable.displayName = 'ContainedSortableTable';\r\n","import type {SortProps} from \"./types\";\r\nimport {useTableSort} from \"./useTableSort\";\r\nimport {useEffect} from \"react\";\r\n\r\nexport interface StandaloneSortHelperProps<T = unknown> {\r\n nextSort: SortProps<T>\r\n}\r\nexport function SortHelper<T = unknown>({nextSort}:StandaloneSortHelperProps<T>) {\r\n const [, setNextSort] = useTableSort<T>();\r\n useEffect(() => {\r\n console.log('setNextSort', nextSort);\r\n setNextSort(nextSort);\r\n }, [nextSort, setNextSort]);\r\n return null;\r\n}\r\n","import type {SortableTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport ContainedSortableTable from \"./ContainedSortableTable\";\r\nimport {SortHelper} from \"./SortHelper\";\r\n\r\n\r\nexport default function SortableTable<T = unknown>({\r\n fields,\r\n currentSort,\r\n ...rest\r\n }: SortableTableProps<T>) {\r\n return (\r\n <DataTableProvider initialFields={fields} initialSort={currentSort}>\r\n <SortHelper nextSort={currentSort}/>\r\n <ContainedSortableTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\n\r\nSortableTable.displayName = 'SortableTable';\r\n","import {type ChangeEvent, useId} from 'react';\r\nimport type {RowsPerPageProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nconst defaultRowsPerPageValues: number[] = [10, 25, 50, 100, 250, 500, 1000];\r\n\r\nexport default function RowsPerPage({\r\n value,\r\n pageValues = defaultRowsPerPageValues,\r\n size,\r\n label,\r\n className,\r\n onChange,\r\n ...rest\r\n }: RowsPerPageProps) {\r\n const id = useId();\r\n const changeHandler = (ev: ChangeEvent<HTMLSelectElement>) => onChange(Number(ev.target.value));\r\n const selectClassName = className ?? clsx('form-select', {[`form-select-${size}`]: !!size});\r\n const inputGroupClassName = clsx('input-group', {\r\n [`input-group-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <div className={inputGroupClassName} key={value}>\r\n <label className=\"input-group-text\" htmlFor={id}>{label ?? 'Rows'}</label>\r\n <select className={selectClassName} id={id}\r\n value={value} onChange={changeHandler} {...rest}>\r\n {pageValues.map(value => (\r\n <option key={value} value={value}>{value}</option>\r\n ))}\r\n </select>\r\n </div>\r\n )\r\n}\r\nRowsPerPage.displayName = 'RowsPerPage';\r\n","import RowsPerPage from \"./RowsPerPage\";\r\nimport type {TablePaginationProps} from \"./types\";\r\nimport clsx from \"clsx\";\r\n\r\nexport default function TablePagination({\r\n page,\r\n rowsPerPage,\r\n onChangePage,\r\n count,\r\n size,\r\n showFirst,\r\n showLast,\r\n className,\r\n rowsPerPageProps,\r\n ...rest\r\n }: TablePaginationProps) {\r\n\r\n const first = count === 0 ? 0 : (page * rowsPerPage) + 1;\r\n const last = Math.min(page * rowsPerPage + rowsPerPage, count);\r\n const lastPage = rowsPerPage === 0 ? 0 : Math.floor((count - 1) / rowsPerPage);\r\n\r\n const buttonClassName = clsx(\"btn btn-link\", {[`btn-${size}`]: !!size});\r\n\r\n return (\r\n <div className={clsx(\"row g-3 justify-content-end\", className)} {...rest}>\r\n {!!rowsPerPageProps && (\r\n <div className=\"col-auto\">\r\n <RowsPerPage {...rowsPerPageProps} value={rowsPerPage} size={size}/>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <div className=\"row g-3 flex-nowrap align-items-baseline\">\r\n <div className=\"col-auto\">\r\n {first}-{last} of {count}\r\n </div>\r\n {showFirst && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(0)} aria-label=\"First page\">\r\n <span className=\"bi-chevron-bar-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(page - 1)} aria-label=\"Previous page\">\r\n <span className=\"bi-chevron-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(page + 1)} aria-label=\"Next page\">\r\n <span className=\"bi-chevron-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n {showLast && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(lastPage)} aria-label=\"Last page\">\r\n <span className=\"bi-chevron-bar-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\nTablePagination.displayname = 'TablePagination';\r\n","import {useTableFields} from \"./useTableFields\";\r\n\r\nexport default function DataTableCols<T = unknown>() {\r\n const [fields] = useTableFields<T>()\r\n return (\r\n <colgroup>\r\n {fields\r\n .filter(field => field.visible !== false)\r\n .map((field, index) => (\r\n <col key={index}\r\n className={field.colClassName}\r\n span={field.colSpan ?? 1}/>\r\n ))}\r\n </colgroup>\r\n )\r\n}\r\nDataTableCols.displayName = 'DataTableCols';\r\n\r\n","import type {DataTableField} from \"./types\";\r\nimport {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport type UseFieldArg<T = unknown> = keyof T & ((string | number) & {})\r\nexport function useField<T = unknown>(key: UseFieldArg<T>): [\r\n field:DataTableField<T>|null,\r\n updateField: (key: string|number, arg: Partial<DataTableField<T>>) => void\r\n] {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useField must be used within a DataTableProvider');\r\n }\r\n\r\n return [\r\n context.fields.find(field => field.id === key) ?? null,\r\n context.updateField,\r\n ]\r\n}\r\n","import {useContext} from \"react\";\r\nimport {DataTableContext, type TableContextData} from \"./DataTableContext\";\r\n\r\nexport function useTableContext<T = unknown>():TableContextData<T> {\r\n const context = useContext(DataTableContext) as TableContextData<T>;\r\n if (!context) {\r\n throw new Error('useTableContext must be used within a DataTableProvider');\r\n }\r\n return context;\r\n}\r\n"],"names":["r","t","f","n","o","clsx","StyledTable","styled","props","Table","sticky","responsive","children","className","ref","rest","_className","jsx","DataTableTR","rowClassName","selected","row","trRef","onClick","clickHandler","ev","DataTableCell","field","as","cellClassName","createElement","DataTableRowCellSet","fields","index","DataTableContext","createContext","DataTableProvider","initialFields","initialSort","setFieldsState","useState","sort","setProviderSort","setFields","useCallback","setSort","updateField","key","arg","nextState","getField","value","useMemo","DataTableTH","thClassName","useTableFields","context","useContext","DataTableHead","ContainedDataTable","size","data","keyField","renderRow","onSelectRow","tableHeadProps","tfoot","tableClassName","DataTableCols","DataTableTBody","DataTable","ContainedDataTableRow","DataTableRow","jsxs","keyValue","isSelected","useTableSort","flexJustifyContent","align","FieldTitle","SortableTableTH","sorted","ascending","_thClassName","thProps","iconClassName","SortableTableHead","onChangeSort","tableField","SortableTableHeadWrapper","ContainedSortableTable","SortHelper","nextSort","setNextSort","useEffect","SortableTable","currentSort","defaultRowsPerPageValues","RowsPerPage","pageValues","label","onChange","id","useId","changeHandler","selectClassName","inputGroupClassName","TablePagination","page","rowsPerPage","onChangePage","count","showFirst","showLast","rowsPerPageProps","first","last","lastPage","buttonClassName","useField","useTableContext"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ export { default as Table } from './Table';
2
+ export { default as DataTableTR } from './DataTableTR';
3
+ export { default as DataTableCell } from './DataTableCell';
4
+ export { default as DataTableRowCellSet } from './DataTableRowCellSet';
1
5
  export { default as DataTable } from './DataTable';
2
6
  export { default as ContainedDataTableRow } from './ContainedDataTableRow';
3
7
  export { default as DataTableRow } from './DataTableRow';
@@ -18,4 +22,4 @@ export { useTableSort } from './useTableSort';
18
22
  export { useTableContext } from './useTableContext';
19
23
  export { DataTableContext, type TableContextData } from './DataTableContext';
20
24
  export type { TableProviderProps } from './DataTableProvider';
21
- export type { SortProps, DataTableField, SortableTableField, DataTableColProps, DataTableCellProps, DataTableRowProps, DataTableTBodyProps, DataTableClassNames, DataTableProps, DataTableTHProps, RowsPerPageProps, SortableTableTHProps, SortableTableHeadProps, SortableTableProps, TablePaginationProps, UITableSize, UISize, UIFlexAlign } from './types';
25
+ export type { SortProps, DataTableField, SortableTableField, DataTableColProps, DataTableCellProps, DataTableRowProps, DataTableTBodyProps, DataTableClassNames, DataTableProps, DataTableTHProps, RowsPerPageProps, SortableTableTHProps, SortableTableHeadProps, SortableTableProps, TablePaginationProps, UITableSize, UISize, UIFlexAlign, DataTableTRProps, DataTableCellSetProps, } from './types';