@chumsinc/sortable-tables 3.0.1 → 3.0.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 +12 -1
- package/dist/index.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +172 -146
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,18 @@ 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.0.
|
|
10
|
+
#### [v3.0.2](https://github.com/ChumsInc/sortable-tables/compare/v3.0.1...v3.0.2)
|
|
11
|
+
|
|
12
|
+
> 2026-01-19
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Commits
|
|
18
|
+
|
|
19
|
+
- [`257cd6b`](https://github.com/ChumsInc/sortable-tables/commit/257cd6b3413045f481b4bf3cc689e07a2835bfa3) chore: update source mappings for index.es.js
|
|
20
|
+
|
|
21
|
+
#### [v3.0.1](https://github.com/ChumsInc/sortable-tables/compare/v3.0.0...v3.0.1) - 2026-01-19
|
|
11
22
|
|
|
12
23
|
> 2026-01-19
|
|
13
24
|
|
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"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("react"),E=require("@emotion/styled"),f=p.createContext(null);function y({children:e,initialFields:a=[],initialSort:t=null}){const[s,l]=p.useState(a),[r,c]=p.useState(t),u=p.useCallback(m=>{l(m)},[]),o=p.useCallback(m=>{c(m)},[]),d=p.useCallback((m,h)=>{const N=s.map(j=>j.id===m?{...j,...h}:j);l(N)},[s]),i=p.useCallback(m=>s.find(h=>h.id===m),[s]),b=p.useMemo(()=>({fields:s,setFields:u,sort:r,setSort:o,getField:i,updateField:d}),[s,u,r,o,d,i]);return n.jsx(f.Provider,{value:b,children:e})}y.displayName="DataTableProvider";function M(e){var a,t,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(a=0;a<l;a++)e[a]&&(t=M(e[a]))&&(s&&(s+=" "),s+=t)}else for(t in e)e[t]&&(s&&(s+=" "),s+=t);return s}function x(){for(var e,a,t=0,s="",l=arguments.length;t<l;t++)(e=arguments[t])&&(a=M(e))&&(s&&(s+=" "),s+=a);return s}const F=E.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
|
|
13
|
+
`;function _({sticky:e,responsive:a,children:t,className:s,ref:l,...r}){if(a){const c=x(s,{"table-responsive":a===!0,[`table-responsive-${a}`]:a!==!0});return n.jsx("div",{className:c,children:n.jsx(F,{ref:l,...r,children:t})})}return n.jsx(F,{className:s,sticky:e,ref:l,...r,children:t})}function v({field:e,className:a,children:t,...s}){if(e.visible===!1)return null;const l=x({[`text-${e.align}`]:!!e.align},a);return n.jsx("th",{className:l,scope:"col",...s,children:t??e.title})}v.displayName="DataTableTH";function T(){const e=p.useContext(f);if(!e)throw new Error("useTableContext must be used within a DataTableProvider");return[e.fields,e.setFields]}function q({...e}){const[a]=T();return n.jsx("thead",{...e,children:n.jsx("tr",{children:a.map((t,s)=>n.jsx(v,{...t.thProps,field:t,className:x(typeof t.className=="function"?{[`text-${t.align}`]:!!t.align}:t.className)},String(t.id??s)))})})}q.displayName="DataTableHead";function D({className:e,size:a,responsive:t,sticky:s,data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:o,selected:d,tableHeadProps:i,children:b,tfoot:m,...h}){const N=x("table",e,{[`table-${a}`]:!!a});return n.jsxs(_,{sticky:s,responsive:t,className:N,...h,children:[n.jsx(C,{}),n.jsx(q,{...i}),!!l.length&&n.jsx(S,{data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:o,selected:d}),b,m]})}D.displayName="DataTable";function B({fields:e,...a}){return n.jsx(y,{initialFields:e,children:n.jsx(D,{...a})})}B.displayName="StandaloneDataTable";function k({field:e,row:a,className:t,as:s,...l}){if(e.visible===!1)return null;const r=x({[`text-${e.align}`]:!!e.align},t,typeof e.className=="function"?e.className(a):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},a[e.field]===void 0&&!e.render?null:typeof e.render=="function"?e.render(a):a[e.field])}k.displayName="DataTableCell";function $({className:e,rowClassName:a,selected:t,row:s,trRef:l,onClick:r,...c}){const[u]=T(),o=i=>{r?.(s,i)},d=typeof a=="function"?a(s):a;return s?n.jsx("tr",{ref:l,className:x({"table-active":t},e,d),onClick:o,...c,children:u.map((i,b)=>n.jsx(k,{field:i,row:s},String(i?.id??b)))}):null}$.displayName="DataTableRow";function W({fields:e,className:a,rowClassName:t,selected:s,row:l,trRef:r,onClick:c,...u}){const o=i=>{c?.(l,i)},d=typeof t=="function"?t(l):t;return l?n.jsx("tr",{ref:r,className:x({"table-active":s},a,d),onClick:o,...u,children:e.map((i,b)=>n.jsx(k,{field:i,row:l},String(i?.id??b)))}):null}W.displayName="StandaloneDataTableRow";function S({data:e,keyField:a,rowClassName:t,renderRow:s,onSelectRow:l,selected:r="",children:c,...u}){return n.jsxs("tbody",{...u,children:[e.map(o=>{const d=String(typeof a=="function"?a(o):o[a]),i=typeof r=="function"?r(o):d===r;return s?s(o):n.jsx($,{onClick:l,rowClassName:t,row:o,selected:i},d)}),c]})}S.displayName="DataTableTBody";function g(){const e=p.useContext(f);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`
|
|
14
14
|
display: flex;
|
|
15
15
|
width: 100%;
|
|
16
16
|
flex-direction: ${e=>e.align==="end"?"row-reverse":"row"};
|
|
17
|
-
justify-content: ${e=>
|
|
17
|
+
justify-content: ${e=>I(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
|
|
29
|
+
`;function H({field:e,sorted:a,ascending:t,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}),o=()=>{l({field:e.field,ascending:a?!t:!0})},d={"bi-arrow-down":t,"bi-arrow-up":!t};return n.jsx("th",{...c,className:x("sortable",u),scope:"col",onClick:o,children:n.jsxs(J,{sorted:a,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[a]=T(),[t]=g();return n.jsx("thead",{children:n.jsx("tr",{children:a.map((s,l)=>n.jsx(H,{field:s,sorted:t?.field===s.field,ascending:t?.ascending,className:x(typeof s.className=="function"?{[`text-${s.align}`]:!!s.align}:s.className),onClick:e},l))})})}w.displayName="SortableTableHead";function A({onChangeSort:e}){const[a]=T(),[t]=g();return n.jsx(w,{fields:a,currentSort:t,onChangeSort:e})}A.displayName="SortableTableHeadWrapper";function P({className:e,size:a,responsive:t,sticky:s,data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:o,selected:d,tableHeadProps:i,children:b,tfoot:m,onChangeSort:h,...N}){const j=x("table",e,{[`table-${a}`]:!!a});return n.jsxs(_,{className:j,responsive:t,sticky:s,...N,children:[n.jsx(C,{}),n.jsx(A,{onChangeSort:h,...i}),!!l.length&&n.jsx(S,{data:l,keyField:r,rowClassName:c,renderRow:u,onSelectRow:o,selected:d}),b,m]})}P.displayName="SortableTable";function L({nextSort:e}){const[,a]=g();return p.useEffect(()=>{console.log("setNextSort",e),a(e)},[e,a]),null}function V({fields:e,currentSort:a,...t}){return n.jsxs(y,{initialFields:e,initialSort:a,children:[n.jsx(L,{nextSort:a}),n.jsx(P,{...t})]})}V.displayName="StandaloneSortableTable";const O=[10,25,50,100,250,500,1e3];function R({value:e,pageValues:a=O,size:t,label:s,className:l,onChange:r,...c}){const u=p.useId(),o=b=>r(Number(b.target.value)),d=l??x("form-select",{[`form-select-${t}`]:!!t}),i=x("input-group",{[`input-group-${t}`]:!!t});return n.jsxs("div",{className:i,children:[n.jsx("label",{className:"input-group-text",htmlFor:u,children:s??"Rows"}),n.jsx("select",{className:d,id:u,value:e,onChange:o,...c,children:a.map(b=>n.jsx("option",{value:b,children:b},b))})]},e)}R.displayName="RowsPerPage";function G({page:e,rowsPerPage:a,onChangePage:t,count:s,size:l,showFirst:r,showLast:c,className:u,rowsPerPageProps:o,...d}){const i=s===0?0:e*a+1,b=Math.min(e*a+a,s),m=a===0?0:Math.floor((s-1)/a),h=x("btn btn-link",{[`btn-${l}`]:!!l});return n.jsxs("div",{className:x("row g-3 justify-content-end",u),...d,children:[!!o&&n.jsx("div",{className:"col-auto",children:n.jsx(R,{...o,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:[i,"-",b," of ",s]}),r&&n.jsx("div",{className:"col-auto",children:n.jsx("button",{className:h,disabled:e===0,onClick:()=>t(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:h,disabled:e===0,onClick:()=>t(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:h,disabled:e>=m,onClick:()=>t(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:h,disabled:e>=m,onClick:()=>t(m),"aria-label":"Last page",children:n.jsx("span",{className:"bi-chevron-bar-right","aria-hidden":"true"})})})]})})]})}G.displayname="TablePagination";function C(){const[e]=T();return n.jsx("colgroup",{children:e.filter(a=>a.visible!==!1).map((a,t)=>n.jsx("col",{className:a.colClassName,span:a.colSpan??1},t))})}C.displayName="DataTableCols";function K(e){const a=p.useContext(f);if(!a)throw new Error("useField must be used within a DataTableProvider");return[a.fields.find(t=>t.id===e)??null,a.updateField]}function Q(){const e=p.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=$;exports.DataTableTBody=S;exports.DataTableTH=v;exports.DataTableWithContext=D;exports.RowsPerPage=R;exports.SortableTable=P;exports.SortableTableHead=w;exports.SortableTableTH=H;exports.StandaloneDataTableRow=W;exports.StandaloneSortableTable=V;exports.TablePagination=G;exports.useField=K;exports.useTableContext=Q;exports.useTableFields=T;exports.useTableSort=g;
|
|
30
30
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -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/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';\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 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';\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 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]}
|
|
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/StandaloneDataTableRow.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';\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 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';\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 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, {type MouseEvent} from 'react';\r\nimport type {DataTableField, DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\nexport interface StandaloneDataTableRowProps<T = unknown> extends DataTableRowProps<T> {\r\n fields: DataTableField<T>[]\r\n}\r\n\r\nexport default function StandaloneDataTableRow<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 }: StandaloneDataTableRowProps<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\nStandaloneDataTableRow.displayName = 'StandaloneDataTableRow';\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","t","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","StandaloneDataTableRow","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":"qKAYaA,EAAmBC,EAAAA,cAAgD,IAAI,ECFpF,SAAwBC,EAA+B,CACI,SAAAC,EACA,cAAAC,EAAgB,CAAA,EAChB,YAAAC,EAAc,IAClB,EAA0B,CAC7E,KAAM,CAACC,EAAQC,CAAc,EAAIC,EAAAA,SAA8BJ,CAAa,EACtE,CAACK,EAAMC,CAAe,EAAIF,EAAAA,SAA8BH,CAAW,EAEnEM,EAAYC,EAAAA,YACbN,GAAuF,CACpFC,EAAeD,CAAM,CACzB,EAAG,CAAA,CAAC,EAEFO,EAAUD,EAAAA,YACXH,GAAkF,CAC/EC,EAAgBD,CAAI,CACxB,EAAG,CAAA,CAAC,EAGFK,EAAcF,EAAAA,YAAY,CAACG,EAAsBC,IAAoC,CACvF,MAAMC,EAAYX,EAAO,IAAIY,GACrBA,EAAM,KAAOH,EACN,CAAC,GAAGG,EAAO,GAAGF,CAAA,EAElBE,CACV,EACDX,EAAeU,CAAS,CAC5B,EAAG,CAACX,CAAM,CAAC,EAELa,EAAWP,EAAAA,YAAaG,GAAyBT,EAAO,KAAKY,GAASA,EAAM,KAAOH,CAAG,EAAG,CAACT,CAAM,CAAC,EAGjGc,EAAQC,EAAAA,QACV,KAAO,CACH,OAAAf,EACA,UAAAK,EACA,KAAAF,EACA,QAAAI,EACA,SAAAM,EACA,YAAAL,CAAA,GAEJ,CAACR,EAAQK,EAAWF,EAAMI,EAASC,EAAaK,CAAQ,CAAA,EAG5D,OACIG,EAAAA,IAACtB,EAAiB,SAAjB,CAA0B,MAAAoB,EACtB,SAAAjB,CAAA,CACL,CAER,CACAD,EAAkB,YAAc,oBC5DhC,SAASqB,EAAE,EAAE,CAAC,IAAIC,EAAEC,EAAEC,EAAE,GAAG,GAAa,OAAO,GAAjB,UAA8B,OAAO,GAAjB,SAAmBA,GAAG,UAAoB,OAAO,GAAjB,SAAmB,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,IAAIC,EAAE,EAAE,OAAO,IAAIH,EAAE,EAAEA,EAAEG,EAAEH,IAAI,EAAEA,CAAC,IAAIC,EAAEF,EAAE,EAAEC,CAAC,CAAC,KAAKE,IAAIA,GAAG,KAAKA,GAAGD,EAAE,KAAM,KAAIA,KAAK,EAAE,EAAEA,CAAC,IAAIC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CAAQ,SAASE,GAAM,CAAC,QAAQ,EAAEJ,EAAEC,EAAE,EAAEC,EAAE,GAAGC,EAAE,UAAU,OAAOF,EAAEE,EAAEF,KAAK,EAAE,UAAUA,CAAC,KAAKD,EAAED,EAAE,CAAC,KAAKG,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAC,CCS/W,MAAMG,EAAcC,EAAO;AAAA,0BACDC,GAASA,EAAM,OAAS,IAAM,MAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMzCA,GAASA,EAAM,OAAS,SAAW,OAAO;AAAA,uBAC3CA,GAASA,EAAM,OAAS,GAAK,OAAO;AAAA,0BACjCA,GAASA,EAAM,OAAS,iFAAmF,OAAO;AAAA;AAAA;AAAA,EAM5I,SAAwBC,EAAM,CACI,OAAAC,EACA,WAAAC,EACA,SAAA/B,EACA,UAAAgC,EACA,IAAAC,EACA,GAAGC,CACP,EAAqB,CAC/C,GAAIH,EAAY,CACZ,MAAMI,EAAaV,EAAKO,EAAW,CAC/B,mBAAoBD,IAAe,GACnC,CAAC,oBAAoBA,CAAU,EAAE,EAAGA,IAAe,EAAA,CACtD,EACD,OACIZ,EAAAA,IAAC,MAAA,CAAI,UAAWgB,EACZ,SAAAhB,EAAAA,IAACO,GAAY,IAAAO,EAAW,GAAGC,EAAO,SAAAlC,CAAA,CAAS,CAAA,CAC/C,CAER,CAEA,aACK0B,EAAA,CAAY,UAAAM,EAAsB,OAAAF,EAAgB,IAAAG,EAAW,GAAGC,EAAO,SAAAlC,EAAS,CAEzF,CC1CA,SAAwBoC,EAAyB,CACX,MAAArB,EACA,UAAAiB,EACA,SAAAhC,EACA,GAAGkC,CACP,EAAwB,CACtD,GAAInB,EAAM,UAAY,GAClB,OAAO,KAEX,MAAMsB,EAAcZ,EAAK,CAAC,CAAC,QAAQV,EAAM,KAAK,EAAE,EAAG,CAAC,CAACA,EAAM,KAAA,EAAQiB,CAAS,EAC5E,OACIb,EAAAA,IAAC,KAAA,CAAG,UAAWkB,EAAa,MAAM,MAAO,GAAGH,EACvC,SAAAlC,GAAYe,EAAM,KAAA,CACvB,CAER,CACAqB,EAAY,YAAc,cCdnB,SAASE,GAGd,CACE,MAAMC,EAAUC,EAAAA,WAAW3C,CAAgB,EAC3C,GAAI,CAAC0C,EACD,MAAM,IAAI,MAAM,yDAAyD,EAE7E,MAAO,CACHA,EAAQ,OACRA,EAAQ,SAAA,CAEhB,CCbA,SAAwBE,EAA2B,CAAC,GAAGP,GAAqD,CACxG,KAAM,CAAC/B,CAAM,EAAImC,EAAA,EACjB,OACInB,EAAAA,IAAC,QAAA,CAAO,GAAGe,EACX,SAAAf,EAAAA,IAAC,MACI,SAAAhB,EACI,IAAI,CAACY,EAAO2B,IACbvB,EAAAA,IAACiB,EAAA,CACa,GAAGrB,EAAM,QACV,MAAAA,EACA,UAAWU,EACP,OAAOV,EAAM,WAAc,WACrB,CAAC,CAAC,QAAQA,EAAM,KAAK,EAAE,EAAG,CAAC,CAACA,EAAM,KAAA,EAClCA,EAAM,SAAA,CAChB,EAPK,OAAOA,EAAM,IAAM2B,CAAK,CAAA,CAQ7C,EACL,CAAA,CACA,CAER,CACAD,EAAc,YAAc,gBCpB5B,SAAwBE,EAAuB,CACe,UAAAX,EACA,KAAAY,EACA,WAAAb,EACA,OAAAD,EACA,KAAAe,EACA,SAAAC,EACA,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,SAAAC,EACA,eAAAC,EACA,SAAAnD,EACA,MAAAoD,EACA,GAAGlB,CACP,EAAsC,CAC5F,MAAMmB,EAAiB5B,EAAK,QAASO,EAAW,CAC5C,CAAC,SAASY,CAAI,EAAE,EAAG,CAAC,CAACA,CAAA,CACxB,EAED,cACKf,EAAA,CAAM,OAAAC,EAAgB,WAAAC,EAAwB,UAAWsB,EAAiB,GAAGnB,EAC1E,SAAA,CAAAf,EAAAA,IAACmC,EAAA,EAAa,EACdnC,EAAAA,IAACsB,EAAA,CAAe,GAAGU,EAAe,EACjC,CAAC,CAACN,EAAK,QACJ1B,EAAAA,IAACoC,EAAA,CAAe,KAAAV,EAAY,SAAAC,EAAoB,aAAAC,EAChC,UAAAC,EACA,YAAAC,EAA0B,SAAAC,CAAA,CAAA,EAE7ClD,EACAoD,CAAA,EACL,CAER,CACAT,EAAU,YAAc,YCnCxB,SAAwBa,EAAiC,CACrB,OAAArD,EACA,GAAG+B,CACP,EAAsB,CAClD,OACIf,MAACpB,GAAkB,cAAeI,EAC9B,eAACwC,EAAA,CAAW,GAAGT,EAAK,CAAA,CACxB,CAER,CACAsB,EAAoB,YAAc,sBCVlC,SAAwBC,EAA2B,CAAC,MAAA1C,EAAO,IAAA2C,EAAK,UAAA1B,EAAW,GAAA2B,EAAI,GAAGzB,GAA8B,CAC5G,GAAInB,EAAM,UAAY,GAClB,OAAO,KAEX,MAAM6C,EAAgBnC,EAClB,CAAC,CAAC,QAAQV,EAAM,KAAK,EAAE,EAAG,CAAC,CAACA,EAAM,KAAA,EAClCiB,EACA,OAAOjB,EAAM,WAAc,WAAaA,EAAM,UAAU2C,CAAG,EAAI3C,EAAM,SAAA,EAEzE,OAAO8C,EAAAA,cACFF,GAAM5C,EAAM,IAAO,KACpB,CACI,UAAW6C,EACX,OAAQD,GAAM5C,EAAM,MAAQ,KAAO,MAAQ,OAC3C,QAASA,EAAM,QACf,GAAGA,EAAM,UACT,GAAGmB,CAAA,EAENwB,EAAI3C,EAAM,KAAK,IAAM,QAAa,CAACA,EAAM,OACpC,KAEE,OAAOA,EAAM,QAAW,WAClBA,EAAM,OAAO2C,CAAG,EAChBA,EAAI3C,EAAM,KAAK,CAAA,CAGrC,CACA0C,EAAc,YAAc,gBCzB5B,SAAwBK,EAA0B,CACX,UAAA9B,EACA,aAAAe,EACA,SAAAG,EACA,IAAAQ,EACA,MAAAK,EACA,QAAAC,EACA,GAAG9B,CACP,EAAyB,CACxD,KAAM,CAAC/B,CAAM,EAAImC,EAAA,EACX2B,EAAgBC,GAAwC,CAC1DF,IAAUN,EAAKQ,CAAE,CACrB,EAEM/B,EAAa,OAAOY,GAAiB,WAAaA,EAAaW,CAAG,EAAIX,EAC5E,OAAKW,EAKDvC,EAAAA,IAAC,KAAA,CAAG,IAAK4C,EACL,UAAWtC,EAAK,CAAC,eAAgByB,CAAA,EAAWlB,EAAWG,CAAU,EACjE,QAAS8B,EACR,GAAG/B,EACH,SAAA/B,EACI,IAAI,CAACY,EAAO2B,IACTvB,EAAAA,IAACsC,EAAA,CAA+C,MAAA1C,EAAc,IAAA2C,CAAA,EAA1C,OAAO3C,GAAO,IAAM2B,CAAK,CAA0B,CAC1E,CAAA,CAAA,EAXF,IAcf,CACAoB,EAAa,YAAc,eC5B3B,SAAwBK,EAAoC,CACI,OAAAhE,EACA,UAAA6B,EACA,aAAAe,EACA,SAAAG,EACA,IAAAQ,EACA,MAAAK,EACA,QAAAC,EACA,GAAG9B,CACP,EAAmC,CAC3F,MAAM+B,EAAgBC,GAAwC,CAC1DF,IAAUN,EAAKQ,CAAE,CACrB,EAEM/B,EAAa,OAAOY,GAAiB,WAAaA,EAAaW,CAAG,EAAIX,EAC5E,OAAKW,EAKDvC,EAAAA,IAAC,KAAA,CAAG,IAAK4C,EACL,UAAWtC,EAAK,CAAC,eAAgByB,CAAA,EAAWlB,EAAWG,CAAU,EACjE,QAAS8B,EACR,GAAG/B,EACH,SAAA/B,EACI,IAAI,CAACY,EAAO2B,IACTvB,EAAAA,IAACsC,EAAA,CAA+C,MAAA1C,EAAc,IAAA2C,CAAA,EAA1C,OAAO3C,GAAO,IAAM2B,CAAK,CAA0B,CAC1E,CAAA,CAAA,EAXF,IAcf,CACAyB,EAAuB,YAAc,yBCpCrC,SAAwBZ,EAA4B,CACX,KAAAV,EACA,SAAAC,EACA,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,SAAAlD,EACA,GAAGkC,CACP,EAA2B,CAC5D,OACIkC,EAAAA,KAAC,QAAA,CAAO,GAAGlC,EACV,SAAA,CAAAW,EAAK,IAAIa,GAAO,CACb,MAAMW,EAAW,OAAO,OAAOvB,GAAa,WAAaA,EAASY,CAAG,EAAIA,EAAIZ,CAAQ,CAAC,EAChFwB,EAAa,OAAOpB,GAAa,WAAaA,EAASQ,CAAG,EAAIW,IAAanB,EACjF,OAAIF,EACOA,EAAUU,CAAG,EAGpBvC,EAAAA,IAAC2C,EAAA,CAA4B,QAASb,EACxB,aAAAF,EACA,IAAAW,EAAU,SAAUY,CAAA,EAFfD,CAAA,CAI3B,CAAC,EACArE,CAAA,EACD,CAER,CACAuD,EAAe,YAAc,iBC1BtB,SAASgB,GAGd,CACE,MAAMhC,EAAUC,EAAAA,WAAW3C,CAAgB,EAC3C,GAAI,CAAC0C,EACD,MAAM,IAAI,MAAM,sDAAsD,EAE1E,MAAO,CACHA,EAAQ,KACRA,EAAQ,OAAA,CAEhB,CCbA,MAAMiC,EAAsBC,GACnBA,EAGGA,IACC,MACM,WAEA,SANJ,aAcTC,EAAa/C,EAAO;AAAA;AAAA;AAAA,sBAGJC,GAASA,EAAM,QAAU,MAAQ,cAAgB,KAAK;AAAA,uBACrDA,GAAS4C,EAAmB5C,EAAM,KAAK,CAAC;AAAA;AAAA;AAAA,qBAG1CA,GAASA,EAAM,QAAU,MAAQ,IAAM,GAAG;AAAA,mBAC5CA,GAASA,EAAM,OAAS,EAAI,CAAC;AAAA;AAAA;AAAA;AAAA,iBAI/BA,GAASA,EAAM,OAAS,QAAU,mBAAmB;AAAA;AAAA;AAAA;AAAA,EAMtE,SAAwB+C,EAA6B,CACX,MAAA5D,EACA,OAAA6D,EACA,UAAAC,EACA,UAAA7C,EACA,QAAAgC,CACJ,EAA4B,CAC9D,GAAIjD,EAAM,UAAY,GAClB,OAAO,KAEX,GAAI,CAACA,EAAM,SACP,OAAQI,EAAAA,IAACiB,EAAA,CAAY,MAAArB,EAAc,UAAAiB,CAAA,CAAqB,EAG5D,KAAM,CAAC,UAAW8C,EAAc,GAAGC,GAAWhE,EAAM,SAAW,CAAA,EACzDsB,EAAcZ,EAChBO,EACA8C,EACA,CAAC,CAAC,QAAQ/D,EAAM,KAAK,EAAE,EAAG,CAAC,CAACA,EAAM,KAAA,CAAK,EAGrCkD,EAAe,IAAM,CACvBD,EAAQ,CAAC,MAAOjD,EAAM,MAAO,UAAY6D,EAAgB,CAACC,EAAR,GAAkB,CACxE,EAEMG,EAAgB,CAClB,gBAAiBH,EACjB,cAAe,CAACA,CAAA,EAGpB,aACK,KAAA,CAAI,GAAGE,EAAS,UAAWtD,EAAK,WAAYY,CAAW,EAAG,MAAM,MAAM,QAAS4B,EAC5E,SAAAG,EAAAA,KAACM,GAAW,OAAAE,EAAgB,MAAO7D,EAAM,MACrC,SAAA,CAAAI,EAAAA,IAAC,MAAA,CAAI,UAAU,cAAe,SAAAJ,EAAM,MAAM,QACzC,MAAA,CAAI,UAAWU,EAAK,iBAAkBuD,CAAa,CAAA,CAAE,CAAA,CAAA,CAC1D,CAAA,CACJ,CAER,CACAL,EAAgB,YAAc,kBCxE9B,SAAwBM,EAA+B,CACX,aAAAC,CACJ,EAA8B,CAClE,KAAM,CAAC/E,CAAM,EAAImC,EAAA,EACX,CAAChC,CAAI,EAAIiE,EAAA,EACf,OACIpD,EAAAA,IAAC,SACD,SAAAA,EAAAA,IAAC,KAAA,CACI,WACI,IAAI,CAACgE,EAAYzC,IAClBvB,EAAAA,IAACwD,EAAA,CAA+B,MAAOQ,EACnB,OAAQ7E,GAAM,QAAU6E,EAAW,MAAO,UAAW7E,GAAM,UAC3D,UAAWmB,EACP,OAAO0D,EAAW,WAAc,WAC1B,CAAC,CAAC,QAAQA,EAAW,KAAK,EAAE,EAAG,CAAC,CAACA,EAAW,KAAA,EAC5CA,EAAW,SAAA,EAClB,QAASD,CAAA,EANPxC,CAAA,CAO5B,EACL,CAAA,CACA,CAER,CAEAuC,EAAkB,YAAc,oBCrBhC,SAAwBG,EAAsC,CACI,aAAAF,CACJ,EAAqC,CAC/F,KAAM,CAAC/E,CAAM,EAAImC,EAAA,EACX,CAAChC,CAAI,EAAIiE,EAAA,EAEf,OACIpD,EAAAA,IAAC8D,EAAA,CAAkB,OAAA9E,EAAgB,YAAaG,EAAM,aAAA4E,EAA4B,CAE1F,CACAE,EAAyB,YAAc,2BCZvC,SAAwBC,EAA2B,CACI,UAAArD,EACA,KAAAY,EACA,WAAAb,EACA,OAAAD,EACA,KAAAe,EACA,SAAAC,EACA,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,SAAAC,EACA,eAAAC,EACA,SAAAnD,EACA,MAAAoD,EACA,aAAA8B,EACA,GAAGhD,CACP,EAA0D,CACzG,MAAMmB,EAAiB5B,EAAK,QAASO,EAAW,CAC5C,CAAC,SAASY,CAAI,EAAE,EAAG,CAAC,CAACA,CAAA,CACxB,EAED,cACKf,EAAA,CAAM,UAAWwB,EAAgB,WAAAtB,EAAwB,OAAAD,EAAiB,GAAGI,EAC1E,SAAA,CAAAf,EAAAA,IAACmC,EAAA,EAAa,EACdnC,EAAAA,IAACiE,EAAA,CAAyB,aAAAF,EAA6B,GAAG/B,CAAA,CAAe,EACxE,CAAC,CAACN,EAAK,QACJ1B,EAAAA,IAACoC,EAAA,CAAe,KAAAV,EAAY,SAAAC,EAAoB,aAAAC,EAChC,UAAAC,EACA,YAAAC,EAA0B,SAAAC,CAAA,CAAA,EAE7ClD,EACAoD,CAAA,EACL,CAER,CACAiC,EAAc,YAAc,gBCnCrB,SAASC,EAAkC,CAAC,SAAAC,GAAwC,CACvF,KAAM,CAAA,CAAGC,CAAW,EAAIjB,EAAA,EACxBkB,OAAAA,EAAAA,UAAU,IAAM,CACZ,QAAQ,IAAI,cAAeF,CAAQ,EACnCC,EAAYD,CAAQ,CACxB,EAAG,CAACA,EAAUC,CAAW,CAAC,EACnB,IACX,CCPA,SAAwBE,EAAqC,CACI,OAAAvF,EACA,YAAAwF,EACA,GAAGzD,CACP,EAA0B,CACnF,OACIkC,EAAAA,KAACrE,EAAA,CAAkB,cAAeI,EAAQ,YAAawF,EACnD,SAAA,CAAAxE,EAAAA,IAACmE,EAAA,CAAqB,SAAUK,CAAA,CAAa,EAC7CxE,MAACkE,EAAA,CAAe,GAAGnD,CAAA,CAAK,CAAA,EAC5B,CAER,CAEAwD,EAAwB,YAAc,0BChBtC,MAAME,EAAqC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAE3E,SAAwBC,EAAY,CACX,MAAA5E,EACA,WAAA6E,EAAaF,EACb,KAAAhD,EACA,MAAAmD,EACA,UAAA/D,EACA,SAAAgE,EACA,GAAG9D,CACP,EAAqB,CACtC,MAAM+D,EAAKC,EAAAA,MAAA,EACLC,EAAiBjC,GAAuC8B,EAAS,OAAO9B,EAAG,OAAO,KAAK,CAAC,EACxFkC,EAAkBpE,GAAaP,EAAK,cAAe,CAAC,CAAC,eAAemB,CAAI,EAAE,EAAG,CAAC,CAACA,EAAK,EACpFyD,EAAsB5E,EAAK,cAAe,CAC5C,CAAC,eAAemB,CAAI,EAAE,EAAG,CAAC,CAACA,CAAA,CAC9B,EAED,OACIwB,EAAAA,KAAC,MAAA,CAAI,UAAWiC,EACZ,SAAA,CAAAlF,MAAC,SAAM,UAAU,mBAAmB,QAAS8E,EAAK,YAAS,OAAO,EAClE9E,EAAAA,IAAC,SAAA,CAAO,UAAWiF,EAAiB,GAAAH,EAC5B,MAAAhF,EAAc,SAAUkF,EAAgB,GAAGjE,EAC9C,SAAA4D,EAAW,IAAI7E,GACZE,EAAAA,IAAC,SAAA,CAAmB,MAAOF,EAAQ,SAAAA,CAAAA,EAAtBA,CAA4B,CAC5C,CAAA,CAAA,CACL,CAAA,EAPsCA,CAQ1C,CAER,CACA4E,EAAY,YAAc,cC7B1B,SAAwBS,EAAgB,CACX,KAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAAC,EACA,KAAA9D,EACA,UAAA+D,EACA,SAAAC,EACA,UAAA5E,EACA,iBAAA6E,EACA,GAAG3E,CACP,EAAyB,CAE9C,MAAM4E,EAAQJ,IAAU,EAAI,EAAKH,EAAOC,EAAe,EACjDO,EAAO,KAAK,IAAIR,EAAOC,EAAcA,EAAaE,CAAK,EACvDM,EAAWR,IAAgB,EAAI,EAAI,KAAK,OAAOE,EAAQ,GAAKF,CAAW,EAEvES,EAAkBxF,EAAK,eAAgB,CAAC,CAAC,OAAOmB,CAAI,EAAE,EAAG,CAAC,CAACA,EAAK,EAEtE,OACIwB,EAAAA,KAAC,OAAI,UAAW3C,EAAK,8BAA+BO,CAAS,EAAI,GAAGE,EAC/D,SAAA,CAAA,CAAC,CAAC2E,GACC1F,EAAAA,IAAC,MAAA,CAAI,UAAU,WACX,SAAAA,EAAAA,IAAC0E,EAAA,CAAa,GAAGgB,EAAkB,MAAOL,EAAa,KAAA5D,EAAW,EACtE,QAEH,MAAA,CAAI,UAAU,WACX,SAAAwB,EAAAA,KAAC,MAAA,CAAI,UAAU,2CACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,WACV,SAAA,CAAA0C,EAAM,IAAEC,EAAK,OAAKL,CAAA,EACvB,EACCC,GACGxF,EAAAA,IAAC,MAAA,CAAI,UAAU,WACX,SAAAA,EAAAA,IAAC,SAAA,CAAO,UAAW8F,EAAiB,SAAUV,IAAS,EAC/C,QAAS,IAAME,EAAa,CAAC,EAAG,aAAW,aAC/C,SAAAtF,EAAAA,IAAC,OAAA,CAAK,UAAU,sBAAsB,cAAY,MAAA,CAAM,CAAA,CAAA,EAEhE,EAEJA,EAAAA,IAAC,MAAA,CAAI,UAAU,WACX,SAAAA,EAAAA,IAAC,SAAA,CAAO,UAAW8F,EAAiB,SAAUV,IAAS,EAC/C,QAAS,IAAME,EAAaF,EAAO,CAAC,EAAG,aAAW,gBACtD,SAAApF,EAAAA,IAAC,OAAA,CAAK,UAAU,kBAAkB,cAAY,MAAA,CAAM,CAAA,CAAA,EAE5D,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,WACX,SAAAA,EAAAA,IAAC,SAAA,CAAO,UAAW8F,EAAiB,SAAUV,GAAQS,EAC9C,QAAS,IAAMP,EAAaF,EAAO,CAAC,EAAG,aAAW,YACtD,SAAApF,EAAAA,IAAC,OAAA,CAAK,UAAU,mBAAmB,cAAY,MAAA,CAAM,CAAA,CAAA,EAE7D,EACCyF,GACGzF,EAAAA,IAAC,MAAA,CAAI,UAAU,WACX,SAAAA,EAAAA,IAAC,SAAA,CAAO,UAAW8F,EAAiB,SAAUV,GAAQS,EAC9C,QAAS,IAAMP,EAAaO,CAAQ,EAAG,aAAW,YACtD,SAAA7F,EAAAA,IAAC,OAAA,CAAK,UAAU,uBAAuB,cAAY,MAAA,CAAM,CAAA,CAAA,CAC7D,CACJ,CAAA,CAAA,CAER,CAAA,CACJ,CAAA,EACJ,CAER,CACAmF,EAAgB,YAAc,kBCnE9B,SAAwBhD,GAA6B,CACjD,KAAM,CAACnD,CAAM,EAAImC,EAAA,EACjB,OACInB,EAAAA,IAAC,WAAA,CACI,SAAAhB,EACI,OAAOY,GAASA,EAAM,UAAY,EAAK,EACvC,IAAI,CAACA,EAAO2B,IACTvB,EAAAA,IAAC,MAAA,CACI,UAAWJ,EAAM,aACjB,KAAMA,EAAM,SAAW,CAAA,EAFlB2B,CAAA,CAGb,EACT,CAER,CACAY,EAAc,YAAc,gBCXrB,SAAS4D,EAAsBtG,EAGpC,CACE,MAAM2B,EAAUC,EAAAA,WAAW3C,CAAgB,EAC3C,GAAI,CAAC0C,EACD,MAAM,IAAI,MAAM,kDAAkD,EAGtE,MAAO,CACHA,EAAQ,OAAO,QAAcxB,EAAM,KAAOH,CAAG,GAAK,KAClD2B,EAAQ,WAAA,CAEhB,CCfO,SAAS4E,GAAmD,CAC/D,MAAM5E,EAAUC,EAAAA,WAAW3C,CAAgB,EAC3C,GAAI,CAAC0C,EACD,MAAM,IAAI,MAAM,yDAAyD,EAE7E,OAAOA,CACX","x_google_ignoreList":[2]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as DataTable } from './StandaloneDataTable';
|
|
2
2
|
export { default as DataTableRow } from './DataTableRow';
|
|
3
|
+
export { default as StandaloneDataTableRow } from './StandaloneDataTableRow';
|
|
3
4
|
export { default as DataTableTBody } from './DataTableTBody';
|
|
4
5
|
export { default as DataTableTH } from './DataTableTH';
|
|
5
6
|
export { default as StandaloneSortableTable } from './StandaloneSortableTable';
|
|
@@ -17,4 +18,5 @@ export { useTableSort } from './useTableSort';
|
|
|
17
18
|
export { useTableContext } from './useTableContext';
|
|
18
19
|
export { DataTableContext, type TableContextData } from './DataTableContext';
|
|
19
20
|
export type { TableProviderProps } from './DataTableProvider';
|
|
21
|
+
export type { StandaloneDataTableRowProps } from './StandaloneDataTableRow';
|
|
20
22
|
export type { SortProps, DataTableField, SortableTableField, DataTableColProps, DataTableCellProps, DataTableRowProps, DataTableTBodyProps, DataTableClassNames, DataTableProps, DataTableTHProps, RowsPerPageProps, SortableTableTHProps, SortableTableHeadProps, SortableTableProps, TablePaginationProps, UITableSize, UISize, UIFlexAlign } from './types';
|
package/dist/index.es.js
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { jsx as l, jsxs as
|
|
2
|
-
import { createContext as I, useState as
|
|
3
|
-
import
|
|
1
|
+
import { jsx as l, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as I, useState as w, useCallback as g, useMemo as J, useContext as S, createElement as L, useEffect as q, useId as K } from "react";
|
|
3
|
+
import R from "@emotion/styled";
|
|
4
4
|
const y = I(null);
|
|
5
5
|
function x({
|
|
6
6
|
children: t,
|
|
7
7
|
initialFields: a = [],
|
|
8
8
|
initialSort: e = null
|
|
9
9
|
}) {
|
|
10
|
-
const [n, s] =
|
|
11
|
-
(
|
|
12
|
-
s(
|
|
10
|
+
const [n, s] = w(a), [r, c] = w(e), u = g(
|
|
11
|
+
(p) => {
|
|
12
|
+
s(p);
|
|
13
13
|
},
|
|
14
14
|
[]
|
|
15
|
-
),
|
|
16
|
-
(
|
|
17
|
-
|
|
15
|
+
), i = g(
|
|
16
|
+
(p) => {
|
|
17
|
+
c(p);
|
|
18
18
|
},
|
|
19
19
|
[]
|
|
20
|
-
),
|
|
21
|
-
const N = n.map((T) => T.id ===
|
|
20
|
+
), d = g((p, f) => {
|
|
21
|
+
const N = n.map((T) => T.id === p ? { ...T, ...f } : T);
|
|
22
22
|
s(N);
|
|
23
|
-
}, [n]),
|
|
23
|
+
}, [n]), o = g((p) => n.find((f) => f.id === p), [n]), b = J(
|
|
24
24
|
() => ({
|
|
25
25
|
fields: n,
|
|
26
|
-
setFields:
|
|
26
|
+
setFields: u,
|
|
27
27
|
sort: r,
|
|
28
|
-
setSort:
|
|
29
|
-
getField:
|
|
30
|
-
updateField:
|
|
28
|
+
setSort: i,
|
|
29
|
+
getField: o,
|
|
30
|
+
updateField: d
|
|
31
31
|
}),
|
|
32
|
-
[n,
|
|
32
|
+
[n, u, r, i, d, o]
|
|
33
33
|
);
|
|
34
34
|
return /* @__PURE__ */ l(y.Provider, { value: b, children: t });
|
|
35
35
|
}
|
|
@@ -43,11 +43,11 @@ function E(t) {
|
|
|
43
43
|
} else for (e in t) t[e] && (n && (n += " "), n += e);
|
|
44
44
|
return n;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function m() {
|
|
47
47
|
for (var t, a, e = 0, n = "", s = arguments.length; e < s; e++) (t = arguments[e]) && (a = E(t)) && (n && (n += " "), n += a);
|
|
48
48
|
return n;
|
|
49
49
|
}
|
|
50
|
-
const
|
|
50
|
+
const F = R.table`
|
|
51
51
|
--table-sticky-top: ${(t) => t.sticky ? "0" : void 0};
|
|
52
52
|
|
|
53
53
|
thead {
|
|
@@ -69,13 +69,13 @@ function P({
|
|
|
69
69
|
...r
|
|
70
70
|
}) {
|
|
71
71
|
if (a) {
|
|
72
|
-
const
|
|
72
|
+
const c = m(n, {
|
|
73
73
|
"table-responsive": a === !0,
|
|
74
74
|
[`table-responsive-${a}`]: a !== !0
|
|
75
75
|
});
|
|
76
|
-
return /* @__PURE__ */ l("div", { className:
|
|
76
|
+
return /* @__PURE__ */ l("div", { className: c, children: /* @__PURE__ */ l(F, { ref: s, ...r, children: e }) });
|
|
77
77
|
}
|
|
78
|
-
return /* @__PURE__ */ l(
|
|
78
|
+
return /* @__PURE__ */ l(F, { className: n, sticky: t, ref: s, ...r, children: e });
|
|
79
79
|
}
|
|
80
80
|
function C({
|
|
81
81
|
field: t,
|
|
@@ -85,7 +85,7 @@ function C({
|
|
|
85
85
|
}) {
|
|
86
86
|
if (t.visible === !1)
|
|
87
87
|
return null;
|
|
88
|
-
const s =
|
|
88
|
+
const s = m({ [`text-${t.align}`]: !!t.align }, a);
|
|
89
89
|
return /* @__PURE__ */ l("th", { className: s, scope: "col", ...n, children: e ?? t.title });
|
|
90
90
|
}
|
|
91
91
|
C.displayName = "DataTableTH";
|
|
@@ -105,7 +105,7 @@ function j({ ...t }) {
|
|
|
105
105
|
{
|
|
106
106
|
...e.thProps,
|
|
107
107
|
field: e,
|
|
108
|
-
className:
|
|
108
|
+
className: m(
|
|
109
109
|
typeof e.className == "function" ? { [`text-${e.align}`]: !!e.align } : e.className
|
|
110
110
|
)
|
|
111
111
|
},
|
|
@@ -113,55 +113,55 @@ function j({ ...t }) {
|
|
|
113
113
|
)) }) });
|
|
114
114
|
}
|
|
115
115
|
j.displayName = "DataTableHead";
|
|
116
|
-
function
|
|
116
|
+
function _({
|
|
117
117
|
className: t,
|
|
118
118
|
size: a,
|
|
119
119
|
responsive: e,
|
|
120
120
|
sticky: n,
|
|
121
121
|
data: s,
|
|
122
122
|
keyField: r,
|
|
123
|
-
rowClassName:
|
|
124
|
-
renderRow:
|
|
125
|
-
onSelectRow:
|
|
126
|
-
selected:
|
|
127
|
-
tableHeadProps:
|
|
123
|
+
rowClassName: c,
|
|
124
|
+
renderRow: u,
|
|
125
|
+
onSelectRow: i,
|
|
126
|
+
selected: d,
|
|
127
|
+
tableHeadProps: o,
|
|
128
128
|
children: b,
|
|
129
|
-
tfoot:
|
|
130
|
-
...
|
|
129
|
+
tfoot: p,
|
|
130
|
+
...f
|
|
131
131
|
}) {
|
|
132
|
-
const N =
|
|
132
|
+
const N = m("table", t, {
|
|
133
133
|
[`table-${a}`]: !!a
|
|
134
134
|
});
|
|
135
|
-
return /* @__PURE__ */
|
|
136
|
-
/* @__PURE__ */ l(
|
|
137
|
-
/* @__PURE__ */ l(j, { ...
|
|
135
|
+
return /* @__PURE__ */ h(P, { sticky: n, responsive: e, className: N, ...f, children: [
|
|
136
|
+
/* @__PURE__ */ l(H, {}),
|
|
137
|
+
/* @__PURE__ */ l(j, { ...o }),
|
|
138
138
|
!!s.length && /* @__PURE__ */ l(
|
|
139
|
-
|
|
139
|
+
k,
|
|
140
140
|
{
|
|
141
141
|
data: s,
|
|
142
142
|
keyField: r,
|
|
143
|
-
rowClassName:
|
|
144
|
-
renderRow:
|
|
145
|
-
onSelectRow:
|
|
146
|
-
selected:
|
|
143
|
+
rowClassName: c,
|
|
144
|
+
renderRow: u,
|
|
145
|
+
onSelectRow: i,
|
|
146
|
+
selected: d
|
|
147
147
|
}
|
|
148
148
|
),
|
|
149
149
|
b,
|
|
150
|
-
|
|
150
|
+
p
|
|
151
151
|
] });
|
|
152
152
|
}
|
|
153
|
-
|
|
153
|
+
_.displayName = "DataTable";
|
|
154
154
|
function O({
|
|
155
155
|
fields: t,
|
|
156
156
|
...a
|
|
157
157
|
}) {
|
|
158
|
-
return /* @__PURE__ */ l(x, { initialFields: t, children: /* @__PURE__ */ l(
|
|
158
|
+
return /* @__PURE__ */ l(x, { initialFields: t, children: /* @__PURE__ */ l(_, { ...a }) });
|
|
159
159
|
}
|
|
160
160
|
O.displayName = "StandaloneDataTable";
|
|
161
|
-
function
|
|
161
|
+
function D({ field: t, row: a, className: e, as: n, ...s }) {
|
|
162
162
|
if (t.visible === !1)
|
|
163
163
|
return null;
|
|
164
|
-
const r =
|
|
164
|
+
const r = m(
|
|
165
165
|
{ [`text-${t.align}`]: !!t.align },
|
|
166
166
|
e,
|
|
167
167
|
typeof t.className == "function" ? t.className(a) : t.className
|
|
@@ -178,59 +178,84 @@ function M({ field: t, row: a, className: e, as: n, ...s }) {
|
|
|
178
178
|
a[t.field] === void 0 && !t.render ? null : typeof t.render == "function" ? t.render(a) : a[t.field]
|
|
179
179
|
);
|
|
180
180
|
}
|
|
181
|
-
|
|
182
|
-
function
|
|
181
|
+
D.displayName = "DataTableCell";
|
|
182
|
+
function M({
|
|
183
183
|
className: t,
|
|
184
184
|
rowClassName: a,
|
|
185
185
|
selected: e,
|
|
186
186
|
row: n,
|
|
187
187
|
trRef: s,
|
|
188
188
|
onClick: r,
|
|
189
|
-
...
|
|
189
|
+
...c
|
|
190
190
|
}) {
|
|
191
|
-
const [
|
|
192
|
-
r?.(n,
|
|
193
|
-
},
|
|
191
|
+
const [u] = v(), i = (o) => {
|
|
192
|
+
r?.(n, o);
|
|
193
|
+
}, d = typeof a == "function" ? a(n) : a;
|
|
194
194
|
return n ? /* @__PURE__ */ l(
|
|
195
195
|
"tr",
|
|
196
196
|
{
|
|
197
197
|
ref: s,
|
|
198
|
-
className:
|
|
199
|
-
onClick:
|
|
200
|
-
...
|
|
201
|
-
children:
|
|
198
|
+
className: m({ "table-active": e }, t, d),
|
|
199
|
+
onClick: i,
|
|
200
|
+
...c,
|
|
201
|
+
children: u.map((o, b) => /* @__PURE__ */ l(D, { field: o, row: n }, String(o?.id ?? b)))
|
|
202
202
|
}
|
|
203
203
|
) : null;
|
|
204
204
|
}
|
|
205
|
-
|
|
206
|
-
function
|
|
205
|
+
M.displayName = "DataTableRow";
|
|
206
|
+
function Q({
|
|
207
|
+
fields: t,
|
|
208
|
+
className: a,
|
|
209
|
+
rowClassName: e,
|
|
210
|
+
selected: n,
|
|
211
|
+
row: s,
|
|
212
|
+
trRef: r,
|
|
213
|
+
onClick: c,
|
|
214
|
+
...u
|
|
215
|
+
}) {
|
|
216
|
+
const i = (o) => {
|
|
217
|
+
c?.(s, o);
|
|
218
|
+
}, d = typeof e == "function" ? e(s) : e;
|
|
219
|
+
return s ? /* @__PURE__ */ l(
|
|
220
|
+
"tr",
|
|
221
|
+
{
|
|
222
|
+
ref: r,
|
|
223
|
+
className: m({ "table-active": n }, a, d),
|
|
224
|
+
onClick: i,
|
|
225
|
+
...u,
|
|
226
|
+
children: t.map((o, b) => /* @__PURE__ */ l(D, { field: o, row: s }, String(o?.id ?? b)))
|
|
227
|
+
}
|
|
228
|
+
) : null;
|
|
229
|
+
}
|
|
230
|
+
Q.displayName = "StandaloneDataTableRow";
|
|
231
|
+
function k({
|
|
207
232
|
data: t,
|
|
208
233
|
keyField: a,
|
|
209
234
|
rowClassName: e,
|
|
210
235
|
renderRow: n,
|
|
211
236
|
onSelectRow: s,
|
|
212
237
|
selected: r = "",
|
|
213
|
-
children:
|
|
214
|
-
...
|
|
238
|
+
children: c,
|
|
239
|
+
...u
|
|
215
240
|
}) {
|
|
216
|
-
return /* @__PURE__ */
|
|
217
|
-
t.map((
|
|
218
|
-
const
|
|
219
|
-
return n ? n(
|
|
220
|
-
|
|
241
|
+
return /* @__PURE__ */ h("tbody", { ...u, children: [
|
|
242
|
+
t.map((i) => {
|
|
243
|
+
const d = String(typeof a == "function" ? a(i) : i[a]), o = typeof r == "function" ? r(i) : d === r;
|
|
244
|
+
return n ? n(i) : /* @__PURE__ */ l(
|
|
245
|
+
M,
|
|
221
246
|
{
|
|
222
247
|
onClick: s,
|
|
223
248
|
rowClassName: e,
|
|
224
|
-
row:
|
|
225
|
-
selected:
|
|
249
|
+
row: i,
|
|
250
|
+
selected: o
|
|
226
251
|
},
|
|
227
|
-
|
|
252
|
+
d
|
|
228
253
|
);
|
|
229
254
|
}),
|
|
230
|
-
|
|
255
|
+
c
|
|
231
256
|
] });
|
|
232
257
|
}
|
|
233
|
-
|
|
258
|
+
k.displayName = "DataTableTBody";
|
|
234
259
|
function $() {
|
|
235
260
|
const t = S(y);
|
|
236
261
|
if (!t)
|
|
@@ -240,11 +265,11 @@ function $() {
|
|
|
240
265
|
t.setSort
|
|
241
266
|
];
|
|
242
267
|
}
|
|
243
|
-
const
|
|
268
|
+
const U = (t) => t ? t === "end" ? "flex-end" : "center" : "flex-start", X = R.div`
|
|
244
269
|
display: flex;
|
|
245
270
|
width: 100%;
|
|
246
271
|
flex-direction: ${(t) => t.align === "end" ? "row-reverse" : "row"};
|
|
247
|
-
justify-content: ${(t) =>
|
|
272
|
+
justify-content: ${(t) => U(t.align)};
|
|
248
273
|
|
|
249
274
|
.sort-icon {
|
|
250
275
|
flex-grow: ${(t) => t.align === "end" ? "1" : "0"};
|
|
@@ -257,7 +282,7 @@ const Q = (t) => t ? t === "end" ? "flex-end" : "center" : "flex-start", U = F.d
|
|
|
257
282
|
transition: opacity 0.2s;
|
|
258
283
|
}
|
|
259
284
|
`;
|
|
260
|
-
function
|
|
285
|
+
function W({
|
|
261
286
|
field: t,
|
|
262
287
|
sorted: a,
|
|
263
288
|
ascending: e,
|
|
@@ -268,33 +293,33 @@ function _({
|
|
|
268
293
|
return null;
|
|
269
294
|
if (!t.sortable)
|
|
270
295
|
return /* @__PURE__ */ l(C, { field: t, className: n });
|
|
271
|
-
const { className: r, ...
|
|
296
|
+
const { className: r, ...c } = t.thProps ?? {}, u = m(
|
|
272
297
|
n,
|
|
273
298
|
r,
|
|
274
299
|
{ [`text-${t.align}`]: !!t.align }
|
|
275
|
-
),
|
|
300
|
+
), i = () => {
|
|
276
301
|
s({ field: t.field, ascending: a ? !e : !0 });
|
|
277
|
-
},
|
|
302
|
+
}, d = {
|
|
278
303
|
"bi-arrow-down": e,
|
|
279
304
|
"bi-arrow-up": !e
|
|
280
305
|
};
|
|
281
|
-
return /* @__PURE__ */ l("th", { ...
|
|
306
|
+
return /* @__PURE__ */ l("th", { ...c, className: m("sortable", u), scope: "col", onClick: i, children: /* @__PURE__ */ h(X, { sorted: a, align: t.align, children: [
|
|
282
307
|
/* @__PURE__ */ l("div", { className: "field-title", children: t.title }),
|
|
283
|
-
/* @__PURE__ */ l("div", { className:
|
|
308
|
+
/* @__PURE__ */ l("div", { className: m("me-1 sort-icon", d) })
|
|
284
309
|
] }) });
|
|
285
310
|
}
|
|
286
|
-
|
|
311
|
+
W.displayName = "SortableTableTH";
|
|
287
312
|
function A({
|
|
288
313
|
onChangeSort: t
|
|
289
314
|
}) {
|
|
290
315
|
const [a] = v(), [e] = $();
|
|
291
316
|
return /* @__PURE__ */ l("thead", { children: /* @__PURE__ */ l("tr", { children: a.map((n, s) => /* @__PURE__ */ l(
|
|
292
|
-
|
|
317
|
+
W,
|
|
293
318
|
{
|
|
294
319
|
field: n,
|
|
295
320
|
sorted: e?.field === n.field,
|
|
296
321
|
ascending: e?.ascending,
|
|
297
|
-
className:
|
|
322
|
+
className: m(
|
|
298
323
|
typeof n.className == "function" ? { [`text-${n.align}`]: !!n.align } : n.className
|
|
299
324
|
),
|
|
300
325
|
onClick: t
|
|
@@ -317,102 +342,102 @@ function V({
|
|
|
317
342
|
sticky: n,
|
|
318
343
|
data: s,
|
|
319
344
|
keyField: r,
|
|
320
|
-
rowClassName:
|
|
321
|
-
renderRow:
|
|
322
|
-
onSelectRow:
|
|
323
|
-
selected:
|
|
324
|
-
tableHeadProps:
|
|
345
|
+
rowClassName: c,
|
|
346
|
+
renderRow: u,
|
|
347
|
+
onSelectRow: i,
|
|
348
|
+
selected: d,
|
|
349
|
+
tableHeadProps: o,
|
|
325
350
|
children: b,
|
|
326
|
-
tfoot:
|
|
327
|
-
onChangeSort:
|
|
351
|
+
tfoot: p,
|
|
352
|
+
onChangeSort: f,
|
|
328
353
|
...N
|
|
329
354
|
}) {
|
|
330
|
-
const T =
|
|
355
|
+
const T = m("table", t, {
|
|
331
356
|
[`table-${a}`]: !!a
|
|
332
357
|
});
|
|
333
|
-
return /* @__PURE__ */
|
|
334
|
-
/* @__PURE__ */ l(
|
|
335
|
-
/* @__PURE__ */ l(B, { onChangeSort:
|
|
358
|
+
return /* @__PURE__ */ h(P, { className: T, responsive: e, sticky: n, ...N, children: [
|
|
359
|
+
/* @__PURE__ */ l(H, {}),
|
|
360
|
+
/* @__PURE__ */ l(B, { onChangeSort: f, ...o }),
|
|
336
361
|
!!s.length && /* @__PURE__ */ l(
|
|
337
|
-
|
|
362
|
+
k,
|
|
338
363
|
{
|
|
339
364
|
data: s,
|
|
340
365
|
keyField: r,
|
|
341
|
-
rowClassName:
|
|
342
|
-
renderRow:
|
|
343
|
-
onSelectRow:
|
|
344
|
-
selected:
|
|
366
|
+
rowClassName: c,
|
|
367
|
+
renderRow: u,
|
|
368
|
+
onSelectRow: i,
|
|
369
|
+
selected: d
|
|
345
370
|
}
|
|
346
371
|
),
|
|
347
372
|
b,
|
|
348
|
-
|
|
373
|
+
p
|
|
349
374
|
] });
|
|
350
375
|
}
|
|
351
376
|
V.displayName = "SortableTable";
|
|
352
|
-
function
|
|
377
|
+
function Y({ nextSort: t }) {
|
|
353
378
|
const [, a] = $();
|
|
354
379
|
return q(() => {
|
|
355
380
|
console.log("setNextSort", t), a(t);
|
|
356
381
|
}, [t, a]), null;
|
|
357
382
|
}
|
|
358
|
-
function
|
|
383
|
+
function Z({
|
|
359
384
|
fields: t,
|
|
360
385
|
currentSort: a,
|
|
361
386
|
...e
|
|
362
387
|
}) {
|
|
363
|
-
return /* @__PURE__ */
|
|
364
|
-
/* @__PURE__ */ l(
|
|
388
|
+
return /* @__PURE__ */ h(x, { initialFields: t, initialSort: a, children: [
|
|
389
|
+
/* @__PURE__ */ l(Y, { nextSort: a }),
|
|
365
390
|
/* @__PURE__ */ l(V, { ...e })
|
|
366
391
|
] });
|
|
367
392
|
}
|
|
368
|
-
|
|
369
|
-
const
|
|
393
|
+
Z.displayName = "StandaloneSortableTable";
|
|
394
|
+
const z = [10, 25, 50, 100, 250, 500, 1e3];
|
|
370
395
|
function G({
|
|
371
396
|
value: t,
|
|
372
|
-
pageValues: a =
|
|
397
|
+
pageValues: a = z,
|
|
373
398
|
size: e,
|
|
374
399
|
label: n,
|
|
375
400
|
className: s,
|
|
376
401
|
onChange: r,
|
|
377
|
-
...
|
|
402
|
+
...c
|
|
378
403
|
}) {
|
|
379
|
-
const
|
|
404
|
+
const u = K(), i = (b) => r(Number(b.target.value)), d = s ?? m("form-select", { [`form-select-${e}`]: !!e }), o = m("input-group", {
|
|
380
405
|
[`input-group-${e}`]: !!e
|
|
381
406
|
});
|
|
382
|
-
return /* @__PURE__ */
|
|
383
|
-
/* @__PURE__ */ l("label", { className: "input-group-text", htmlFor:
|
|
407
|
+
return /* @__PURE__ */ h("div", { className: o, children: [
|
|
408
|
+
/* @__PURE__ */ l("label", { className: "input-group-text", htmlFor: u, children: n ?? "Rows" }),
|
|
384
409
|
/* @__PURE__ */ l(
|
|
385
410
|
"select",
|
|
386
411
|
{
|
|
387
|
-
className:
|
|
388
|
-
id:
|
|
412
|
+
className: d,
|
|
413
|
+
id: u,
|
|
389
414
|
value: t,
|
|
390
|
-
onChange:
|
|
391
|
-
...
|
|
415
|
+
onChange: i,
|
|
416
|
+
...c,
|
|
392
417
|
children: a.map((b) => /* @__PURE__ */ l("option", { value: b, children: b }, b))
|
|
393
418
|
}
|
|
394
419
|
)
|
|
395
420
|
] }, t);
|
|
396
421
|
}
|
|
397
422
|
G.displayName = "RowsPerPage";
|
|
398
|
-
function
|
|
423
|
+
function tt({
|
|
399
424
|
page: t,
|
|
400
425
|
rowsPerPage: a,
|
|
401
426
|
onChangePage: e,
|
|
402
427
|
count: n,
|
|
403
428
|
size: s,
|
|
404
429
|
showFirst: r,
|
|
405
|
-
showLast:
|
|
406
|
-
className:
|
|
407
|
-
rowsPerPageProps:
|
|
408
|
-
...
|
|
430
|
+
showLast: c,
|
|
431
|
+
className: u,
|
|
432
|
+
rowsPerPageProps: i,
|
|
433
|
+
...d
|
|
409
434
|
}) {
|
|
410
|
-
const
|
|
411
|
-
return /* @__PURE__ */
|
|
412
|
-
!!
|
|
413
|
-
/* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */
|
|
414
|
-
/* @__PURE__ */
|
|
415
|
-
|
|
435
|
+
const o = n === 0 ? 0 : t * a + 1, b = Math.min(t * a + a, n), p = a === 0 ? 0 : Math.floor((n - 1) / a), f = m("btn btn-link", { [`btn-${s}`]: !!s });
|
|
436
|
+
return /* @__PURE__ */ h("div", { className: m("row g-3 justify-content-end", u), ...d, children: [
|
|
437
|
+
!!i && /* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ l(G, { ...i, value: a, size: s }) }),
|
|
438
|
+
/* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ h("div", { className: "row g-3 flex-nowrap align-items-baseline", children: [
|
|
439
|
+
/* @__PURE__ */ h("div", { className: "col-auto", children: [
|
|
440
|
+
o,
|
|
416
441
|
"-",
|
|
417
442
|
b,
|
|
418
443
|
" of ",
|
|
@@ -421,7 +446,7 @@ function z({
|
|
|
421
446
|
r && /* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ l(
|
|
422
447
|
"button",
|
|
423
448
|
{
|
|
424
|
-
className:
|
|
449
|
+
className: f,
|
|
425
450
|
disabled: t === 0,
|
|
426
451
|
onClick: () => e(0),
|
|
427
452
|
"aria-label": "First page",
|
|
@@ -431,7 +456,7 @@ function z({
|
|
|
431
456
|
/* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ l(
|
|
432
457
|
"button",
|
|
433
458
|
{
|
|
434
|
-
className:
|
|
459
|
+
className: f,
|
|
435
460
|
disabled: t === 0,
|
|
436
461
|
onClick: () => e(t - 1),
|
|
437
462
|
"aria-label": "Previous page",
|
|
@@ -441,19 +466,19 @@ function z({
|
|
|
441
466
|
/* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ l(
|
|
442
467
|
"button",
|
|
443
468
|
{
|
|
444
|
-
className:
|
|
445
|
-
disabled: t >=
|
|
469
|
+
className: f,
|
|
470
|
+
disabled: t >= p,
|
|
446
471
|
onClick: () => e(t + 1),
|
|
447
472
|
"aria-label": "Next page",
|
|
448
473
|
children: /* @__PURE__ */ l("span", { className: "bi-chevron-right", "aria-hidden": "true" })
|
|
449
474
|
}
|
|
450
475
|
) }),
|
|
451
|
-
|
|
476
|
+
c && /* @__PURE__ */ l("div", { className: "col-auto", children: /* @__PURE__ */ l(
|
|
452
477
|
"button",
|
|
453
478
|
{
|
|
454
|
-
className:
|
|
455
|
-
disabled: t >=
|
|
456
|
-
onClick: () => e(
|
|
479
|
+
className: f,
|
|
480
|
+
disabled: t >= p,
|
|
481
|
+
onClick: () => e(p),
|
|
457
482
|
"aria-label": "Last page",
|
|
458
483
|
children: /* @__PURE__ */ l("span", { className: "bi-chevron-bar-right", "aria-hidden": "true" })
|
|
459
484
|
}
|
|
@@ -461,8 +486,8 @@ function z({
|
|
|
461
486
|
] }) })
|
|
462
487
|
] });
|
|
463
488
|
}
|
|
464
|
-
|
|
465
|
-
function
|
|
489
|
+
tt.displayname = "TablePagination";
|
|
490
|
+
function H() {
|
|
466
491
|
const [t] = v();
|
|
467
492
|
return /* @__PURE__ */ l("colgroup", { children: t.filter((a) => a.visible !== !1).map((a, e) => /* @__PURE__ */ l(
|
|
468
493
|
"col",
|
|
@@ -473,8 +498,8 @@ function k() {
|
|
|
473
498
|
e
|
|
474
499
|
)) });
|
|
475
500
|
}
|
|
476
|
-
|
|
477
|
-
function
|
|
501
|
+
H.displayName = "DataTableCols";
|
|
502
|
+
function lt(t) {
|
|
478
503
|
const a = S(y);
|
|
479
504
|
if (!a)
|
|
480
505
|
throw new Error("useField must be used within a DataTableProvider");
|
|
@@ -483,7 +508,7 @@ function nt(t) {
|
|
|
483
508
|
a.updateField
|
|
484
509
|
];
|
|
485
510
|
}
|
|
486
|
-
function
|
|
511
|
+
function st() {
|
|
487
512
|
const t = S(y);
|
|
488
513
|
if (!t)
|
|
489
514
|
throw new Error("useTableContext must be used within a DataTableProvider");
|
|
@@ -491,21 +516,22 @@ function lt() {
|
|
|
491
516
|
}
|
|
492
517
|
export {
|
|
493
518
|
O as DataTable,
|
|
494
|
-
|
|
519
|
+
H as DataTableCols,
|
|
495
520
|
y as DataTableContext,
|
|
496
521
|
x as DataTableProvider,
|
|
497
|
-
|
|
498
|
-
|
|
522
|
+
M as DataTableRow,
|
|
523
|
+
k as DataTableTBody,
|
|
499
524
|
C as DataTableTH,
|
|
500
|
-
|
|
525
|
+
_ as DataTableWithContext,
|
|
501
526
|
G as RowsPerPage,
|
|
502
527
|
V as SortableTable,
|
|
503
528
|
A as SortableTableHead,
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
lt as
|
|
529
|
+
W as SortableTableTH,
|
|
530
|
+
Q as StandaloneDataTableRow,
|
|
531
|
+
Z as StandaloneSortableTable,
|
|
532
|
+
tt as TablePagination,
|
|
533
|
+
lt as useField,
|
|
534
|
+
st as useTableContext,
|
|
509
535
|
v as useTableFields,
|
|
510
536
|
$ as useTableSort
|
|
511
537
|
};
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.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';\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 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';\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 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","e","t","f","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]}
|
|
1
|
+
{"version":3,"file":"index.es.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/StandaloneDataTableRow.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';\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 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';\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 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, {type MouseEvent} from 'react';\r\nimport type {DataTableField, DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\nimport clsx from \"clsx\";\r\nimport {useTableFields} from \"./useTableFields\";\r\n\r\nexport interface StandaloneDataTableRowProps<T = unknown> extends DataTableRowProps<T> {\r\n fields: DataTableField<T>[]\r\n}\r\n\r\nexport default function StandaloneDataTableRow<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 }: StandaloneDataTableRowProps<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\nStandaloneDataTableRow.displayName = 'StandaloneDataTableRow';\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","e","t","f","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","StandaloneDataTableRow","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/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
export {default as DataTable} from './StandaloneDataTable';
|
|
5
5
|
export {default as DataTableRow} from './DataTableRow';
|
|
6
|
+
export {default as StandaloneDataTableRow} from './StandaloneDataTableRow';
|
|
6
7
|
export {default as DataTableTBody} from './DataTableTBody';
|
|
7
8
|
export {default as DataTableTH} from './DataTableTH';
|
|
8
9
|
export {default as StandaloneSortableTable} from './StandaloneSortableTable';
|
|
@@ -20,6 +21,7 @@ export {useTableSort} from './useTableSort'
|
|
|
20
21
|
export {useTableContext} from './useTableContext'
|
|
21
22
|
export {DataTableContext, type TableContextData} from './DataTableContext'
|
|
22
23
|
export type {TableProviderProps} from './DataTableProvider'
|
|
24
|
+
export type {StandaloneDataTableRowProps} from './StandaloneDataTableRow'
|
|
23
25
|
export type {
|
|
24
26
|
SortProps,
|
|
25
27
|
DataTableField,
|