@chumsinc/sortable-tables 2.1.2 → 3.0.0

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +87 -48
  2. package/README.md +94 -4
  3. package/dist/DataTable.d.ts +6 -6
  4. package/dist/DataTableCell.d.ts +299 -295
  5. package/dist/DataTableCols.d.ts +5 -0
  6. package/dist/DataTableContext.d.ts +10 -0
  7. package/dist/DataTableHead.d.ts +2 -2
  8. package/dist/DataTableProvider.d.ts +12 -0
  9. package/dist/DataTableRow.d.ts +1 -1
  10. package/dist/DataTableTBody.d.ts +1 -1
  11. package/dist/DataTableTH.d.ts +6 -6
  12. package/dist/RowsPerPage.d.ts +0 -1
  13. package/dist/SortableTable.d.ts +6 -6
  14. package/dist/SortableTableHead.d.ts +6 -6
  15. package/dist/SortableTableHeadWrapper.d.ts +9 -0
  16. package/dist/SortableTableTH.d.ts +6 -6
  17. package/dist/StandaloneDataTable.d.ts +6 -0
  18. package/dist/StandaloneSortHelper.d.ts +5 -0
  19. package/dist/StandaloneSortableTable.d.ts +6 -0
  20. package/dist/Table.d.ts +6 -5
  21. package/dist/index.cjs.js +30 -28
  22. package/dist/index.cjs.js.map +1 -1
  23. package/dist/index.d.ts +20 -10
  24. package/dist/index.es.js +521 -388
  25. package/dist/index.es.js.map +1 -1
  26. package/dist/types.d.ts +104 -105
  27. package/dist/useField.d.ts +6 -0
  28. package/dist/useTableContext.d.ts +2 -0
  29. package/dist/useTableFields.d.ts +9 -0
  30. package/dist/useTableSort.d.ts +9 -0
  31. package/eslint.config.mjs +3 -3
  32. package/package.json +7 -5
  33. package/src/DataTable.tsx +23 -28
  34. package/src/DataTableCell.tsx +33 -28
  35. package/src/DataTableCols.tsx +18 -0
  36. package/src/DataTableContext.ts +13 -0
  37. package/src/DataTableHead.tsx +9 -9
  38. package/src/DataTableProvider.tsx +62 -0
  39. package/src/DataTableRow.tsx +10 -8
  40. package/src/DataTableTBody.tsx +1 -5
  41. package/src/DataTableTH.tsx +11 -9
  42. package/src/RowsPerPage.tsx +6 -9
  43. package/src/SortableTable.tsx +26 -28
  44. package/src/SortableTableHead.tsx +17 -16
  45. package/src/SortableTableHeadWrapper.tsx +20 -0
  46. package/src/SortableTableTH.tsx +11 -8
  47. package/src/StandaloneDataTable.tsx +16 -0
  48. package/src/StandaloneSortHelper.tsx +15 -0
  49. package/src/StandaloneSortableTable.tsx +21 -0
  50. package/src/Table.tsx +49 -44
  51. package/src/TablePagination.tsx +4 -6
  52. package/src/index.tsx +26 -12
  53. package/src/types.ts +127 -128
  54. package/src/useField.ts +19 -0
  55. package/src/useTableContext.ts +10 -0
  56. package/src/useTableFields.ts +20 -0
  57. package/src/useTableSort.ts +20 -0
  58. package/test/Main.tsx +37 -0
  59. package/test/TableColumnsHandler.tsx +28 -0
  60. package/test/TestTable.tsx +51 -68
  61. package/test/data.ts +232 -232
  62. package/test/index.tsx +11 -11
  63. package/test/tableFields.tsx +52 -0
  64. package/test/utils.ts +19 -0
  65. package/tsconfig.json +1 -0
  66. package/vite.config.ts +1 -2
@@ -0,0 +1,5 @@
1
+ declare function DataTableCols<T = unknown>(): import("react/jsx-runtime").JSX.Element;
2
+ declare namespace DataTableCols {
3
+ var displayName: string;
4
+ }
5
+ export default DataTableCols;
@@ -0,0 +1,10 @@
1
+ import { DataTableField, SortProps } from './types';
2
+ export interface TableContextData<T = unknown> {
3
+ fields: DataTableField<T>[];
4
+ setFields: (next: DataTableField<T>[] | ((prev: DataTableField<T>[]) => DataTableField<T>[])) => void;
5
+ sort: SortProps<T> | null;
6
+ setSort: (next: SortProps<T> | null | ((prev: SortProps<T> | null) => SortProps<T> | null)) => void;
7
+ getField: (key: string | number) => DataTableField<T> | undefined;
8
+ updateField: (key: string | number, arg: Partial<DataTableField<T>>) => void;
9
+ }
10
+ export declare const DataTableContext: import('react').Context<TableContextData<unknown> | null>;
@@ -1,5 +1,5 @@
1
- import { DataTableHeadProps } from './types';
2
- declare function DataTableHead<T = unknown>({ fields, ...rest }: DataTableHeadProps<T>): import("react/jsx-runtime").JSX.Element;
1
+ import { TableHTMLAttributes } from 'react';
2
+ declare function DataTableHead<T = unknown>({ ...rest }: TableHTMLAttributes<HTMLTableSectionElement>): import("react/jsx-runtime").JSX.Element;
3
3
  declare namespace DataTableHead {
4
4
  var displayName: string;
5
5
  }
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ import { DataTableField, SortProps } from './types';
3
+ export interface TableProviderProps<T = unknown> {
4
+ initialFields: DataTableField<T>[];
5
+ initialSort?: SortProps<T> | null;
6
+ children: ReactNode;
7
+ }
8
+ declare function DataTableProvider<T = unknown>({ children, initialFields, initialSort, }: TableProviderProps<T>): import("react/jsx-runtime").JSX.Element;
9
+ declare namespace DataTableProvider {
10
+ var displayName: string;
11
+ }
12
+ export default DataTableProvider;
@@ -1,5 +1,5 @@
1
1
  import { DataTableRowProps } from './types';
