@bsol-oss/react-datatable5 2.2.0 → 3.0.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/dist/index.d.ts +66 -59
- package/dist/index.js +114 -65
- package/dist/index.mjs +114 -66
- package/dist/types/components/DataTable/DataTableServer.d.ts +4 -11
- package/dist/types/components/DataTable/useDataFromUrl.d.ts +3 -3
- package/dist/types/components/DataTable/useDataTable.d.ts +11 -10
- package/dist/types/components/DataTable/useDataTableServer.d.ts +16 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -122,9 +122,71 @@ interface DataTableProps<TData> {
|
|
|
122
122
|
}
|
|
123
123
|
declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, children, }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
124
124
|
|
|
125
|
-
interface
|
|
126
|
-
|
|
125
|
+
interface UseDataFromUrlReturn<T> {
|
|
126
|
+
data: T;
|
|
127
|
+
loading: boolean;
|
|
128
|
+
hasError: boolean;
|
|
129
|
+
refreshData: () => void;
|
|
130
|
+
}
|
|
131
|
+
interface UseDataFromUrlProps<T> {
|
|
127
132
|
url: string;
|
|
133
|
+
params?: object;
|
|
134
|
+
defaultData: T;
|
|
135
|
+
disableFirstFetch?: boolean;
|
|
136
|
+
onFetchSuccess?: (data: T) => void;
|
|
137
|
+
}
|
|
138
|
+
declare const useDataFromUrl: <T>({ url, params, disableFirstFetch, onFetchSuccess, defaultData, }: UseDataFromUrlProps<T>) => UseDataFromUrlReturn<T>;
|
|
139
|
+
|
|
140
|
+
interface DataTableDefaultState {
|
|
141
|
+
sorting?: SortingState;
|
|
142
|
+
columnFilters?: ColumnFiltersState;
|
|
143
|
+
pagination?: PaginationState;
|
|
144
|
+
rowSelection?: RowSelectionState;
|
|
145
|
+
columnOrder?: ColumnOrderState;
|
|
146
|
+
globalFilter?: string;
|
|
147
|
+
columnVisibility?: VisibilityState;
|
|
148
|
+
density?: DensityState;
|
|
149
|
+
}
|
|
150
|
+
interface UseDataTableProps {
|
|
151
|
+
default?: DataTableDefaultState;
|
|
152
|
+
}
|
|
153
|
+
interface UseDataTableReturn {
|
|
154
|
+
sorting: SortingState;
|
|
155
|
+
columnFilters: ColumnFiltersState;
|
|
156
|
+
pagination: PaginationState;
|
|
157
|
+
rowSelection: RowSelectionState;
|
|
158
|
+
columnOrder: ColumnOrderState;
|
|
159
|
+
globalFilter: string;
|
|
160
|
+
columnVisibility: VisibilityState;
|
|
161
|
+
density: DensityState;
|
|
162
|
+
setPagination: OnChangeFn<PaginationState>;
|
|
163
|
+
setSorting: OnChangeFn<SortingState>;
|
|
164
|
+
setColumnFilters: OnChangeFn<ColumnFiltersState>;
|
|
165
|
+
setRowSelection: OnChangeFn<RowSelectionState>;
|
|
166
|
+
setGlobalFilter: OnChangeFn<string>;
|
|
167
|
+
setColumnOrder: OnChangeFn<ColumnOrderState>;
|
|
168
|
+
setDensity: OnChangeFn<DensityState>;
|
|
169
|
+
setColumnVisibility: OnChangeFn<VisibilityState>;
|
|
170
|
+
}
|
|
171
|
+
declare const useDataTable: ({ default: { sorting: defaultSorting, pagination: defaultPagination, rowSelection: defaultRowSelection, columnFilters: defaultColumnFilters, columnOrder: defaultColumnOrder, columnVisibility: defaultColumnVisibility, globalFilter: defaultGlobalFilter, density: defaultDensity, }, }?: UseDataTableProps) => UseDataTableReturn;
|
|
172
|
+
|
|
173
|
+
interface UseDataTableServerProps<TData> extends Omit<UseDataFromUrlProps<DataResponse<TData>>, keyof {
|
|
174
|
+
defaultData: any;
|
|
175
|
+
}>, UseDataTableProps {
|
|
176
|
+
}
|
|
177
|
+
interface UseDataTableServerReturn<TData> extends UseDataFromUrlReturn<DataResponse<TData>>, UseDataTableReturn {
|
|
178
|
+
}
|
|
179
|
+
interface Result<T> {
|
|
180
|
+
results: T[];
|
|
181
|
+
}
|
|
182
|
+
interface DataResponse<T> extends Result<T> {
|
|
183
|
+
success: boolean;
|
|
184
|
+
count: number;
|
|
185
|
+
}
|
|
186
|
+
declare const useDataTableServer: <TData>({ url, onFetchSuccess, default: { sorting: defaultSorting, pagination: defaultPagination, rowSelection: defaultRowSelection, columnFilters: defaultColumnFilters, columnOrder: defaultColumnOrder, columnVisibility: defaultColumnVisibility, globalFilter: defaultGlobalFilter, density: defaultDensity, }, }: UseDataTableServerProps<TData>) => UseDataTableServerReturn<TData>;
|
|
187
|
+
|
|
188
|
+
interface DataTableServerProps<TData> extends UseDataFromUrlReturn<DataResponse<TData>> {
|
|
189
|
+
children: JSX.Element | JSX.Element[];
|
|
128
190
|
columns: ColumnDef<TData, any>[];
|
|
129
191
|
enableRowSelection?: boolean;
|
|
130
192
|
enableMultiRowSelection?: boolean;
|
|
@@ -146,16 +208,8 @@ interface DataTableServerProps<TData> {
|
|
|
146
208
|
setColumnOrder: OnChangeFn<ColumnOrderState>;
|
|
147
209
|
setDensity: OnChangeFn<DensityState>;
|
|
148
210
|
setColumnVisibility: OnChangeFn<VisibilityState>;
|
|
149
|
-
onFetchSuccess?: (response: DataResponse<TData>) => void;
|
|
150
|
-
}
|
|
151
|
-
interface Result<T> {
|
|
152
|
-
results: T[];
|
|
153
211
|
}
|
|
154
|
-
|
|
155
|
-
success: boolean;
|
|
156
|
-
count: number;
|
|
157
|
-
}
|
|
158
|
-
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, onFetchSuccess, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
212
|
+
declare const DataTableServer: <TData>({ columns, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, data, loading, hasError, refreshData, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
159
213
|
|
|
160
214
|
interface TableControlsProps {
|
|
161
215
|
totalText?: string;
|
|
@@ -269,53 +323,6 @@ interface TextCellProps extends TextProps {
|
|
|
269
323
|
}
|
|
270
324
|
declare const TextCell: ({ label, noOfLines, padding, children, tooltipProps, ...props }: TextCellProps) => react_jsx_runtime.JSX.Element;
|
|
271
325
|
|
|
272
|
-
interface useDataFromUrlReturn<T> {
|
|
273
|
-
data: T;
|
|
274
|
-
loading: boolean;
|
|
275
|
-
hasError: boolean;
|
|
276
|
-
refreshData: () => void;
|
|
277
|
-
}
|
|
278
|
-
interface useDataFromUrlProps<T> {
|
|
279
|
-
url: string;
|
|
280
|
-
params?: object;
|
|
281
|
-
defaultData: T;
|
|
282
|
-
disableFirstFetch?: boolean;
|
|
283
|
-
onFetchSuccess?: (data: T) => void;
|
|
284
|
-
}
|
|
285
|
-
declare const useDataFromUrl: <T>({ url, params, disableFirstFetch, onFetchSuccess, defaultData, }: useDataFromUrlProps<T>) => useDataFromUrlReturn<T>;
|
|
286
|
-
|
|
287
|
-
interface UseDataTableProps {
|
|
288
|
-
default: {
|
|
289
|
-
sorting?: SortingState;
|
|
290
|
-
columnFilters?: ColumnFiltersState;
|
|
291
|
-
pagination?: PaginationState;
|
|
292
|
-
rowSelection?: RowSelectionState;
|
|
293
|
-
columnOrder?: ColumnOrderState;
|
|
294
|
-
globalFilter?: string;
|
|
295
|
-
columnVisibility?: VisibilityState;
|
|
296
|
-
density?: DensityState;
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
interface UseDataTableReturn {
|
|
300
|
-
sorting: SortingState;
|
|
301
|
-
columnFilters: ColumnFiltersState;
|
|
302
|
-
pagination: PaginationState;
|
|
303
|
-
rowSelection: RowSelectionState;
|
|
304
|
-
columnOrder: ColumnOrderState;
|
|
305
|
-
globalFilter: string;
|
|
306
|
-
columnVisibility: VisibilityState;
|
|
307
|
-
density: DensityState;
|
|
308
|
-
setPagination: OnChangeFn<PaginationState>;
|
|
309
|
-
setSorting: OnChangeFn<SortingState>;
|
|
310
|
-
setColumnFilters: OnChangeFn<ColumnFiltersState>;
|
|
311
|
-
setRowSelection: OnChangeFn<RowSelectionState>;
|
|
312
|
-
setGlobalFilter: OnChangeFn<string>;
|
|
313
|
-
setColumnOrder: OnChangeFn<ColumnOrderState>;
|
|
314
|
-
setDensity: OnChangeFn<DensityState>;
|
|
315
|
-
setColumnVisibility: OnChangeFn<VisibilityState>;
|
|
316
|
-
}
|
|
317
|
-
declare const useDataTable: ({ default: { sorting: defaultSorting, pagination: defaultPagination, rowSelection: defaultRowSelection, columnFilters: defaultColumnFilters, columnOrder: defaultColumnOrder, columnVisibility: defaultColumnVisibility, globalFilter: defaultGlobalFilter, density: defaultDensity, }, }?: UseDataTableProps) => UseDataTableReturn;
|
|
318
|
-
|
|
319
326
|
declare const useDataTableContext: () => {
|
|
320
327
|
table: _tanstack_table_core.Table<any>;
|
|
321
328
|
refreshData: () => void;
|
|
@@ -386,4 +393,4 @@ declare module "@tanstack/react-table" {
|
|
|
386
393
|
}
|
|
387
394
|
}
|
|
388
395
|
|
|
389
|
-
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, FilterOptions, type FilterOptionsProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type
|
|
396
|
+
export { type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, FilterOptions, type FilterOptionsProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type UseDataFromUrlProps, type UseDataFromUrlReturn, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, useDataFromUrl, useDataTable, useDataTableContext, useDataTableServer };
|
package/dist/index.js
CHANGED
|
@@ -9,13 +9,13 @@ var react$1 = require('react');
|
|
|
9
9
|
var io = require('react-icons/io');
|
|
10
10
|
var reactTable = require('@tanstack/react-table');
|
|
11
11
|
var matchSorterUtils = require('@tanstack/match-sorter-utils');
|
|
12
|
-
var axios = require('axios');
|
|
13
12
|
var table = require('@chakra-ui/table');
|
|
14
13
|
var bs = require('react-icons/bs');
|
|
15
14
|
var gr = require('react-icons/gr');
|
|
16
15
|
var io5 = require('react-icons/io5');
|
|
17
16
|
var reactBeautifulDnd = require('react-beautiful-dnd');
|
|
18
17
|
var fa = require('react-icons/fa');
|
|
18
|
+
var axios = require('axios');
|
|
19
19
|
|
|
20
20
|
const DensityToggleButton = ({ text, icon = jsxRuntime.jsx(ai.AiOutlineColumnWidth, {}), }) => {
|
|
21
21
|
const { table } = useDataTableContext();
|
|
@@ -263,66 +263,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
263
263
|
}, children: children }));
|
|
264
264
|
};
|
|
265
265
|
|
|
266
|
-
const
|
|
267
|
-
const [loading, setLoading] = react$1.useState(true);
|
|
268
|
-
const [hasError, setHasError] = react$1.useState(false);
|
|
269
|
-
const [data, setData] = react$1.useState(defaultData);
|
|
270
|
-
const refreshData = async () => {
|
|
271
|
-
await getData();
|
|
272
|
-
};
|
|
273
|
-
const getData = async () => {
|
|
274
|
-
try {
|
|
275
|
-
setHasError(false);
|
|
276
|
-
setLoading(true);
|
|
277
|
-
const { data } = await axios.get(url, { params: params });
|
|
278
|
-
console.debug("get DataFromUrl success", data);
|
|
279
|
-
onFetchSuccess(data);
|
|
280
|
-
setLoading(false);
|
|
281
|
-
setData(data);
|
|
282
|
-
}
|
|
283
|
-
catch (e) {
|
|
284
|
-
console.log("Error", e);
|
|
285
|
-
setLoading(false);
|
|
286
|
-
setHasError(true);
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
react$1.useEffect(() => {
|
|
290
|
-
if (disableFirstFetch) {
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
getData().catch((e) => {
|
|
294
|
-
console.error(e);
|
|
295
|
-
});
|
|
296
|
-
}, [url]);
|
|
297
|
-
return { data, loading, hasError, refreshData };
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, onFetchSuccess, children, }) => {
|
|
301
|
-
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
302
|
-
url: url,
|
|
303
|
-
defaultData: {
|
|
304
|
-
success: false,
|
|
305
|
-
results: [],
|
|
306
|
-
count: 0,
|
|
307
|
-
},
|
|
308
|
-
params: {
|
|
309
|
-
pagination: JSON.stringify({
|
|
310
|
-
offset: pagination.pageIndex * pagination.pageSize,
|
|
311
|
-
rows: pagination.pageSize,
|
|
312
|
-
}),
|
|
313
|
-
sorting: JSON.stringify(sorting.length > 0
|
|
314
|
-
? { field: sorting[0].id, sort: sorting[0].desc ? "desc" : "asc" }
|
|
315
|
-
: {}),
|
|
316
|
-
where: JSON.stringify(columnFilters.reduce((accumulator, filter) => {
|
|
317
|
-
const obj = {};
|
|
318
|
-
obj[filter.id] = filter.value;
|
|
319
|
-
return { ...accumulator, ...obj };
|
|
320
|
-
}, {})),
|
|
321
|
-
searching: globalFilter,
|
|
322
|
-
},
|
|
323
|
-
disableFirstFetch: true,
|
|
324
|
-
onFetchSuccess: onFetchSuccess,
|
|
325
|
-
});
|
|
266
|
+
const DataTableServer = ({ columns, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, data, loading, hasError, refreshData, children, }) => {
|
|
326
267
|
const table = reactTable.useReactTable({
|
|
327
268
|
_features: [DensityFeature],
|
|
328
269
|
data: data.results,
|
|
@@ -370,9 +311,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
370
311
|
},
|
|
371
312
|
// for tanstack-table ts bug end
|
|
372
313
|
});
|
|
373
|
-
react$1.useEffect(() => {
|
|
374
|
-
refreshData();
|
|
375
|
-
}, [pagination, sorting, columnFilters, globalFilter, url]);
|
|
376
314
|
react$1.useEffect(() => {
|
|
377
315
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
378
316
|
}, []);
|
|
@@ -381,7 +319,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
381
319
|
}, [table.getState().rowSelection]);
|
|
382
320
|
react$1.useEffect(() => {
|
|
383
321
|
table.resetPagination();
|
|
384
|
-
}, [sorting, columnFilters, globalFilter
|
|
322
|
+
}, [sorting, columnFilters, globalFilter]);
|
|
385
323
|
return (jsxRuntime.jsx(TableContext.Provider, { value: {
|
|
386
324
|
table: { ...table },
|
|
387
325
|
refreshData: refreshData,
|
|
@@ -847,6 +785,40 @@ const TextCell = ({ label, noOfLines = [1], padding = "0rem", children, tooltipP
|
|
|
847
785
|
return (jsxRuntime.jsx(react.Flex, { alignItems: "center", height: "100%", padding: padding, children: jsxRuntime.jsx(react.Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", wordBreak: "break-all", noOfLines: noOfLines, ...props, children: children }) }));
|
|
848
786
|
};
|
|
849
787
|
|
|
788
|
+
const useDataFromUrl = ({ url, params = {}, disableFirstFetch = false, onFetchSuccess = () => { }, defaultData, }) => {
|
|
789
|
+
const [loading, setLoading] = react$1.useState(true);
|
|
790
|
+
const [hasError, setHasError] = react$1.useState(false);
|
|
791
|
+
const [data, setData] = react$1.useState(defaultData);
|
|
792
|
+
const refreshData = async () => {
|
|
793
|
+
await getData();
|
|
794
|
+
};
|
|
795
|
+
const getData = async () => {
|
|
796
|
+
try {
|
|
797
|
+
setHasError(false);
|
|
798
|
+
setLoading(true);
|
|
799
|
+
const { data } = await axios.get(url, { params: params });
|
|
800
|
+
console.debug("get DataFromUrl success", data);
|
|
801
|
+
onFetchSuccess(data);
|
|
802
|
+
setLoading(false);
|
|
803
|
+
setData(data);
|
|
804
|
+
}
|
|
805
|
+
catch (e) {
|
|
806
|
+
console.log("Error", e);
|
|
807
|
+
setLoading(false);
|
|
808
|
+
setHasError(true);
|
|
809
|
+
}
|
|
810
|
+
};
|
|
811
|
+
react$1.useEffect(() => {
|
|
812
|
+
if (disableFirstFetch) {
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
getData().catch((e) => {
|
|
816
|
+
console.error(e);
|
|
817
|
+
});
|
|
818
|
+
}, [url]);
|
|
819
|
+
return { data, loading, hasError, refreshData };
|
|
820
|
+
};
|
|
821
|
+
|
|
850
822
|
const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: defaultPagination = {
|
|
851
823
|
pageIndex: 0, //initial page index
|
|
852
824
|
pageSize: 10, //default page size
|
|
@@ -905,6 +877,82 @@ const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: def
|
|
|
905
877
|
};
|
|
906
878
|
};
|
|
907
879
|
|
|
880
|
+
const useDataTableServer = ({ url, onFetchSuccess = () => { }, default: { sorting: defaultSorting = [], pagination: defaultPagination = {
|
|
881
|
+
pageIndex: 0, //initial page index
|
|
882
|
+
pageSize: 10, //default page size
|
|
883
|
+
}, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = "", density: defaultDensity = "sm", } = {
|
|
884
|
+
sorting: [],
|
|
885
|
+
pagination: {
|
|
886
|
+
pageIndex: 0, //initial page index
|
|
887
|
+
pageSize: 10, //age size
|
|
888
|
+
},
|
|
889
|
+
rowSelection: {},
|
|
890
|
+
columnFilters: [],
|
|
891
|
+
columnOrder: [],
|
|
892
|
+
columnVisibility: {},
|
|
893
|
+
globalFilter: "",
|
|
894
|
+
density: "sm",
|
|
895
|
+
}, }) => {
|
|
896
|
+
const [sorting, setSorting] = react$1.useState(defaultSorting);
|
|
897
|
+
const [columnFilters, setColumnFilters] = react$1.useState(defaultColumnFilters); // can set initial column filter state here
|
|
898
|
+
const [pagination, setPagination] = react$1.useState(defaultPagination);
|
|
899
|
+
const [rowSelection, setRowSelection] = react$1.useState(defaultRowSelection);
|
|
900
|
+
const [columnOrder, setColumnOrder] = react$1.useState(defaultColumnOrder);
|
|
901
|
+
const [globalFilter, setGlobalFilter] = react$1.useState(defaultGlobalFilter);
|
|
902
|
+
const [density, setDensity] = react$1.useState(defaultDensity);
|
|
903
|
+
const [columnVisibility, setColumnVisibility] = react$1.useState(defaultColumnVisibility);
|
|
904
|
+
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
905
|
+
url: url,
|
|
906
|
+
defaultData: {
|
|
907
|
+
success: false,
|
|
908
|
+
results: [],
|
|
909
|
+
count: 0,
|
|
910
|
+
},
|
|
911
|
+
params: {
|
|
912
|
+
pagination: JSON.stringify({
|
|
913
|
+
offset: pagination.pageIndex * pagination.pageSize,
|
|
914
|
+
rows: pagination.pageSize,
|
|
915
|
+
}),
|
|
916
|
+
sorting: JSON.stringify(sorting.length > 0
|
|
917
|
+
? { field: sorting[0].id, sort: sorting[0].desc ? "desc" : "asc" }
|
|
918
|
+
: {}),
|
|
919
|
+
where: JSON.stringify(columnFilters.reduce((accumulator, filter) => {
|
|
920
|
+
const obj = {};
|
|
921
|
+
obj[filter.id] = filter.value;
|
|
922
|
+
return { ...accumulator, ...obj };
|
|
923
|
+
}, {})),
|
|
924
|
+
searching: globalFilter,
|
|
925
|
+
},
|
|
926
|
+
disableFirstFetch: true,
|
|
927
|
+
onFetchSuccess: onFetchSuccess,
|
|
928
|
+
});
|
|
929
|
+
react$1.useEffect(() => {
|
|
930
|
+
refreshData();
|
|
931
|
+
}, [pagination, sorting, columnFilters, globalFilter, url]);
|
|
932
|
+
return {
|
|
933
|
+
sorting,
|
|
934
|
+
setSorting,
|
|
935
|
+
columnFilters,
|
|
936
|
+
setColumnFilters,
|
|
937
|
+
pagination,
|
|
938
|
+
setPagination,
|
|
939
|
+
rowSelection,
|
|
940
|
+
setRowSelection,
|
|
941
|
+
columnOrder,
|
|
942
|
+
setColumnOrder,
|
|
943
|
+
globalFilter,
|
|
944
|
+
setGlobalFilter,
|
|
945
|
+
density,
|
|
946
|
+
setDensity,
|
|
947
|
+
columnVisibility,
|
|
948
|
+
setColumnVisibility,
|
|
949
|
+
data,
|
|
950
|
+
loading,
|
|
951
|
+
hasError,
|
|
952
|
+
refreshData,
|
|
953
|
+
};
|
|
954
|
+
};
|
|
955
|
+
|
|
908
956
|
const FilterOptions = ({ column }) => {
|
|
909
957
|
const { table } = useDataTableContext();
|
|
910
958
|
const tableColumn = table.getColumn(column);
|
|
@@ -971,3 +1019,4 @@ exports.TextCell = TextCell;
|
|
|
971
1019
|
exports.useDataFromUrl = useDataFromUrl;
|
|
972
1020
|
exports.useDataTable = useDataTable;
|
|
973
1021
|
exports.useDataTableContext = useDataTableContext;
|
|
1022
|
+
exports.useDataTableServer = useDataTableServer;
|
package/dist/index.mjs
CHANGED
|
@@ -7,13 +7,13 @@ import { createContext, useContext, useEffect, useState } from 'react';
|
|
|
7
7
|
import { IoMdEye, IoMdCheckbox } from 'react-icons/io';
|
|
8
8
|
import { makeStateUpdater, functionalUpdate, useReactTable, getCoreRowModel, getFilteredRowModel, getSortedRowModel, getPaginationRowModel, flexRender } from '@tanstack/react-table';
|
|
9
9
|
import { rankItem } from '@tanstack/match-sorter-utils';
|
|
10
|
-
import axios from 'axios';
|
|
11
10
|
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
12
11
|
import { BsExclamationCircleFill } from 'react-icons/bs';
|
|
13
12
|
import { GrAscend, GrDescend } from 'react-icons/gr';
|
|
14
13
|
import { IoReload } from 'react-icons/io5';
|
|
15
14
|
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
|
|
16
15
|
import { FaGripLinesVertical } from 'react-icons/fa';
|
|
16
|
+
import axios from 'axios';
|
|
17
17
|
|
|
18
18
|
const DensityToggleButton = ({ text, icon = jsx(AiOutlineColumnWidth, {}), }) => {
|
|
19
19
|
const { table } = useDataTableContext();
|
|
@@ -261,66 +261,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
261
261
|
}, children: children }));
|
|
262
262
|
};
|
|
263
263
|
|
|
264
|
-
const
|
|
265
|
-
const [loading, setLoading] = useState(true);
|
|
266
|
-
const [hasError, setHasError] = useState(false);
|
|
267
|
-
const [data, setData] = useState(defaultData);
|
|
268
|
-
const refreshData = async () => {
|
|
269
|
-
await getData();
|
|
270
|
-
};
|
|
271
|
-
const getData = async () => {
|
|
272
|
-
try {
|
|
273
|
-
setHasError(false);
|
|
274
|
-
setLoading(true);
|
|
275
|
-
const { data } = await axios.get(url, { params: params });
|
|
276
|
-
console.debug("get DataFromUrl success", data);
|
|
277
|
-
onFetchSuccess(data);
|
|
278
|
-
setLoading(false);
|
|
279
|
-
setData(data);
|
|
280
|
-
}
|
|
281
|
-
catch (e) {
|
|
282
|
-
console.log("Error", e);
|
|
283
|
-
setLoading(false);
|
|
284
|
-
setHasError(true);
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
useEffect(() => {
|
|
288
|
-
if (disableFirstFetch) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
getData().catch((e) => {
|
|
292
|
-
console.error(e);
|
|
293
|
-
});
|
|
294
|
-
}, [url]);
|
|
295
|
-
return { data, loading, hasError, refreshData };
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, onFetchSuccess, children, }) => {
|
|
299
|
-
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
300
|
-
url: url,
|
|
301
|
-
defaultData: {
|
|
302
|
-
success: false,
|
|
303
|
-
results: [],
|
|
304
|
-
count: 0,
|
|
305
|
-
},
|
|
306
|
-
params: {
|
|
307
|
-
pagination: JSON.stringify({
|
|
308
|
-
offset: pagination.pageIndex * pagination.pageSize,
|
|
309
|
-
rows: pagination.pageSize,
|
|
310
|
-
}),
|
|
311
|
-
sorting: JSON.stringify(sorting.length > 0
|
|
312
|
-
? { field: sorting[0].id, sort: sorting[0].desc ? "desc" : "asc" }
|
|
313
|
-
: {}),
|
|
314
|
-
where: JSON.stringify(columnFilters.reduce((accumulator, filter) => {
|
|
315
|
-
const obj = {};
|
|
316
|
-
obj[filter.id] = filter.value;
|
|
317
|
-
return { ...accumulator, ...obj };
|
|
318
|
-
}, {})),
|
|
319
|
-
searching: globalFilter,
|
|
320
|
-
},
|
|
321
|
-
disableFirstFetch: true,
|
|
322
|
-
onFetchSuccess: onFetchSuccess,
|
|
323
|
-
});
|
|
264
|
+
const DataTableServer = ({ columns, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, data, loading, hasError, refreshData, children, }) => {
|
|
324
265
|
const table = useReactTable({
|
|
325
266
|
_features: [DensityFeature],
|
|
326
267
|
data: data.results,
|
|
@@ -368,9 +309,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
368
309
|
},
|
|
369
310
|
// for tanstack-table ts bug end
|
|
370
311
|
});
|
|
371
|
-
useEffect(() => {
|
|
372
|
-
refreshData();
|
|
373
|
-
}, [pagination, sorting, columnFilters, globalFilter, url]);
|
|
374
312
|
useEffect(() => {
|
|
375
313
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
376
314
|
}, []);
|
|
@@ -379,7 +317,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
379
317
|
}, [table.getState().rowSelection]);
|
|
380
318
|
useEffect(() => {
|
|
381
319
|
table.resetPagination();
|
|
382
|
-
}, [sorting, columnFilters, globalFilter
|
|
320
|
+
}, [sorting, columnFilters, globalFilter]);
|
|
383
321
|
return (jsx(TableContext.Provider, { value: {
|
|
384
322
|
table: { ...table },
|
|
385
323
|
refreshData: refreshData,
|
|
@@ -845,6 +783,40 @@ const TextCell = ({ label, noOfLines = [1], padding = "0rem", children, tooltipP
|
|
|
845
783
|
return (jsx(Flex, { alignItems: "center", height: "100%", padding: padding, children: jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", wordBreak: "break-all", noOfLines: noOfLines, ...props, children: children }) }));
|
|
846
784
|
};
|
|
847
785
|
|
|
786
|
+
const useDataFromUrl = ({ url, params = {}, disableFirstFetch = false, onFetchSuccess = () => { }, defaultData, }) => {
|
|
787
|
+
const [loading, setLoading] = useState(true);
|
|
788
|
+
const [hasError, setHasError] = useState(false);
|
|
789
|
+
const [data, setData] = useState(defaultData);
|
|
790
|
+
const refreshData = async () => {
|
|
791
|
+
await getData();
|
|
792
|
+
};
|
|
793
|
+
const getData = async () => {
|
|
794
|
+
try {
|
|
795
|
+
setHasError(false);
|
|
796
|
+
setLoading(true);
|
|
797
|
+
const { data } = await axios.get(url, { params: params });
|
|
798
|
+
console.debug("get DataFromUrl success", data);
|
|
799
|
+
onFetchSuccess(data);
|
|
800
|
+
setLoading(false);
|
|
801
|
+
setData(data);
|
|
802
|
+
}
|
|
803
|
+
catch (e) {
|
|
804
|
+
console.log("Error", e);
|
|
805
|
+
setLoading(false);
|
|
806
|
+
setHasError(true);
|
|
807
|
+
}
|
|
808
|
+
};
|
|
809
|
+
useEffect(() => {
|
|
810
|
+
if (disableFirstFetch) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
getData().catch((e) => {
|
|
814
|
+
console.error(e);
|
|
815
|
+
});
|
|
816
|
+
}, [url]);
|
|
817
|
+
return { data, loading, hasError, refreshData };
|
|
818
|
+
};
|
|
819
|
+
|
|
848
820
|
const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: defaultPagination = {
|
|
849
821
|
pageIndex: 0, //initial page index
|
|
850
822
|
pageSize: 10, //default page size
|
|
@@ -903,6 +875,82 @@ const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: def
|
|
|
903
875
|
};
|
|
904
876
|
};
|
|
905
877
|
|
|
878
|
+
const useDataTableServer = ({ url, onFetchSuccess = () => { }, default: { sorting: defaultSorting = [], pagination: defaultPagination = {
|
|
879
|
+
pageIndex: 0, //initial page index
|
|
880
|
+
pageSize: 10, //default page size
|
|
881
|
+
}, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = "", density: defaultDensity = "sm", } = {
|
|
882
|
+
sorting: [],
|
|
883
|
+
pagination: {
|
|
884
|
+
pageIndex: 0, //initial page index
|
|
885
|
+
pageSize: 10, //age size
|
|
886
|
+
},
|
|
887
|
+
rowSelection: {},
|
|
888
|
+
columnFilters: [],
|
|
889
|
+
columnOrder: [],
|
|
890
|
+
columnVisibility: {},
|
|
891
|
+
globalFilter: "",
|
|
892
|
+
density: "sm",
|
|
893
|
+
}, }) => {
|
|
894
|
+
const [sorting, setSorting] = useState(defaultSorting);
|
|
895
|
+
const [columnFilters, setColumnFilters] = useState(defaultColumnFilters); // can set initial column filter state here
|
|
896
|
+
const [pagination, setPagination] = useState(defaultPagination);
|
|
897
|
+
const [rowSelection, setRowSelection] = useState(defaultRowSelection);
|
|
898
|
+
const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
|
|
899
|
+
const [globalFilter, setGlobalFilter] = useState(defaultGlobalFilter);
|
|
900
|
+
const [density, setDensity] = useState(defaultDensity);
|
|
901
|
+
const [columnVisibility, setColumnVisibility] = useState(defaultColumnVisibility);
|
|
902
|
+
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
903
|
+
url: url,
|
|
904
|
+
defaultData: {
|
|
905
|
+
success: false,
|
|
906
|
+
results: [],
|
|
907
|
+
count: 0,
|
|
908
|
+
},
|
|
909
|
+
params: {
|
|
910
|
+
pagination: JSON.stringify({
|
|
911
|
+
offset: pagination.pageIndex * pagination.pageSize,
|
|
912
|
+
rows: pagination.pageSize,
|
|
913
|
+
}),
|
|
914
|
+
sorting: JSON.stringify(sorting.length > 0
|
|
915
|
+
? { field: sorting[0].id, sort: sorting[0].desc ? "desc" : "asc" }
|
|
916
|
+
: {}),
|
|
917
|
+
where: JSON.stringify(columnFilters.reduce((accumulator, filter) => {
|
|
918
|
+
const obj = {};
|
|
919
|
+
obj[filter.id] = filter.value;
|
|
920
|
+
return { ...accumulator, ...obj };
|
|
921
|
+
}, {})),
|
|
922
|
+
searching: globalFilter,
|
|
923
|
+
},
|
|
924
|
+
disableFirstFetch: true,
|
|
925
|
+
onFetchSuccess: onFetchSuccess,
|
|
926
|
+
});
|
|
927
|
+
useEffect(() => {
|
|
928
|
+
refreshData();
|
|
929
|
+
}, [pagination, sorting, columnFilters, globalFilter, url]);
|
|
930
|
+
return {
|
|
931
|
+
sorting,
|
|
932
|
+
setSorting,
|
|
933
|
+
columnFilters,
|
|
934
|
+
setColumnFilters,
|
|
935
|
+
pagination,
|
|
936
|
+
setPagination,
|
|
937
|
+
rowSelection,
|
|
938
|
+
setRowSelection,
|
|
939
|
+
columnOrder,
|
|
940
|
+
setColumnOrder,
|
|
941
|
+
globalFilter,
|
|
942
|
+
setGlobalFilter,
|
|
943
|
+
density,
|
|
944
|
+
setDensity,
|
|
945
|
+
columnVisibility,
|
|
946
|
+
setColumnVisibility,
|
|
947
|
+
data,
|
|
948
|
+
loading,
|
|
949
|
+
hasError,
|
|
950
|
+
refreshData,
|
|
951
|
+
};
|
|
952
|
+
};
|
|
953
|
+
|
|
906
954
|
const FilterOptions = ({ column }) => {
|
|
907
955
|
const { table } = useDataTableContext();
|
|
908
956
|
const tableColumn = table.getColumn(column);
|
|
@@ -933,4 +981,4 @@ const GlobalFilter = ({ icon = MdSearch }) => {
|
|
|
933
981
|
} })] }) }) }));
|
|
934
982
|
};
|
|
935
983
|
|
|
936
|
-
export { DataTable, DataTableServer, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, FilterOptions, GlobalFilter, PageSizeControl, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, useDataFromUrl, useDataTable, useDataTableContext };
|
|
984
|
+
export { DataTable, DataTableServer, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, FilterOptions, GlobalFilter, PageSizeControl, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, useDataFromUrl, useDataTable, useDataTableContext, useDataTableServer };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ColumnDef, ColumnFiltersState, ColumnOrderState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
|
|
3
3
|
import { DensityState } from "../Controls/DensityFeature";
|
|
4
|
-
|
|
4
|
+
import { UseDataFromUrlReturn } from "./useDataFromUrl";
|
|
5
|
+
import { DataResponse } from "./useDataTableServer";
|
|
6
|
+
export interface DataTableServerProps<TData> extends UseDataFromUrlReturn<DataResponse<TData>> {
|
|
5
7
|
children: JSX.Element | JSX.Element[];
|
|
6
|
-
url: string;
|
|
7
8
|
columns: ColumnDef<TData, any>[];
|
|
8
9
|
enableRowSelection?: boolean;
|
|
9
10
|
enableMultiRowSelection?: boolean;
|
|
@@ -25,13 +26,5 @@ export interface DataTableServerProps<TData> {
|
|
|
25
26
|
setColumnOrder: OnChangeFn<ColumnOrderState>;
|
|
26
27
|
setDensity: OnChangeFn<DensityState>;
|
|
27
28
|
setColumnVisibility: OnChangeFn<VisibilityState>;
|
|
28
|
-
onFetchSuccess?: (response: DataResponse<TData>) => void;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
31
|
-
results: T[];
|
|
32
|
-
}
|
|
33
|
-
export interface DataResponse<T> extends Result<T> {
|
|
34
|
-
success: boolean;
|
|
35
|
-
count: number;
|
|
36
|
-
}
|
|
37
|
-
export declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, onFetchSuccess, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare const DataTableServer: <TData>({ columns, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder, columnFilters, columnVisibility, density, globalFilter, pagination, sorting, rowSelection, setPagination, setSorting, setColumnFilters, setRowSelection, setGlobalFilter, setColumnOrder, setDensity, setColumnVisibility, data, loading, hasError, refreshData, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface UseDataFromUrlReturn<T> {
|
|
2
2
|
data: T;
|
|
3
3
|
loading: boolean;
|
|
4
4
|
hasError: boolean;
|
|
5
5
|
refreshData: () => void;
|
|
6
6
|
}
|
|
7
|
-
export interface
|
|
7
|
+
export interface UseDataFromUrlProps<T> {
|
|
8
8
|
url: string;
|
|
9
9
|
params?: object;
|
|
10
10
|
defaultData: T;
|
|
11
11
|
disableFirstFetch?: boolean;
|
|
12
12
|
onFetchSuccess?: (data: T) => void;
|
|
13
13
|
}
|
|
14
|
-
export declare const useDataFromUrl: <T>({ url, params, disableFirstFetch, onFetchSuccess, defaultData, }:
|
|
14
|
+
export declare const useDataFromUrl: <T>({ url, params, disableFirstFetch, onFetchSuccess, defaultData, }: UseDataFromUrlProps<T>) => UseDataFromUrlReturn<T>;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { ColumnFiltersState, ColumnOrderState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
|
|
2
2
|
import { DensityState } from "../Controls/DensityFeature";
|
|
3
|
+
export interface DataTableDefaultState {
|
|
4
|
+
sorting?: SortingState;
|
|
5
|
+
columnFilters?: ColumnFiltersState;
|
|
6
|
+
pagination?: PaginationState;
|
|
7
|
+
rowSelection?: RowSelectionState;
|
|
8
|
+
columnOrder?: ColumnOrderState;
|
|
9
|
+
globalFilter?: string;
|
|
10
|
+
columnVisibility?: VisibilityState;
|
|
11
|
+
density?: DensityState;
|
|
12
|
+
}
|
|
3
13
|
export interface UseDataTableProps {
|
|
4
|
-
default
|
|
5
|
-
sorting?: SortingState;
|
|
6
|
-
columnFilters?: ColumnFiltersState;
|
|
7
|
-
pagination?: PaginationState;
|
|
8
|
-
rowSelection?: RowSelectionState;
|
|
9
|
-
columnOrder?: ColumnOrderState;
|
|
10
|
-
globalFilter?: string;
|
|
11
|
-
columnVisibility?: VisibilityState;
|
|
12
|
-
density?: DensityState;
|
|
13
|
-
};
|
|
14
|
+
default?: DataTableDefaultState;
|
|
14
15
|
}
|
|
15
16
|
export interface UseDataTableReturn {
|
|
16
17
|
sorting: SortingState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UseDataFromUrlProps, UseDataFromUrlReturn } from "./useDataFromUrl";
|
|
2
|
+
import { UseDataTableProps, UseDataTableReturn } from "./useDataTable";
|
|
3
|
+
export interface UseDataTableServerProps<TData> extends Omit<UseDataFromUrlProps<DataResponse<TData>>, keyof {
|
|
4
|
+
defaultData: any;
|
|
5
|
+
}>, UseDataTableProps {
|
|
6
|
+
}
|
|
7
|
+
export interface UseDataTableServerReturn<TData> extends UseDataFromUrlReturn<DataResponse<TData>>, UseDataTableReturn {
|
|
8
|
+
}
|
|
9
|
+
export interface Result<T> {
|
|
10
|
+
results: T[];
|
|
11
|
+
}
|
|
12
|
+
export interface DataResponse<T> extends Result<T> {
|
|
13
|
+
success: boolean;
|
|
14
|
+
count: number;
|
|
15
|
+
}
|
|
16
|
+
export declare const useDataTableServer: <TData>({ url, onFetchSuccess, default: { sorting: defaultSorting, pagination: defaultPagination, rowSelection: defaultRowSelection, columnFilters: defaultColumnFilters, columnOrder: defaultColumnOrder, columnVisibility: defaultColumnVisibility, globalFilter: defaultGlobalFilter, density: defaultDensity, }, }: UseDataTableServerProps<TData>) => UseDataTableServerReturn<TData>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -84,6 +84,7 @@ export * from "./components/DataTable/TableViewer";
|
|
|
84
84
|
export * from "./components/DataTable/TextCell";
|
|
85
85
|
export * from "./components/DataTable/useDataFromUrl";
|
|
86
86
|
export * from "./components/DataTable/useDataTable";
|
|
87
|
+
export * from "./components/DataTable/useDataTableServer";
|
|
87
88
|
export * from "./components/DataTable/useDataTableContext";
|
|
88
89
|
export * from "./components/Filter/FilterOptions";
|
|
89
90
|
export * from "./components/Filter/GlobalFilter";
|