@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:8333/api/v1/gpt/chat/history/all?pagination={"offset":0,"rows":10}&sorting={}&where={}&searching=hello
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: { ...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(1);
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(1);
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: { ...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(1);
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(1);
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>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsol-oss/react-datatable5",
3
- "version": "7.6.0",
3
+ "version": "7.6.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",