2
- declare function DataTableRow<T = unknown>({ className, rowClassName, selected, fields, row, trRef, onClick, ...rest }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element | null;
2
+ declare function DataTableRow<T = unknown>({ className, rowClassName, selected, row, trRef, onClick, ...rest }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element | null;
3
3
  declare namespace DataTableRow {
4
4
  var displayName: string;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import { DataTableTBodyProps } from './types';
2
- declare function DataTableTBody<T = unknown>({ fields, data, keyField, rowClassName, renderRow, onSelectRow, selected, children, ...rest }: DataTableTBodyProps<T>): import("react/jsx-runtime").JSX.Element;
2
+ declare function DataTableTBody<T = unknown>({ data, keyField, rowClassName, renderRow, onSelectRow, selected, children, ...rest }: DataTableTBodyProps<T>): import("react/jsx-runtime").JSX.Element;
3
3
  declare namespace DataTableTBody {
4
4
  var displayName: string;
5
5
  }
@@ -1,6 +1,6 @@
1
- import { DataTableTHProps } from './types';
2
- declare function DataTableTH<T = unknown>({ field, className, children, ...rest }: DataTableTHProps<T>): import("react/jsx-runtime").JSX.Element;
3
- declare namespace DataTableTH {
4
- var displayName: string;
5
- }
6
- export default DataTableTH;
1
+ import { DataTableTHProps } from './types';
2
+ declare function DataTableTH<T = unknown>({ field, className, children, ...rest }: DataTableTHProps<T>): import("react/jsx-runtime").JSX.Element | null;
3
+ declare namespace DataTableTH {
4
+ var displayName: string;
5
+ }
6
+ export default DataTableTH;
@@ -1,5 +1,4 @@
1
1
  import { RowsPerPageProps } from './types';
2
- export declare const defaultRowsPerPageValues: number[];
3
2
  declare function RowsPerPage({ value, pageValues, size, label, className, onChange, ...rest }: RowsPerPageProps): import("react/jsx-runtime").JSX.Element;
4
3
  declare namespace RowsPerPage {
5
4
  var displayName: string;
@@ -1,6 +1,6 @@
1
- import { SortableTableProps } from './types';
2
- declare function SortableTable<T = unknown>({ fields, data, currentSort, onChangeSort, keyField, size, sticky, rowClassName, renderRow, onSelectRow, selected, className, tfoot, children, ...rest }: SortableTableProps<T>): import("react/jsx-runtime").JSX.Element;
3
- declare namespace SortableTable {
4
- var displayName: string;
5
- }
6
- export default SortableTable;
1
+ import { SortableTableProps } from './types';
2
+ declare function SortableTable<T = unknown>({ className, size, responsive, sticky, data, keyField, rowClassName, renderRow, onSelectRow, selected, tableHeadProps, children, tfoot, onChangeSort, ...rest }: Omit<SortableTableProps<T>, 'fields' | 'currentSort'>): import("react/jsx-runtime").JSX.Element;
3
+ declare namespace SortableTable {
4
+ var displayName: string;
5
+ }
6
+ export default SortableTable;
@@ -1,6 +1,6 @@
1
- import { SortableTableHeadProps } from './types';
2
- declare function SortableTableHead<T = unknown>({ currentSort, fields, onChangeSort, }: SortableTableHeadProps<T>): import("react/jsx-runtime").JSX.Element;
3
- declare namespace SortableTableHead {
4
- var displayName: string;
5
- }
6
- export default SortableTableHead;
1
+ import { SortableTableHeadProps } from './types';
2
+ declare function SortableTableHead<T = unknown>({ onChangeSort, }: SortableTableHeadProps<T>): import("react/jsx-runtime").JSX.Element;
3
+ declare namespace SortableTableHead {
4
+ var displayName: string;
5
+ }
6
+ export default SortableTableHead;
@@ -0,0 +1,9 @@
1
+ import { SortProps } from './types';
2
+ export interface SortableTableHeadWrapperProps<T = unknown> {
3
+ onChangeSort: (sort: SortProps<T>) => void;
4
+ }
5
+ declare function SortableTableHeadWrapper<T = unknown>({ onChangeSort, }: SortableTableHeadWrapperProps<T>): import("react/jsx-runtime").JSX.Element;
6
+ declare namespace SortableTableHeadWrapper {
7
+ var displayName: string;
8
+ }
9
+ export default SortableTableHeadWrapper;
@@ -1,6 +1,6 @@
1
- import { SortableTableTHProps } from './types';
2
- declare function SortableTableTH<T = unknown>({ field, sorted, ascending, className, onClick }: SortableTableTHProps<T>): import("react/jsx-runtime").JSX.Element;
3
- declare namespace SortableTableTH {
4
- var displayName: string;
5
- }
6
- export default SortableTableTH;
1
+ import { SortableTableTHProps } from './types';
2
+ declare function SortableTableTH<T = unknown>({ field, sorted, ascending, className, onClick }: SortableTableTHProps<T>): import("react/jsx-runtime").JSX.Element | null;
3
+ declare namespace SortableTableTH {
4
+ var displayName: string;
5
+ }
6
+ export default SortableTableTH;
@@ -0,0 +1,6 @@
1
+ import { DataTableProps } from './types';
2
+ declare function StandaloneDataTable<T = unknown>({ fields, ...rest }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
3
+ declare namespace StandaloneDataTable {
4
+ var displayName: string;
5
+ }
6
+ export default StandaloneDataTable;
@@ -0,0 +1,5 @@
1
+ import { SortProps } from './types';
2
+ export interface StandaloneSortHelperProps<T = unknown> {
3
+ nextSort: SortProps<T>;
4
+ }
5
+ export declare function StandaloneSortHelper<T = unknown>({ nextSort }: StandaloneSortHelperProps<T>): null;
@@ -0,0 +1,6 @@
1
+ import { SortableTableProps } from './types';
2
+ declare function StandaloneSortableTable<T = unknown>({ fields, currentSort, ...rest }: SortableTableProps<T>): import("react/jsx-runtime").JSX.Element;
3
+ declare namespace StandaloneSortableTable {
4
+ var displayName: string;
5
+ }
6
+ export default StandaloneSortableTable;
package/dist/Table.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { default as React, TableHTMLAttributes } from 'react';
2
- import { DataTableProps } from './types';
3
- export type StyledTableProps = TableHTMLAttributes<HTMLTableElement> & Pick<DataTableProps, 'sticky' | 'responsive'>;
4
- declare const _default: React.ForwardRefExoticComponent<React.TableHTMLAttributes<HTMLTableElement> & Pick<DataTableProps<unknown>, "sticky" | "responsive"> & React.RefAttributes<HTMLTableElement>>;
5
- export default _default;
1
+ import { RefObject, TableHTMLAttributes } from 'react';
2
+ import { DataTableProps } from './types';
3
+ export interface StyledTableProps extends TableHTMLAttributes<HTMLTableElement>, Pick<DataTableProps, 'sticky' | 'responsive'> {
4
+ ref?: RefObject<HTMLTableElement>;
5
+ }
6
+ export default function Table({ sticky, responsive, children, className, ref, ...rest }: StyledTableProps): import("react/jsx-runtime").JSX.Element;
package/dist/index.cjs.js CHANGED
@@ -1,28 +1,30 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),b=require("classnames"),T=require("react"),C=require("@emotion/styled");function N({field:a,className:s,children:e,...n}){const l=b({[`text-${a.align}`]:!!a.align},s);return t.jsx("th",{className:l,scope:"col",...n,children:e??a.title})}N.displayName="DataTableTH";function S({fields:a,...s}){return t.jsx("thead",{...s,children:t.jsx("tr",{children:a.map((e,n)=>t.jsx(N,{...e.thProps,field:e,className:b(typeof e.className=="function"?{[`text-${e.align}`]:!!e.align}:e.className)},e.id??n))})})}S.displayName="DataTableHead";function w({field:a,row:s,className:e,as:n,...l}){const c=b({[`text-${a.align}`]:!!a.align},e,typeof a.className=="function"?a.className(s):a.className);return T.createElement(n??a.as??"td",{className:c,scope:(n??a.as)==="th"?"row":void 0,colSpan:a.colSpan,...a.cellProps,...l},s[a.field]===void 0&&!a.render?null:typeof a.render=="function"?a.render(s):s[a.field])}function f({className:a,rowClassName:s,selected:e,fields:n,row:l,trRef:c,onClick:r,...i}){const d=m=>{r?.(l,m)},o=typeof s=="function"?s(l):s;return l?t.jsx("tr",{ref:c,className:b({"table-active":e},a,o),onClick:d,...i,children:n.map((m,u)=>t.jsx(w,{field:m,row:l},u))}):null}f.displayName="DataTableRow";function p({fields:a,data:s,keyField:e,rowClassName:n,renderRow:l,onSelectRow:c,selected:r="",children:i,...d}){return t.jsxs("tbody",{...d,children:[s.map(o=>{const m=String(typeof e=="function"?e(o):o[e]),u=typeof r=="function"?r(o):m===r;return l?l(o):t.jsx(f,{onClick:c,rowClassName:n,fields:a,row:o,selected:u},m)}),i]})}p.displayName="DataTableTBody";const k=C.table`
2
- --table-sticky-top: ${a=>a.sticky?"0":void 0};
3
-
4
- thead {
5
- tr:nth-of-type(1) td,
6
- tr:nth-of-type(1) th {
7
- top: var(--table-sticky-top, unset);
8
- position: ${a=>a.sticky?"sticky":"unset"};
9
- z-index: ${a=>a.sticky?10:"unset"};
10
- background: ${a=>a.sticky?"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))":"unset"};
11
- }
12
- }
13
- `,D=T.forwardRef(function({sticky:s,responsive:e,children:n,className:l,...c},r){if(e){const i=b(l,{"table-responsive":e===!0,[`table-responsive-${e}`]:e!==!0});return t.jsx("div",{className:i,children:t.jsx(k,{ref:r,...c,children:n})})}return t.jsx(k,{className:l,sticky:s,ref:r,...c,children:n})});function H({fields:a,data:s,keyField:e,size:n="",sticky:l,responsive:c,rowClassName:r,renderRow:i,onSelectRow:d,selected:o="",className:m="",tfoot:u,children:h,tableHeadProps:x,...j}){const y=b("table",m,{[`table-${n}`]:!!n});return t.jsxs(D,{sticky:l,responsive:c,className:y,...j,children:[t.jsx(S,{...x,fields:a}),!!s.length&&t.jsx(p,{fields:a,data:s,keyField:e,rowClassName:r,renderRow:i,onSelectRow:d,selected:o}),h,u]})}H.displayName="DataTable";const B=a=>{if(!a)return"flex-start";switch(a){case"end":return"flex-end";default:return"center"}},M=C.div`
14
- display: flex;
15
- width: 100%;
16
- flex-direction: ${a=>a.align==="end"?"row-reverse":"row"};
17
- justify-content: ${a=>B(a.align)};
18
- .sort-icon {
19
- flex-grow: ${a=>a.align==="end"?"1":"0"};
20
- opacity: ${a=>a.sorted?1:0};
21
- }
22
- &:hover .sort-icon {
23
- color: ${a=>a.sorted?"unset":"var(--bs-primary)"} ;
24
- opacity: 0.75;
25
- transition: opacity 0.2s;
26
- }
27
- `;function g({field:a,sorted:s,ascending:e,className:n,onClick:l}){if(!a.sortable)return t.jsx(N,{field:a,className:n});const{className:c,...r}=a.thProps??{},i=b(n,c,{[`text-${a.align}`]:!!a.align}),d=()=>{l({field:a.field,ascending:s?!e:!0})},o={"bi-arrow-down":e,"bi-arrow-up":!e};return t.jsx("th",{...r,className:b("sortable",i),scope:"col",onClick:d,children:t.jsxs(M,{sorted:s,align:a.align,children:[t.jsx("div",{className:"field-title",children:a.title}),t.jsx("div",{className:b("me-1 sort-icon",o)})]})})}g.displayName="SortableTableTH";function v({currentSort:a,fields:s,onChangeSort:e}){const{field:n,ascending:l}=a;return t.jsx("thead",{children:t.jsx("tr",{children:s.map((c,r)=>t.jsx(g,{field:c,sorted:n===c.field,ascending:l,className:b(typeof c.className=="function"?{[`text-${c.align}`]:!!c.align}:c.className),onClick:e},r))})})}v.displayName="SortableTableHead";function R({fields:a,data:s,currentSort:e,onChangeSort:n,keyField:l,size:c="",sticky:r,rowClassName:i,renderRow:d,onSelectRow:o,selected:m="",className:u="",tfoot:h,children:x,...j}){const y=b("table",u,{[`table-${c}`]:!!c});return t.jsxs(D,{className:y,sticky:r,...j,children:[t.jsx(v,{currentSort:e,fields:a,onChangeSort:n}),!!s.length&&t.jsx(p,{fields:a,data:s,keyField:l,rowClassName:i,renderRow:d,onSelectRow:o,selected:m}),x,h]})}R.displayName="SortableTable";const q=[10,25,50,100,250,500,1e3];function $({value:a,pageValues:s=q,size:e,label:n,className:l,onChange:c,...r}){const i=T.useId(),d=u=>c(Number(u.target.value)),o=l??b("form-select",{[`form-select-${e}`]:!!e}),m=b("input-group",{[`input-group-${e}`]:!!e});return t.jsxs("div",{className:m,children:[t.jsx("label",{className:"input-group-text",htmlFor:i,children:n??"Rows"}),t.jsx("select",{className:o,id:i,value:a,onChange:d,...r,children:s.map(u=>t.jsx("option",{value:u,children:u},u))})]},a)}$.displayName="RowsPerPage";function P({page:a,rowsPerPage:s,onChangePage:e,count:n,size:l,showFirst:c,showLast:r,className:i,rowsPerPageProps:d,...o}){const m=n===0?0:a*s+1,u=Math.min(a*s+s,n),h=s===0?0:Math.floor((n-1)/s),x=b("btn btn-link",{[`btn-${l}`]:!!l});return t.jsxs("div",{className:b("row g-3 justify-content-end",i),...o,children:[!!d&&t.jsx("div",{className:"col-auto",children:t.jsx($,{...d,value:s,size:l})}),t.jsx("div",{className:"col-auto",children:t.jsxs("div",{className:"row g-3 flex-nowrap align-items-baseline",children:[t.jsxs("div",{className:"col-auto",children:[m,"-",u," of ",n]}),c&&t.jsx("div",{className:"col-auto",children:t.jsx("button",{className:x,disabled:a===0,onClick:()=>e(0),"aria-label":"First page",children:t.jsx("span",{className:"bi-chevron-bar-left","aria-hidden":"true"})})}),t.jsx("div",{className:"col-auto",children:t.jsx("button",{className:x,disabled:a===0,onClick:()=>e(a-1),"aria-label":"Previous page",children:t.jsx("span",{className:"bi-chevron-left","aria-hidden":"true"})})}),t.jsx("div",{className:"col-auto",children:t.jsx("button",{className:x,disabled:a>=h,onClick:()=>e(a+1),"aria-label":"Next page",children:t.jsx("span",{className:"bi-chevron-right","aria-hidden":"true"})})}),r&&t.jsx("div",{className:"col-auto",children:t.jsx("button",{className:x,disabled:a>=h,onClick:()=>e(h),"aria-label":"Last page",children:t.jsx("span",{className:"bi-chevron-bar-right","aria-hidden":"true"})})})]})})]})}P.displayname="TablePagination";exports.DataTable=H;exports.DataTableRow=f;exports.DataTableTBody=p;exports.DataTableTH=N;exports.RowsPerPage=$;exports.SortableTable=R;exports.SortableTableHead=v;exports.SortableTableTH=g;exports.TablePagination=P;exports.defaultRowsPerPageValues=q;
28
- //# sourceMappingURL=index.cjs.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),m=require("react"),R=require("@emotion/styled"),f=m.createContext(null);function y({children:e,initialFields:t=[],initialSort:a=null}){const[s,l]=m.useState(t),[r,i]=m.useState(a),c=m.useCallback(x=>{l(x)},[]),o=m.useCallback(x=>{i(x)},[]),u=m.useCallback((x,p)=>{const N=s.map(j=>j.id===x?{...j,...p}:j);l(N)},[s]),d=m.useCallback(x=>s.find(p=>p.id===x),[s]),b=m.useMemo(()=>({fields:s,setFields:c,sort:r,setSort:o,getField:d,updateField:u}),[s,c,r,o,u,d]);return n.jsx(f.Provider,{value:b,children:e})}y.displayName="DataTableProvider";function E(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=E(e[t]))&&(s&&(s+=" "),s+=a)}else for(a in e)e[a]&&(s&&(s+=" "),s+=a);return s}function h(){for(var e,t,a=0,s="",l=arguments.length;a<l;a++)(e=arguments[a])&&(t=E(e))&&(s&&(s+=" "),s+=t);return s}const F=R.table`
2
+ --table-sticky-top: ${e=>e.sticky?"0":void 0};
3
+
4
+ thead {
5
+ tr:nth-of-type(1) td,
6
+ tr:nth-of-type(1) th {
7
+ top: var(--table-sticky-top, unset);
8
+ position: ${e=>e.sticky?"sticky":"unset"};
9
+ z-index: ${e=>e.sticky?10:"unset"};
10
+ background: ${e=>e.sticky?"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))":"unset"};
11
+ }
12
+ }
13
+ `;function M({sticky:e,responsive:t,children:a,className:s,ref:l,...r}){if(t){const i=h(s,{"table-responsive":t===!0,[`table-responsive-${t}`]:t!==!0});return n.jsx("div",{className:i,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=h({[`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=m.useContext(f);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:h(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:i,renderRow:c,onSelectRow:o,selected:u,tableHeadProps:d,children:b,tfoot:x,...p}){const N=h("table",e,{[`table-${t}`]:!!t});return n.jsxs(M,{sticky:s,responsive:a,className:N,...p,children:[n.jsx(C,{}),n.jsx(q,{...d}),!!l.length&&n.jsx(S,{data:l,keyField:r,rowClassName:i,renderRow:c,onSelectRow:o,selected:u}),b,x]})}D.displayName="DataTable";function B({fields:e,...t}){return n.jsx(y,{initialFields:e,children:n.jsx(D,{...t})})}B.displayName="StandaloneDataTable";function W({field:e,row:t,className:a,as:s,...l}){if(e.visible===!1)return null;const r=h({[`text-${e.align}`]:!!e.align},a,typeof e.className=="function"?e.className(t):e.className);return m.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])}W.displayName="DataTableCell";function k({className:e,rowClassName:t,selected:a,row:s,trRef:l,onClick:r,...i}){const[c]=T(),o=d=>{r?.(s,d)},u=typeof t=="function"?t(s):t;return s?n.jsx("tr",{ref:l,className:h({"table-active":a},e,u),onClick:o,...i,children:c.map((d,b)=>n.jsx(W,{field:d,row:s},String(d?.id??b)))}):null}k.displayName="DataTableRow";function S({data:e,keyField:t,rowClassName:a,renderRow:s,onSelectRow:l,selected:r="",children:i,...c}){return n.jsxs("tbody",{...c,children:[e.map(o=>{const u=String(typeof t=="function"?t(o):o[t]),d=typeof r=="function"?r(o):u===r;return s?s(o):n.jsx(k,{onClick:l,rowClassName:a,row:o,selected:d},u)}),i]})}S.displayName="DataTableTBody";function g(){const e=m.useContext(f);if(!e)throw new Error("useTableSort must be used within a DataTableProvider");return[e.sort,e.setSort]}const G=e=>{if(!e)return"flex-start";switch(e){case"end":return"flex-end";default:return"center"}},I=R.div`
14
+ display: flex;
15
+ width: 100%;
16
+ flex-direction: ${e=>e.align==="end"?"row-reverse":"row"};
17
+ justify-content: ${e=>G(e.align)};
18
+
19
+ .sort-icon {
20
+ flex-grow: ${e=>e.align==="end"?"1":"0"};
21
+ opacity: ${e=>e.sorted?1:0};
22
+ }
23
+
24
+ &:hover .sort-icon {
25
+ color: ${e=>e.sorted?"unset":"var(--bs-primary)"};
26
+ opacity: 0.75;
27
+ transition: opacity 0.2s;
28
+ }
29
+ `;function $({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,...i}=e.thProps??{},c=h(s,r,{[`text-${e.align}`]:!!e.align}),o=()=>{l({field:e.field,ascending:t?!a:!0})},u={"bi-arrow-down":a,"bi-arrow-up":!a};return n.jsx("th",{...i,className:h("sortable",c),scope:"col",onClick:o,children:n.jsxs(I,{sorted:t,align:e.align,children:[n.jsx("div",{className:"field-title",children:e.title}),n.jsx("div",{className:h("me-1 sort-icon",u)})]})})}$.displayName="SortableTableTH";function H({onChangeSort:e}){const[t]=T(),[a]=g();return n.jsx("thead",{children:n.jsx("tr",{children:t.map((s,l)=>n.jsx($,{field:s,sorted:a?.field===s.field,ascending:a?.ascending,className:h(typeof s.className=="function"?{[`text-${s.align}`]:!!s.align}:s.className),onClick:e},l))})})}H.displayName="SortableTableHead";function _({onChangeSort:e}){const[t]=T(),[a]=g();return n.jsx(H,{fields:t,currentSort:a,onChangeSort:e})}_.displayName="SortableTableHeadWrapper";function w({className:e,size:t,responsive:a,sticky:s,data:l,keyField:r,rowClassName:i,renderRow:c,onSelectRow:o,selected:u,tableHeadProps:d,children:b,tfoot:x,onChangeSort:p,...N}){const j=h("table",e,{[`table-${t}`]:!!t});return n.jsxs(M,{className:j,responsive:a,sticky:s,...N,children:[n.jsx(C,{}),n.jsx(_,{onChangeSort:p,...d}),!!l.length&&n.jsx(S,{data:l,keyField:r,rowClassName:i,renderRow:c,onSelectRow:o,selected:u}),b,x]})}w.displayName="SortableTable";function J({nextSort:e}){const[,t]=g();return m.useEffect(()=>{console.log("setNextSort",e),t(e)},[e,t]),null}function A({fields:e,currentSort:t,...a}){return n.jsxs(y,{initialFields:e,initialSort:t,children:[n.jsx(J,{nextSort:t}),n.jsx(w,{...a})]})}A.displayName="StandaloneSortableTable";const L=[10,25,50,100,250,500,1e3];function P({value:e,pageValues:t=L,size:a,label:s,className:l,onChange:r,...i}){const c=m.useId(),o=b=>r(Number(b.target.value)),u=l??h("form-select",{[`form-select-${a}`]:!!a}),d=h("input-group",{[`input-group-${a}`]:!!a});return n.jsxs("div",{className:d,children:[n.jsx("label",{className:"input-group-text",htmlFor:c,children:s??"Rows"}),n.jsx("select",{className:u,id:c,value:e,onChange:o,...i,children:t.map(b=>n.jsx("option",{value:b,children:b},b))})]},e)}P.displayName="RowsPerPage";function V({page:e,rowsPerPage:t,onChangePage:a,count:s,size:l,showFirst:r,showLast:i,className:c,rowsPerPageProps:o,...u}){const d=s===0?0:e*t+1,b=Math.min(e*t+t,s),x=t===0?0:Math.floor((s-1)/t),p=h("btn btn-link",{[`btn-${l}`]:!!l});return n.jsxs("div",{className:h("row g-3 justify-content-end",c),...u,children:[!!o&&n.jsx("div",{className:"col-auto",children:n.jsx(P,{...o,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:[d,"-",b," of ",s]}),r&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,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:p,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:p,disabled:e>=x,onClick:()=>a(e+1),"aria-label":"Next page",children:n.jsx("span",{className:"bi-chevron-right","aria-hidden":"true"})})}),i&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:p,disabled:e>=x,onClick:()=>a(x),"aria-label":"Last page",children:n.jsx("span",{className:"bi-chevron-bar-right","aria-hidden":"true"})})})]})})]})}V.displayname="TablePagination";function C(){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))})}C.displayName="DataTableCols";function O(e){const t=m.useContext(f);if(!t)throw new Error("useField must be used within a DataTableProvider");return[t.fields.find(a=>a.id===e)??null,t.updateField]}function K(){const e=m.useContext(f);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return e}exports.DataTable=B;exports.DataTableCols=C;exports.DataTableContext=f;exports.DataTableProvider=y;exports.DataTableRow=k;exports.DataTableTBody=S;exports.DataTableTH=v;exports.DataTableWithContext=D;exports.RowsPerPage=P;exports.SortableTable=w;exports.SortableTableHead=H;exports.SortableTableTH=$;exports.StandaloneSortableTable=A;exports.TablePagination=V;exports.useField=O;exports.useTableContext=K;exports.useTableFields=T;exports.useTableSort=g;
30
+ //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/DataTableTH.tsx","../src/DataTableHead.tsx","../src/DataTableCell.tsx","../src/DataTableRow.tsx","../src/DataTableTBody.tsx","../src/Table.tsx","../src/DataTable.tsx","../src/SortableTableTH.tsx","../src/SortableTableHead.tsx","../src/SortableTable.tsx","../src/RowsPerPage.tsx","../src/TablePagination.tsx"],"sourcesContent":["import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport type {DataTableTHProps} from \"./types\";\r\n\r\n\r\nfunction DataTableTH<T = unknown>({\r\n field,\r\n className,\r\n children,\r\n ...rest\r\n }: DataTableTHProps<T>) {\r\n const thClassName = classNames({[`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\nexport default DataTableTH;\r\n","import React from \"react\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport classNames from \"classnames\";\r\nimport type {DataTableHeadProps} from \"./types\";\r\n\r\n\r\nfunction DataTableHead<T = unknown>({fields, ...rest}: DataTableHeadProps<T>) {\r\n return (\r\n <thead {...rest}>\r\n <tr>\r\n {fields.map((field, index) => (\r\n <DataTableTH key={field.id ?? index}\r\n {...field.thProps}\r\n field={field}\r\n className={classNames(\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\n\r\nDataTableHead.displayName = 'DataTableHead';\r\nexport default DataTableHead;\r\n","import React, {ReactNode} from 'react';\nimport type {DataTableCellProps} from \"./types\";\nimport classNames from \"classnames\";\n\nexport default function DataTableCell<T = unknown>({field, row, className, as, ...rest}:DataTableCellProps<T>) {\n const cellClassName = classNames(\n {[`text-${field.align}`]: !!field.align},\n className,\n typeof field.className === 'function' ? field.className(row) : field.className\n );\n return React.createElement(\n (as ?? field.as) ?? 'td',\n {\n className: cellClassName,\n scope: (as ?? field.as) === 'th' ? 'row' : undefined,\n colSpan: field.colSpan,\n ...field.cellProps,\n ...rest\n },\n (row[field.field] === undefined && !field.render)\n ? null\n : (\n typeof field.render === 'function'\n ? field.render(row)\n : row[field.field] as ReactNode\n )\n )\n}\n","import React, {MouseEvent} from 'react';\r\nimport classNames from \"classnames\";\r\nimport type {DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\n\r\n\r\nfunction DataTableRow<T = unknown>({\r\n className,\r\n rowClassName,\r\n selected,\r\n fields,\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={classNames({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {fields.map((field, index) => (<DataTableCell key={index} field={field} row={row}/>))}\r\n </tr>\r\n )\r\n}\r\n\r\nDataTableRow.displayName = 'DataTableRow';\r\nexport default DataTableRow;\r\n","import React from 'react';\r\nimport DataTableRow from \"./DataTableRow\";\r\nimport type {DataTableTBodyProps} from \"./types\";\r\n\r\n\r\nfunction DataTableTBody<T = unknown>({\r\n fields,\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 <DataTableRow key={keyValue} onClick={onSelectRow}\r\n rowClassName={rowClassName}\r\n fields={fields}\r\n row={row} selected={isSelected}/>\r\n )\r\n })}\r\n {children}\r\n </tbody>\r\n )\r\n}\r\n\r\nDataTableTBody.displayName = 'DataTableTBody';\r\nexport default DataTableTBody\r\n","import React, {TableHTMLAttributes} from 'react';\nimport styled from \"@emotion/styled\";\nimport type {DataTableProps} from \"./types\";\nimport classNames from \"classnames\";\n\nexport type StyledTableProps = TableHTMLAttributes<HTMLTableElement> & Pick<DataTableProps, 'sticky' | 'responsive'>\n\nconst StyledTable = styled.table<StyledTableProps>`\n --table-sticky-top: ${props => props.sticky ? '0' : undefined};\n\n thead {\n tr:nth-of-type(1) td,\n tr:nth-of-type(1) th {\n top: var(--table-sticky-top, unset);\n position: ${props => props.sticky ? \"sticky\" : \"unset\"};\n z-index: ${props => props.sticky ? 10 : \"unset\"};\n background: ${props => props.sticky ? \"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))\" : \"unset\"};\n }\n }\n`\n\nexport default React.forwardRef<HTMLTableElement, StyledTableProps>(\n function Table({\n sticky,\n responsive,\n children,\n className,\n ...rest\n }, ref) {\n if (responsive) {\n const _className = classNames(className, {\n 'table-responsive': responsive === true,\n [`table-responsive-${responsive}`]: responsive !== true,\n })\n return (\n <div className={_className}>\n <StyledTable ref={ref} {...rest}>{children}</StyledTable>\n </div>\n )\n }\n return (\n <StyledTable className={className} sticky={sticky} ref={ref} {...rest}>{children}</StyledTable>\n )\n })\n","import React from 'react';\r\nimport classNames from \"classnames\";\r\nimport DataTableHead from \"./DataTableHead\";\r\nimport DataTableTBody from \"./DataTableTBody\";\r\nimport type {DataTableProps} from \"./types\";\r\nimport Table from \"./Table\";\r\n\r\n\r\nfunction DataTable<T = unknown>({\r\n fields,\r\n data,\r\n keyField,\r\n size = '',\r\n sticky,\r\n responsive,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n className = '',\r\n tfoot,\r\n children,\r\n tableHeadProps,\r\n ...rest\r\n }: DataTableProps<T>) {\r\n\r\n const tableClassName = classNames('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 <DataTableHead {...tableHeadProps} fields={fields}/>\r\n {!!data.length && (\r\n <DataTableTBody fields={fields} 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\n\r\nDataTable.displayName = 'DataTable';\r\nexport default DataTable;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport type {SortableTableTHProps, UIFlexAlign} from \"./types\";\r\nimport styled from '@emotion/styled';\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 .sort-icon {\r\n flex-grow: ${props => props.align === 'end' ? '1' : '0'};\r\n opacity: ${props => props.sorted ? 1 : 0};\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\nfunction 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.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 = classNames(\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={classNames(\"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={classNames('me-1 sort-icon', iconClassName)}/>\r\n </FieldTitle>\r\n </th>\r\n )\r\n}\r\n\r\nSortableTableTH.displayName = 'SortableTableTH';\r\nexport default SortableTableTH;\r\n","import React from \"react\";\r\nimport SortableTableTH from \"./SortableTableTH\";\r\nimport classNames from \"classnames\";\r\nimport type {SortableTableHeadProps} from \"./types\";\r\n\r\n\r\nfunction SortableTableHead<T = unknown>({\r\n currentSort,\r\n fields,\r\n onChangeSort,\r\n }: SortableTableHeadProps<T>) {\r\n const {field, ascending} = currentSort;\r\n return (\r\n <thead>\r\n <tr>\r\n {fields.map((tableField, index) => (\r\n <SortableTableTH<T> key={index} field={tableField}\r\n sorted={field === tableField.field} ascending={ascending}\r\n className={classNames(\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\nexport default SortableTableHead;\r\n","import React from 'react';\r\nimport classNames from \"classnames\";\r\nimport SortableTableHead from \"./SortableTableHead\";\r\nimport DataTableTBody from \"./DataTableTBody\";\r\nimport type {SortableTableProps} from \"./types\";\r\nimport Table from \"./Table\";\r\n\r\n\r\nfunction SortableTable<T = unknown>({\r\n fields,\r\n data,\r\n currentSort,\r\n onChangeSort,\r\n keyField,\r\n size = '',\r\n sticky,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n className = '',\r\n tfoot,\r\n children,\r\n ...rest\r\n }: SortableTableProps<T>) {\r\n const tableClassName = classNames('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table className={tableClassName} sticky={sticky} {...rest}>\r\n <SortableTableHead currentSort={currentSort} fields={fields} onChangeSort={onChangeSort}/>\r\n {!!data.length && (\r\n <DataTableTBody fields={fields} 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\n\r\nSortableTable.displayName = 'SortableTable';\r\nexport default SortableTable;\r\n","import React, {ChangeEvent, useId} from 'react';\r\nimport classNames from \"classnames\";\r\nimport type {RowsPerPageProps} from \"./types\";\r\n\r\nexport const defaultRowsPerPageValues: number[] = [10, 25, 50, 100, 250, 500, 1000];\r\n\r\n\r\nfunction 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 ?? classNames('form-select', {[`form-select-${size}`]: !!size});\r\n const inputGroupClassName = classNames('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\n\r\nRowsPerPage.displayName = 'RowsPerPage';\r\nexport default RowsPerPage;\r\n","import React from 'react';\r\nimport RowsPerPage from \"./RowsPerPage\";\r\nimport classNames from \"classnames\";\r\nimport type {TablePaginationProps} from \"./types\";\r\n\r\nfunction 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 = classNames(\"btn btn-link\", {[`btn-${size}`]: !!size});\r\n\r\n return (\r\n <div className={classNames(\"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\n\r\nTablePagination.displayname = 'TablePagination';\r\nexport default TablePagination\r\n"],"names":["DataTableTH","field","className","children","rest","thClassName","classNames","jsx","DataTableHead","fields","index","DataTableCell","row","as","cellClassName","React","DataTableRow","rowClassName","selected","trRef","onClick","clickHandler","ev","_className","DataTableTBody","data","keyField","renderRow","onSelectRow","jsxs","keyValue","isSelected","StyledTable","styled","props","Table","sticky","responsive","ref","DataTable","size","tfoot","tableHeadProps","tableClassName","flexJustifyContent","align","FieldTitle","SortableTableTH","sorted","ascending","_thClassName","thProps","iconClassName","SortableTableHead","currentSort","onChangeSort","tableField","SortableTable","defaultRowsPerPageValues","RowsPerPage","value","pageValues","label","onChange","id","useId","changeHandler","selectClassName","inputGroupClassName","TablePagination","page","rowsPerPage","onChangePage","count","showFirst","showLast","rowsPerPageProps","first","last","lastPage","buttonClassName"],"mappings":"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"}
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/DataTable.tsx","../src/StandaloneDataTable.tsx","../src/DataTableCell.tsx","../src/DataTableRow.tsx","../src/DataTableTBody.tsx","../src/useTableSort.ts","../src/SortableTableTH.tsx","../src/SortableTableHead.tsx","../src/SortableTableHeadWrapper.tsx","../src/SortableTable.tsx","../src/StandaloneSortHelper.tsx","../src/StandaloneSortableTable.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 React, {type RefObject, type TableHTMLAttributes} from 'react';\nimport styled from \"@emotion/styled\";\nimport type {DataTableProps} from \"./types\";\nimport clsx from \"clsx\";\n\nexport interface StyledTableProps extends TableHTMLAttributes<HTMLTableElement>, Pick<DataTableProps, 'sticky' | 'responsive'> {\n ref?: RefObject<HTMLTableElement>;\n}\n\nconst StyledTable = styled.table<StyledTableProps>`\n --table-sticky-top: ${props => props.sticky ? '0' : undefined};\n\n thead {\n tr:nth-of-type(1) td,\n tr:nth-of-type(1) th {\n top: var(--table-sticky-top, unset);\n position: ${props => props.sticky ? \"sticky\" : \"unset\"};\n z-index: ${props => props.sticky ? 10 : \"unset\"};\n background: ${props => props.sticky ? \"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))\" : \"unset\"};\n }\n }\n`\n\n\nexport default function Table({\n sticky,\n responsive,\n children,\n className,\n ref,\n ...rest\n }: StyledTableProps) {\n if (responsive) {\n const _className = clsx(className, {\n 'table-responsive': responsive === true,\n [`table-responsive-${responsive}`]: responsive !== true,\n })\n return (\n <div className={_className}>\n <StyledTable ref={ref} {...rest}>{children}</StyledTable>\n </div>\n )\n }\n\n return (\n <StyledTable className={className} sticky={sticky} ref={ref} {...rest}>{children}</StyledTable>\n )\n}\n\n","import React from \"react\";\r\nimport 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 React, {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 DataTable<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\nDataTable.displayName = 'DataTable';\r\n","import type {DataTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport DataTable from \"./DataTable\";\r\n\r\n\r\nexport default function StandaloneDataTable<T = unknown>({\r\n fields,\r\n ...rest\r\n }: DataTableProps<T>) {\r\n return (\r\n <DataTableProvider initialFields={fields}>\r\n <DataTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\nStandaloneDataTable.displayName = 'StandaloneDataTable';\r\n","import {createElement, type ReactNode} from 'react';\nimport type {DataTableCellProps} from \"./types\";\nimport clsx from \"clsx\";\n\n\nexport default function DataTableCell<T = unknown>({field, row, className, as, ...rest}: DataTableCellProps<T>) {\n if (field.visible === false) {\n return null;\n }\n const cellClassName = clsx(\n {[`text-${field.align}`]: !!field.align},\n className,\n typeof field.className === 'function' ? field.className(row) : field.className\n );\n return createElement(\n (as ?? field.as) ?? 'td',\n {\n className: cellClassName,\n scope: (as ?? field.as) === 'th' ? 'row' : undefined,\n colSpan: field.colSpan,\n ...field.cellProps,\n ...rest\n },\n (row[field.field] === undefined && !field.render)\n ? null\n : (\n typeof field.render === 'function'\n ? field.render(row)\n : row[field.field] as ReactNode\n )\n )\n}\nDataTableCell.displayName = 'DataTableCell';\n","import React, {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 DataTableRow<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 }: DataTableRowProps<T>) {\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\nDataTableRow.displayName = 'DataTableRow';\r\n","import React from 'react';\r\nimport DataTableRow from \"./DataTableRow\";\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 <DataTableRow 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 React from \"react\";\r\nimport 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 React from \"react\";\r\nimport 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 React from \"react\";\r\nimport SortableTableHeadWrapper from \"./SortableTableHeadWrapper\";\r\n\r\nexport default function SortableTable<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\nSortableTable.displayName = 'SortableTable';\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 StandaloneSortHelper<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 React from 'react';\r\nimport type {SortableTableProps} from \"./types\";\r\nimport DataTableProvider from \"./DataTableProvider\";\r\nimport SortableTable from \"./SortableTable\";\r\nimport {StandaloneSortHelper} from \"./StandaloneSortHelper\";\r\n\r\n\r\nexport default function StandaloneSortableTable<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 <StandaloneSortHelper nextSort={currentSort} />\r\n <SortableTable {...rest}/>\r\n </DataTableProvider>\r\n )\r\n}\r\n\r\nStandaloneSortableTable.displayName = 'StandaloneSortableTable';\r\n","import React, {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 React from 'react';\r\nimport 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","DataTable","size","data","keyField","rowClassName","renderRow","onSelectRow","selected","tableHeadProps","tfoot","tableClassName","DataTableCols","DataTableTBody","StandaloneDataTable","DataTableCell","row","as","cellClassName","createElement","DataTableRow","trRef","onClick","clickHandler","ev","jsxs","keyValue","isSelected","useTableSort","flexJustifyContent","align","FieldTitle","SortableTableTH","sorted","ascending","_thClassName","thProps","iconClassName","SortableTableHead","onChangeSort","tableField","SortableTableHeadWrapper","SortableTable","StandaloneSortHelper","nextSort","setNextSort","useEffect","StandaloneSortableTable","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]}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,20 @@
1
- export { default as DataTable } from './DataTable';
2
- export { default as DataTableRow } from './DataTableRow';
3
- export { default as DataTableTBody } from './DataTableTBody';
4
- export { default as DataTableTH } from './DataTableTH';
5
- export { default as SortableTable } from './SortableTable';
6
- export { default as SortableTableHead } from './SortableTableHead';
7
- export { default as SortableTableTH } from './SortableTableTH';
8
- export { default as RowsPerPage, defaultRowsPerPageValues } from './RowsPerPage';
9
- export { default as TablePagination } from './TablePagination';
10
- export type { DataTableHeadProps, DataTableField, DataTableTHProps, DataTableClassNames, DataTableProps, SortableTableField, DataTableRowProps, DataTableTBodyProps, SortableTableTHProps, SortableTableHeadProps, SortProps, SortableTableProps, UISize, UIFlexAlign, TablePaginationProps, RowsPerPageProps, UITableSize, DataTableCellProps } from './types';
1
+ export { default as DataTable } from './StandaloneDataTable';
2
+ export { default as DataTableRow } from './DataTableRow';
3
+ export { default as DataTableTBody } from './DataTableTBody';
4
+ export { default as DataTableTH } from './DataTableTH';
5
+ export { default as StandaloneSortableTable } from './StandaloneSortableTable';
6
+ export { default as SortableTableHead } from './SortableTableHead';
7
+ export { default as SortableTableTH } from './SortableTableTH';
8
+ export { default as RowsPerPage } from './RowsPerPage';
9
+ export { default as TablePagination } from './TablePagination';
10
+ export { default as DataTableCols } from './DataTableCols';
11
+ export { default as DataTableWithContext } from './DataTable';
12
+ export { default as SortableTable } from './SortableTable';
13
+ export { default as DataTableProvider } from './DataTableProvider';
14
+ export { useField } from './useField';
15
+ export { useTableFields } from './useTableFields';
16
+ export { useTableSort } from './useTableSort';
17
+ export { useTableContext } from './useTableContext';
18
+ export { DataTableContext, type TableContextData } from './DataTableContext';
19
+ export type { TableProviderProps } from './DataTableProvider';
20
+ export type { SortProps, DataTableField, SortableTableField, DataTableColProps, DataTableCellProps, DataTableRowProps, DataTableTBodyProps, DataTableClassNames, DataTableProps, DataTableTHProps, RowsPerPageProps, SortableTableTHProps, SortableTableHeadProps, SortableTableProps, TablePaginationProps, UITableSize, UISize, UIFlexAlign } from './types';