@bsol-oss/react-datatable5 7.6.0 → 7.6.1
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/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# React Datatable
|
|
2
2
|
|
|
3
|
+
The datetable package is built on top of `@tanstack/react-table` and `chakra-ui` to create a robust datatable. This hook simplifies to initialize the state management for controlling the datatable, and it offers several predefined tables and controls in to enhance data visualization.
|
|
4
|
+
|
|
3
5
|
## Installation
|
|
4
6
|
|
|
5
7
|
```bash
|
|
@@ -10,11 +12,11 @@ npm install @tanstack/react-table @chakra-ui/react @emotion/react @bsol-oss/reac
|
|
|
10
12
|
|
|
11
13
|
### Hook
|
|
12
14
|
|
|
13
|
-
The `DataTable` and `DataTableServer` utilize hook to add props.
|
|
15
|
+
The `DataTable` and `DataTableServer` utilize hook to add props.
|
|
14
16
|
|
|
15
17
|
```tsx
|
|
16
18
|
const datatable = useDataTable();
|
|
17
|
-
const datatableServer = useDataTableServer({url: "<some-url>"});
|
|
19
|
+
const datatableServer = useDataTableServer({ url: "<some-url>" });
|
|
18
20
|
```
|
|
19
21
|
|
|
20
22
|
### DataTable
|
|
@@ -43,10 +45,7 @@ const datatableServer = useDataTableServer({url: "<some-url>"});
|
|
|
43
45
|
### DataTableServer
|
|
44
46
|
|
|
45
47
|
```tsx
|
|
46
|
-
<DataTableServer
|
|
47
|
-
columns={columns}
|
|
48
|
-
{...datatable}
|
|
49
|
-
>
|
|
48
|
+
<DataTableServer columns={columns} {...datatable}>
|
|
50
49
|
<Flex>
|
|
51
50
|
<TablePagination />
|
|
52
51
|
<EditViewButton />
|
|
@@ -76,7 +75,7 @@ const datatableServer = useDataTableServer({url: "<some-url>"});
|
|
|
76
75
|
Example Url generated by the DataTableServer
|
|
77
76
|
|
|
78
77
|
```
|
|
79
|
-
GET http://localhost:
|
|
78
|
+
GET http://localhost:8081/api/g/core_people?offset=0&limit=10&sorting[0][id]=id&sorting[0][desc]=false&where[0][id]=last_name&where[0][value]=nicenice&searching=good
|
|
80
79
|
```
|
|
81
80
|
|
|
82
81
|
### DefaultTable
|
|
@@ -112,6 +111,16 @@ GET http://localhost:8333/api/v1/gpt/chat/history/all?pagination={"offset":0,"ro
|
|
|
112
111
|
</DataTable>
|
|
113
112
|
```
|
|
114
113
|
|
|
114
|
+
### DataDisplay
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<DataTable columns={columns} data={data} {...datatable}>
|
|
118
|
+
<DataDisplay />
|
|
119
|
+
</DataTable>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For more details of props and examples, please review the stories in storybook platform.
|
|
123
|
+
|
|
115
124
|
## Development
|
|
116
125
|
|
|
117
126
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -117,7 +117,7 @@ declare module "@tanstack/react-table" {
|
|
|
117
117
|
itemRank: RankingInfo;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
interface DataTableProps<TData> {
|
|
120
|
+
interface DataTableProps<TData = unknown> {
|
|
121
121
|
children?: ReactNode | ReactNode[];
|
|
122
122
|
data: TData[];
|
|
123
123
|
columns: ColumnDef<TData, unknown>[];
|
|
@@ -366,7 +366,7 @@ interface TextCellProps {
|
|
|
366
366
|
}
|
|
367
367
|
declare const TextCell: ({ label, containerProps, textProps, children, }: TextCellProps) => react_jsx_runtime.JSX.Element;
|
|
368
368
|
|
|
369
|
-
interface DataTableContext<TData> {
|
|
369
|
+
interface DataTableContext<TData = unknown> {
|
|
370
370
|
table: Table$1<TData>;
|
|
371
371
|
globalFilter: string;
|
|
372
372
|
setGlobalFilter: OnChangeFn<string>;
|
package/dist/index.js
CHANGED
|
@@ -833,7 +833,7 @@ function DataTable({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
833
833
|
onColumnVisibilityChange: setColumnVisibility,
|
|
834
834
|
});
|
|
835
835
|
return (jsxRuntime.jsx(DataTableContext.Provider, { value: {
|
|
836
|
-
table:
|
|
836
|
+
table: table,
|
|
837
837
|
globalFilter: globalFilter,
|
|
838
838
|
setGlobalFilter: setGlobalFilter,
|
|
839
839
|
type: "client",
|
|
@@ -1706,7 +1706,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1706
1706
|
const [searchText, setSearchText] = React.useState();
|
|
1707
1707
|
const [limit, setLimit] = React.useState(10);
|
|
1708
1708
|
const [openSearchResult, setOpenSearchResult] = React.useState();
|
|
1709
|
-
const [page, setPage] = React.useState(
|
|
1709
|
+
const [page, setPage] = React.useState(0);
|
|
1710
1710
|
const [idMap, setIdMap] = React.useState({});
|
|
1711
1711
|
const ref = React.useRef(null);
|
|
1712
1712
|
const selectedIds = watch(column) ?? [];
|
|
@@ -1767,7 +1767,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1767
1767
|
const isDirty = (searchText?.length ?? 0) > 0;
|
|
1768
1768
|
const onSearchChange = async (event) => {
|
|
1769
1769
|
setSearchText(event.target.value);
|
|
1770
|
-
setPage(
|
|
1770
|
+
setPage(0);
|
|
1771
1771
|
setLimit(10);
|
|
1772
1772
|
};
|
|
1773
1773
|
const watchId = watch(column);
|
|
@@ -1820,7 +1820,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1820
1820
|
}, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
|
|
1821
1821
|
? renderDisplay(item)
|
|
1822
1822
|
: item[display_column] }, item[column_ref]));
|
|
1823
|
-
}) }), isDirty && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dataList.length <= 0 && jsxRuntime.jsx(react.Text, { children: "Empty Search Result" }), " "] }))] }), jsxRuntime.jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page, onPageChange: (e) => setPage(e.page), children: jsxRuntime.jsxs(react.HStack, { gap: "4", children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationPageText, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1823
|
+
}) }), isDirty && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dataList.length <= 0 && jsxRuntime.jsx(react.Text, { children: "Empty Search Result" }), " "] }))] }), jsxRuntime.jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page + 1, onPageChange: (e) => setPage(e.page - 1), children: jsxRuntime.jsxs(react.HStack, { gap: "4", children: [jsxRuntime.jsx(PaginationPrevTrigger, {}), jsxRuntime.jsx(PaginationPageText, {}), jsxRuntime.jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1824
1824
|
};
|
|
1825
1825
|
|
|
1826
1826
|
const ToggleTip = React__namespace.forwardRef(function ToggleTip(props, ref) {
|
package/dist/index.mjs
CHANGED
|
@@ -813,7 +813,7 @@ function DataTable({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
813
813
|
onColumnVisibilityChange: setColumnVisibility,
|
|
814
814
|
});
|
|
815
815
|
return (jsx(DataTableContext.Provider, { value: {
|
|
816
|
-
table:
|
|
816
|
+
table: table,
|
|
817
817
|
globalFilter: globalFilter,
|
|
818
818
|
setGlobalFilter: setGlobalFilter,
|
|
819
819
|
type: "client",
|
|
@@ -1686,7 +1686,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1686
1686
|
const [searchText, setSearchText] = useState();
|
|
1687
1687
|
const [limit, setLimit] = useState(10);
|
|
1688
1688
|
const [openSearchResult, setOpenSearchResult] = useState();
|
|
1689
|
-
const [page, setPage] = useState(
|
|
1689
|
+
const [page, setPage] = useState(0);
|
|
1690
1690
|
const [idMap, setIdMap] = useState({});
|
|
1691
1691
|
const ref = useRef(null);
|
|
1692
1692
|
const selectedIds = watch(column) ?? [];
|
|
@@ -1747,7 +1747,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1747
1747
|
const isDirty = (searchText?.length ?? 0) > 0;
|
|
1748
1748
|
const onSearchChange = async (event) => {
|
|
1749
1749
|
setSearchText(event.target.value);
|
|
1750
|
-
setPage(
|
|
1750
|
+
setPage(0);
|
|
1751
1751
|
setLimit(10);
|
|
1752
1752
|
};
|
|
1753
1753
|
const watchId = watch(column);
|
|
@@ -1800,7 +1800,7 @@ const IdPicker = ({ column, in_table, column_ref, display_column, isMultiple = f
|
|
|
1800
1800
|
}, opacity: 0.7, _hover: { opacity: 1 }, ...(selected ? { color: "gray.400/50" } : {}), children: !!renderDisplay === true
|
|
1801
1801
|
? renderDisplay(item)
|
|
1802
1802
|
: item[display_column] }, item[column_ref]));
|
|
1803
|
-
}) }), isDirty && (jsxs(Fragment, { children: [dataList.length <= 0 && jsx(Text, { children: "Empty Search Result" }), " "] }))] }), jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page, onPageChange: (e) => setPage(e.page), children: jsxs(HStack, { gap: "4", children: [jsx(PaginationPrevTrigger, {}), jsx(PaginationPageText, {}), jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1803
|
+
}) }), isDirty && (jsxs(Fragment, { children: [dataList.length <= 0 && jsx(Text, { children: "Empty Search Result" }), " "] }))] }), jsx(PaginationRoot, { justifySelf: "center", count: query?.data?.count ?? 0, pageSize: 10, defaultPage: 1, page: page + 1, onPageChange: (e) => setPage(e.page - 1), children: jsxs(HStack, { gap: "4", children: [jsx(PaginationPrevTrigger, {}), jsx(PaginationPageText, {}), jsx(PaginationNextTrigger, {})] }) })] }))] }) })] }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: fieldRequired ?? "The field is requried" }))] }));
|
|
1804
1804
|
};
|
|
1805
1805
|
|
|
1806
1806
|
const ToggleTip = React.forwardRef(function ToggleTip(props, ref) {
|
|
@@ -10,7 +10,7 @@ declare module "@tanstack/react-table" {
|
|
|
10
10
|
itemRank: RankingInfo;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
export interface DataTableProps<TData> {
|
|
13
|
+
export interface DataTableProps<TData = unknown> {
|
|
14
14
|
children?: ReactNode | ReactNode[];
|
|
15
15
|
data: TData[];
|
|
16
16
|
columns: ColumnDef<TData, unknown>[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { OnChangeFn, Table } from "@tanstack/react-table";
|
|
3
|
-
export interface DataTableContext<TData> {
|
|
3
|
+
export interface DataTableContext<TData = unknown> {
|
|
4
4
|
table: Table<TData>;
|
|
5
5
|
globalFilter: string;
|
|
6
6
|
setGlobalFilter: OnChangeFn<string>;
|