@proteinjs/ui 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.0.0](https://github.com/proteinjs/ui/compare/@proteinjs/ui@3.1.0...@proteinjs/ui@4.0.0) (2024-09-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * table enhancements (rowOnClick, custom skeleton, hideColumnHeaders, setRowCount) ([#7](https://github.com/proteinjs/ui/issues/7)) ([1024069](https://github.com/proteinjs/ui/commit/10240696bce41ba2c3105b882d2b7cbd5182f89d))
12
+
13
+
14
+ ### BREAKING CHANGES
15
+
16
+ * rowOnClickRedirectUrl name has been changed to rowOnClick
17
+
18
+
19
+
20
+
21
+
6
22
  # [3.1.0](https://github.com/proteinjs/ui/compare/@proteinjs/ui@3.0.1...@proteinjs/ui@3.1.0) (2024-08-27)
7
23
 
8
24
 
@@ -6,17 +6,23 @@ type ColumnValue<T, K extends keyof T> = T[K];
6
6
  export type CustomRenderer<T, K extends keyof T> = (value: ColumnValue<T, K>, row: T) => React.ReactNode;
7
7
  export type ColumnConfig<T> = {
8
8
  [K in keyof T]?: {
9
- renderer?: (value: T[K], row: T) => React.ReactNode;
9
+ renderer?: CustomRenderer<T, K>;
10
+ /** If no header is provided, a default header will be used. Pass in `null` if you'd like the header to be omitted. */
10
11
  header?: string | React.ReactNode;
11
12
  };
12
13
  };
14
+ type RowClickAction<T> = string | ((row: T) => void | Promise<void> | string | Promise<string>);
13
15
  export type TableProps<T> = {
14
16
  title?: string;
15
17
  description?: () => JSX.Element;
16
18
  columns: (keyof T)[];
17
19
  columnConfig?: ColumnConfig<T>;
20
+ hideColumnHeaders?: boolean;
18
21
  tableLoader: TableLoader<T>;
19
- rowOnClickRedirectUrl?: (row: T) => Promise<string>;
22
+ /** Setter which will be used to update the row count when rows are loaded */
23
+ setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>;
24
+ rowOnClick?: RowClickAction<T>;
25
+ /** Buttons displayed in the table head */
20
26
  buttons?: TableButton<T>[];
21
27
  /** If true, use pagination for table page navigation, if false uses infinite scroll. Defaults to false. */
22
28
  pagination?: boolean;
@@ -25,7 +31,8 @@ export type TableProps<T> = {
25
31
  toolbarContent?: React.ReactNode;
26
32
  tableContainerSx?: TableContainerOwnProps['sx'];
27
33
  emptyTableComponent?: React.ReactNode;
34
+ skeleton?: React.ReactNode;
28
35
  };
29
- export declare function Table<T>({ title, description, columns, columnConfig, tableLoader, rowOnClickRedirectUrl, pagination, defaultRowsPerPage, buttons, tableContainerSx, toolbarSx, toolbarContent, emptyTableComponent, }: TableProps<T>): React.JSX.Element;
36
+ export declare function Table<T>({ title, description, columns, columnConfig, hideColumnHeaders, tableLoader, rowOnClick, setRowCount, pagination, defaultRowsPerPage, buttons, tableContainerSx, toolbarSx, toolbarContent, emptyTableComponent, skeleton, }: TableProps<T>): React.JSX.Element;
30
37
  export {};
31
38
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAWL,sBAAsB,EACtB,YAAY,EAEb,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;AACzG,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;QACpD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;KACnC;CACF,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAChC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,2GAA2G;IAC3G,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEjC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEhD,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACvC,CAAC;AAEF,wBAAgB,KAAK,CAAC,CAAC,EAAE,EACvB,KAAK,EACL,WAAW,EACX,OAAO,EACP,YAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,UAAkB,EAClB,kBAAuB,EACvB,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,mBAAmB,GACpB,EAAE,UAAU,CAAC,CAAC,CAAC,qBA6Of"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAWL,sBAAsB,EACtB,YAAY,EAEb,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;AACzG,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,sHAAsH;QACtH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;KACnC;CACF,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhG,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAChC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC/B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,2GAA2G;IAC3G,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,SAAS,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEjC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEhD,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,KAAK,CAAC,CAAC,EAAE,EACvB,KAAK,EACL,WAAW,EACX,OAAO,EACP,YAAiB,EACjB,iBAAyB,EACzB,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAkB,EAClB,kBAAuB,EACvB,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,QAAQ,GACT,EAAE,UAAU,CAAC,CAAC,CAAC,qBAqRf"}
@@ -83,14 +83,14 @@ var TableToolbar_1 = require("./TableToolbar");
83
83
  var tableData_1 = require("./tableData");
84
84
  var InfiniteScroll_1 = require("./InfiniteScroll");
85
85
  function Table(_a) {
86
- var title = _a.title, description = _a.description, columns = _a.columns, _b = _a.columnConfig, columnConfig = _b === void 0 ? {} : _b, tableLoader = _a.tableLoader, rowOnClickRedirectUrl = _a.rowOnClickRedirectUrl, _c = _a.pagination, pagination = _c === void 0 ? false : _c, _d = _a.defaultRowsPerPage, defaultRowsPerPage = _d === void 0 ? 10 : _d, buttons = _a.buttons, tableContainerSx = _a.tableContainerSx, toolbarSx = _a.toolbarSx, toolbarContent = _a.toolbarContent, emptyTableComponent = _a.emptyTableComponent;
86
+ var title = _a.title, description = _a.description, columns = _a.columns, _b = _a.columnConfig, columnConfig = _b === void 0 ? {} : _b, _c = _a.hideColumnHeaders, hideColumnHeaders = _c === void 0 ? false : _c, tableLoader = _a.tableLoader, rowOnClick = _a.rowOnClick, setRowCount = _a.setRowCount, _d = _a.pagination, pagination = _d === void 0 ? false : _d, _e = _a.defaultRowsPerPage, defaultRowsPerPage = _e === void 0 ? 10 : _e, buttons = _a.buttons, tableContainerSx = _a.tableContainerSx, toolbarSx = _a.toolbarSx, toolbarContent = _a.toolbarContent, emptyTableComponent = _a.emptyTableComponent, skeleton = _a.skeleton;
87
87
  var infiniteScroll = !pagination;
88
- var _e = (0, react_1.useState)(defaultRowsPerPage), rowsPerPage = _e[0], setRowsPerPage = _e[1];
89
- var _f = (0, react_1.useState)(0), page = _f[0], setPage = _f[1];
90
- var _g = (0, react_1.useState)({}), selectedRows = _g[0], setSelectedRows = _g[1];
91
- var _h = (0, react_1.useState)(false), selectAll = _h[0], setSelectAll = _h[1];
88
+ var _f = (0, react_1.useState)(defaultRowsPerPage), rowsPerPage = _f[0], setRowsPerPage = _f[1];
89
+ var _g = (0, react_1.useState)(0), page = _g[0], setPage = _g[1];
90
+ var _h = (0, react_1.useState)({}), selectedRows = _h[0], setSelectedRows = _h[1];
91
+ var _j = (0, react_1.useState)(false), selectAll = _j[0], setSelectAll = _j[1];
92
92
  var navigate = (0, react_router_dom_1.useNavigate)();
93
- var _j = (0, tableData_1.useTableData)(tableLoader, rowsPerPage, page, infiniteScroll), rows = _j.rows, totalRows = _j.totalRows, isLoading = _j.isLoading, error = _j.error, fetchNextPage = _j.fetchNextPage, hasNextPage = _j.hasNextPage, isFetchingNextPage = _j.isFetchingNextPage, resetQuery = _j.resetQuery;
93
+ var _k = (0, tableData_1.useTableData)(tableLoader, rowsPerPage, page, infiniteScroll, setRowCount), rows = _k.rows, totalRows = _k.totalRows, isLoading = _k.isLoading, error = _k.error, fetchNextPage = _k.fetchNextPage, hasNextPage = _k.hasNextPage, isFetchingNextPage = _k.isFetchingNextPage, resetQuery = _k.resetQuery;
94
94
  (0, react_1.useEffect)(function () {
95
95
  resetQuery();
96
96
  setPage(0);
@@ -99,28 +99,57 @@ function Table(_a) {
99
99
  setSelectedRows({});
100
100
  setSelectAll(false);
101
101
  }, [rows]);
102
+ (0, react_1.useEffect)(function () {
103
+ if (!setRowCount || !totalRows) {
104
+ return;
105
+ }
106
+ setRowCount(totalRows);
107
+ }, [totalRows, setRowCount]);
102
108
  var handleFetchNextPage = (0, react_1.useCallback)(function () {
103
109
  if (!isFetchingNextPage) {
104
110
  fetchNextPage();
105
111
  }
106
112
  }, [fetchNextPage, isFetchingNextPage]);
107
- function handleRowOnClick(row) {
113
+ function handleRowOnClick(row, action, navigate) {
108
114
  return __awaiter(this, void 0, void 0, function () {
109
- var redirectUrl;
115
+ var url, result, resolvedResult, url, url;
110
116
  return __generator(this, function (_a) {
111
117
  switch (_a.label) {
112
118
  case 0:
113
- if (!rowOnClickRedirectUrl) {
119
+ if (!action) {
120
+ return [2 /*return*/];
121
+ }
122
+ if (typeof action === 'string') {
123
+ url = action;
124
+ if (!url.startsWith('/')) {
125
+ url = "/".concat(url);
126
+ }
127
+ navigate(url);
114
128
  return [2 /*return*/];
115
129
  }
116
- return [4 /*yield*/, rowOnClickRedirectUrl(row)];
130
+ result = action(row);
131
+ if (!(result instanceof Promise)) return [3 /*break*/, 2];
132
+ return [4 /*yield*/, result];
117
133
  case 1:
118
- redirectUrl = _a.sent();
119
- if (!redirectUrl.startsWith('/')) {
120
- redirectUrl = "/".concat(redirectUrl);
134
+ resolvedResult = _a.sent();
135
+ if (typeof resolvedResult === 'string') {
136
+ url = resolvedResult;
137
+ if (!url.startsWith('/')) {
138
+ url = "/".concat(url);
139
+ }
140
+ navigate(url);
121
141
  }
122
- navigate(redirectUrl);
123
- return [2 /*return*/];
142
+ return [3 /*break*/, 3];
143
+ case 2:
144
+ if (typeof result === 'string') {
145
+ url = result;
146
+ if (!url.startsWith('/')) {
147
+ url = "/".concat(url);
148
+ }
149
+ navigate(url);
150
+ }
151
+ _a.label = 3;
152
+ case 3: return [2 /*return*/];
124
153
  }
125
154
  });
126
155
  });
@@ -165,22 +194,29 @@ function Table(_a) {
165
194
  var _a;
166
195
  var customRenderer = (_a = columnConfig[column]) === null || _a === void 0 ? void 0 : _a.renderer;
167
196
  if (customRenderer) {
168
- return customRenderer(value, row);
197
+ return {
198
+ value: customRenderer(value, row),
199
+ isCustomRendered: true,
200
+ };
169
201
  }
170
202
  // Default formatting logic
203
+ var formattedValue;
171
204
  if (value == null) {
172
- return '';
205
+ formattedValue = '';
206
+ }
207
+ else if (typeof value === 'boolean') {
208
+ formattedValue = value ? 'True' : 'False';
173
209
  }
174
- if (typeof value === 'boolean') {
175
- return value ? 'True' : 'False';
210
+ else if (moment_1.default.isMoment(value)) {
211
+ formattedValue = value.format('ddd, MMM Do YY, h:mm:ss a');
176
212
  }
177
- if (moment_1.default.isMoment(value)) {
178
- return value.format('ddd, MMM Do YY, h:mm:ss a');
213
+ else if (typeof value === 'object') {
214
+ formattedValue = JSON.stringify(value);
179
215
  }
180
- if (typeof value === 'object') {
181
- return JSON.stringify(value);
216
+ else {
217
+ formattedValue = value.toString();
182
218
  }
183
- return value.toString();
219
+ return { value: formattedValue, isCustomRendered: false };
184
220
  }
185
221
  var renderTableContainer = function () {
186
222
  var totalColumns = columns.length + (buttons && buttons.length > 0 ? 1 : 0);
@@ -192,39 +228,38 @@ function Table(_a) {
192
228
  react_1.default.createElement(material_1.Checkbox, { checked: selectAll, onChange: function (event, selected) { return toggleSelectAll(selected); }, inputProps: {
193
229
  'aria-label': 'Select all',
194
230
  } }))),
195
- columns.map(function (column, index) {
196
- var _a;
197
- return (react_1.default.createElement(material_1.TableCell, { key: index },
198
- react_1.default.createElement(material_1.Typography, { variant: 'h6' }, ((_a = columnConfig[column]) === null || _a === void 0 ? void 0 : _a.header) || util_1.StringUtil.humanizeCamel(column))));
199
- }))),
231
+ !hideColumnHeaders &&
232
+ columns.map(function (column, index) {
233
+ var _a, _b;
234
+ return (react_1.default.createElement(material_1.TableCell, { key: index }, ((_a = columnConfig[column]) === null || _a === void 0 ? void 0 : _a.header) !== null && (react_1.default.createElement(material_1.Typography, { variant: 'h6' }, ((_b = columnConfig[column]) === null || _b === void 0 ? void 0 : _b.header) || util_1.StringUtil.humanizeCamel(column)))));
235
+ }))),
200
236
  isLoading && (react_1.default.createElement(material_1.TableBody, null,
201
237
  react_1.default.createElement(material_1.TableRow, null,
202
- react_1.default.createElement(material_1.TableCell, { colSpan: totalColumns, align: 'center', sx: { py: 3 } },
203
- react_1.default.createElement(material_1.CircularProgress, null))))),
238
+ react_1.default.createElement(material_1.TableCell, { colSpan: totalColumns, align: 'center', sx: { py: 3 } }, skeleton ? skeleton : react_1.default.createElement(material_1.CircularProgress, null))))),
204
239
  rows.length === 0 && !isLoading && (react_1.default.createElement(material_1.TableBody, null,
205
240
  react_1.default.createElement(material_1.TableRow, null,
206
241
  react_1.default.createElement(material_1.TableCell, { colSpan: totalColumns, align: 'center' }, emptyTableComponent ? emptyTableComponent : react_1.default.createElement(material_1.Typography, null, "No rows to display."))))),
207
242
  rows.length > 0 && (react_1.default.createElement(material_1.TableBody, null, rows.map(function (row, index) {
208
243
  index = rowsPerPage * page + index;
209
- return (react_1.default.createElement(material_1.TableRow, { hover: true, role: 'checkbox', tabIndex: -1, key: index, selected: typeof selectedRows[index] !== 'undefined', onClick: function (event) { return handleRowOnClick(row); } },
244
+ var isSelected = typeof selectedRows[index] !== 'undefined';
245
+ return (react_1.default.createElement(material_1.TableRow, { hover: true, tabIndex: -1, key: index, selected: isSelected, onClick: rowOnClick ? function () { return handleRowOnClick(row, rowOnClick, navigate); } : undefined },
210
246
  buttons && buttons.length > 0 && (react_1.default.createElement(material_1.TableCell, { padding: 'checkbox' },
211
- react_1.default.createElement(material_1.Checkbox, { checked: typeof selectedRows[index] !== 'undefined', onChange: function (event) {
247
+ react_1.default.createElement(material_1.Checkbox, { checked: isSelected, onChange: function (event) {
212
248
  event.stopPropagation();
213
249
  toggleSelectRow(index, row);
214
250
  }, onClick: function (event) { return event.stopPropagation(); }, inputProps: {
215
251
  'aria-label': 'Select row',
216
252
  } }))),
217
253
  columns.map(function (column, index) {
218
- var cellValue = formatCellValue(row[column], column, row);
219
- return (react_1.default.createElement(material_1.TableCell, { key: index },
220
- react_1.default.createElement(material_1.Typography, null, cellValue)));
254
+ var _a = formatCellValue(row[column], column, row), cellValue = _a.value, isCustomRendered = _a.isCustomRendered;
255
+ return (react_1.default.createElement(material_1.TableCell, { key: index }, isCustomRendered ? cellValue : react_1.default.createElement(material_1.Typography, null, cellValue)));
221
256
  })));
222
257
  }))))));
223
258
  };
224
259
  return (react_1.default.createElement(material_1.Box, { sx: { width: '100%', height: '100%', display: 'flex', flexDirection: 'column' } },
225
260
  (title || description || (buttons && buttons.length > 0)) && (react_1.default.createElement(TableToolbar_1.TableToolbar, { title: title, description: description, selectedRows: Object.values(selectedRows), content: toolbarContent, buttons: buttons, sx: toolbarSx })),
226
261
  react_1.default.createElement(material_1.Box, { id: 'infinite-scroll-container', sx: { width: '100%', flexGrow: 1, overflow: 'auto' } },
227
- infiniteScroll ? (react_1.default.createElement(InfiniteScroll_1.InfiniteScroll, { dataLength: rows.length, next: handleFetchNextPage, hasMore: !!hasNextPage, loader: react_1.default.createElement(material_1.Typography, { sx: { p: 2 } }, "Loading..."), scrollableTarget: 'infinite-scroll-container' }, renderTableContainer())) : (renderTableContainer()),
262
+ infiniteScroll ? (react_1.default.createElement(InfiniteScroll_1.InfiniteScroll, { dataLength: rows.length, next: handleFetchNextPage, hasMore: !!hasNextPage, loader: react_1.default.createElement(material_1.Typography, { variant: 'body2', sx: { p: 3 } }, "Loading..."), scrollableTarget: 'infinite-scroll-container' }, renderTableContainer())) : (renderTableContainer()),
228
263
  pagination && !isLoading && (react_1.default.createElement(material_1.TablePagination, { rowsPerPageOptions: [5, 10, 25, 50, 100, 200], component: 'div', count: totalRows || 0, rowsPerPage: rowsPerPage, page: page, onPageChange: function (event, newPage) { return setPage(newPage); }, onRowsPerPageChange: function (event) { return updateRowsPerPage(parseInt(event.target.value)); } })))));
229
264
  }
230
265
  exports.Table = Table;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -9,14 +9,23 @@ export type ReactQueryKeys = {
9
9
  /** Unique name to differentiate between queries on the data set */
10
10
  dataQueryKey: string;
11
11
  };
12
- export type TableLoader<T> = {
13
- reactQueryKeys?: ReactQueryKeys;
12
+ export interface TableLoader<T> {
13
+ /**
14
+ * Query keys are used in React Query to uniquely identify and manage cached data fetched from an API.
15
+ * If you do not want to set your own query keys, extend `BaseTableLoader` and it will implement defaults for you.
16
+ * */
17
+ reactQueryKeys: ReactQueryKeys;
14
18
  load: (startIndex: number, endIndex: number, skipRowCount?: boolean) => Promise<RowWindow<T>>;
15
- };
19
+ }
20
+ export declare abstract class BaseTableLoader<T> implements TableLoader<T> {
21
+ readonly reactQueryKeys: ReactQueryKeys;
22
+ constructor();
23
+ abstract load(startIndex: number, endIndex: number, skipRowCount?: boolean): Promise<RowWindow<T>>;
24
+ }
16
25
  export declare class StaticTableLoader<T> implements TableLoader<T> {
17
26
  private list;
18
- reactQueryKeys?: ReactQueryKeys | undefined;
19
- constructor(list: T[], reactQueryKeys?: ReactQueryKeys | undefined);
27
+ reactQueryKeys: TableLoader<T>['reactQueryKeys'];
28
+ constructor(list: T[], reactQueryKeys: TableLoader<T>['reactQueryKeys']);
20
29
  load(startIndex: number, endIndex: number): Promise<{
21
30
  rows: T[];
22
31
  totalCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TableLoader.d.ts","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,6BAA6B,IAAI,cAAc,CAK9D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/F,CAAC;AAEF,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAEvD,OAAO,CAAC,IAAI;IACL,cAAc,CAAC;gBADd,IAAI,EAAE,CAAC,EAAE,EACV,cAAc,CAAC,4BAAkC;IAOpD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;CAMhD"}
1
+ {"version":3,"file":"TableLoader.d.ts","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,6BAA6B,IAAI,cAAc,CAK9D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B;;;SAGK;IACL,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/F;AAED,8BAAsB,eAAe,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;;IAMxC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACnG;AAED,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAEvD,OAAO,CAAC,IAAI;IACL,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAD/C,IAAI,EAAE,CAAC,EAAE,EACV,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAOnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;CAMhD"}
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.StaticTableLoader = exports.generateDefaultReactQueryKeys = void 0;
39
+ exports.StaticTableLoader = exports.BaseTableLoader = exports.generateDefaultReactQueryKeys = void 0;
40
40
  var uuid_1 = require("uuid");
41
41
  function generateDefaultReactQueryKeys() {
42
42
  return {
@@ -45,6 +45,13 @@ function generateDefaultReactQueryKeys() {
45
45
  };
46
46
  }
47
47
  exports.generateDefaultReactQueryKeys = generateDefaultReactQueryKeys;
48
+ var BaseTableLoader = /** @class */ (function () {
49
+ function BaseTableLoader() {
50
+ this.reactQueryKeys = generateDefaultReactQueryKeys();
51
+ }
52
+ return BaseTableLoader;
53
+ }());
54
+ exports.BaseTableLoader = BaseTableLoader;
48
55
  var StaticTableLoader = /** @class */ (function () {
49
56
  function StaticTableLoader(list, reactQueryKeys) {
50
57
  this.list = list;
@@ -1 +1 @@
1
- {"version":3,"file":"TableLoader.js","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAAoC;AAOpC,SAAgB,6BAA6B;IAC3C,OAAO;QACL,OAAO,EAAE,IAAA,SAAM,GAAE;QACjB,YAAY,EAAE,IAAA,SAAM,GAAE;KACvB,CAAC;AACJ,CAAC;AALD,sEAKC;AAcD;IACE,2BACU,IAAS,EACV,cAAiD;QADhD,SAAI,GAAJ,IAAI,CAAK;QACV,mBAAc,GAAd,cAAc,CAAmC;QAExD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,6BAA6B,EAAE,CAAC;SACvD;IACH,CAAC;IAEK,gCAAI,GAAV,UAAW,UAAkB,EAAE,QAAgB;;;gBAC7C,sBAAO;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;wBAC3C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;qBAC7B,EAAC;;;KACH;IACH,wBAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,8CAAiB"}
1
+ {"version":3,"file":"TableLoader.js","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAAoC;AAOpC,SAAgB,6BAA6B;IAC3C,OAAO;QACL,OAAO,EAAE,IAAA,SAAM,GAAE;QACjB,YAAY,EAAE,IAAA,SAAM,GAAE;KACvB,CAAC;AACJ,CAAC;AALD,sEAKC;AAkBD;IAGE;QACE,IAAI,CAAC,cAAc,GAAG,6BAA6B,EAAE,CAAC;IACxD,CAAC;IAGH,sBAAC;AAAD,CAAC,AARD,IAQC;AARqB,0CAAe;AAUrC;IACE,2BACU,IAAS,EACV,cAAgD;QAD/C,SAAI,GAAJ,IAAI,CAAK;QACV,mBAAc,GAAd,cAAc,CAAkC;QAEvD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,6BAA6B,EAAE,CAAC;SACvD;IACH,CAAC;IAEK,gCAAI,GAAV,UAAW,UAAkB,EAAE,QAAgB;;;gBAC7C,sBAAO;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;wBAC3C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;qBAC7B,EAAC;;;KACH;IACH,wBAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,8CAAiB"}
@@ -1,6 +1,7 @@
1
+ /// <reference types="react" />
1
2
  import { UseQueryResult, UseMutationResult, UseInfiniteQueryResult } from 'react-query';
2
3
  import { TableLoader, RowWindow } from './TableLoader';
3
- export declare function useTableData<T>(tableLoader: TableLoader<T>, rowsPerPage: number, page: number, infiniteScroll: boolean): {
4
+ export declare function useTableData<T>(tableLoader: TableLoader<T>, rowsPerPage: number, page: number, infiniteScroll: boolean, setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>): {
4
5
  rows: T[];
5
6
  totalRows: number | undefined;
6
7
  isLoading: boolean;
@@ -11,6 +12,6 @@ export declare function useTableData<T>(tableLoader: TableLoader<T>, rowsPerPage
11
12
  resetQuery: () => void;
12
13
  };
13
14
  export declare const usePaginationTableQuery: <T>(tableLoader: TableLoader<T>, startIndex: number, endIndex: number, enabled?: boolean) => UseQueryResult<RowWindow<T>, Error>;
14
- export declare const useInfiniteScrollTableQuery: <T>(tableLoader: TableLoader<T>, rowsPerPage: number, enabled?: boolean) => UseInfiniteQueryResult<RowWindow<T>, Error>;
15
+ export declare const useInfiniteScrollTableQuery: <T>(tableLoader: TableLoader<T>, rowsPerPage: number, setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>, enabled?: boolean) => UseInfiniteQueryResult<RowWindow<T>, Error>;
15
16
  export declare const useTableMutation: <T, TVariables = unknown>(tableLoader: TableLoader<T>, mutationFn: (variables: TVariables) => Promise<void>) => UseMutationResult<void, Error, TVariables>;
16
17
  //# sourceMappingURL=tableData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableData.d.ts","sourceRoot":"","sources":["../../../src/table/tableData.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EACd,iBAAiB,EAEjB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAiC,MAAM,eAAe,CAAC;AAGtF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,OAAO;;;;;;;;;EAsExB;AAID,eAAO,MAAM,uBAAuB,+CAEtB,MAAM,YACR,MAAM,2DAmBjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,gDAEzB,MAAM,mEAgCpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,gGAEY,QAAQ,IAAI,CAAC,+CAoBrD,CAAC"}
1
+ {"version":3,"file":"tableData.d.ts","sourceRoot":"","sources":["../../../src/table/tableData.ts"],"names":[],"mappings":";AAAA,OAAO,EAIL,cAAc,EACd,iBAAiB,EAEjB,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGvD,wBAAgB,YAAY,CAAC,CAAC,EAC5B,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,OAAO,EACvB,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;;;;;;;;;EAkEvE;AAID,eAAO,MAAM,uBAAuB,+CAEtB,MAAM,YACR,MAAM,2DAmBjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,gDAEzB,MAAM,gBACL,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,mEAkCvE,CAAC;AAEF,eAAO,MAAM,gBAAgB,gGAEY,QAAQ,IAAI,CAAC,+CAoBrD,CAAC"}
@@ -38,16 +38,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.useTableMutation = exports.useInfiniteScrollTableQuery = exports.usePaginationTableQuery = exports.useTableData = void 0;
40
40
  var react_query_1 = require("react-query");
41
- var TableLoader_1 = require("./TableLoader");
42
41
  var react_1 = require("react");
43
- function useTableData(tableLoader, rowsPerPage, page, infiniteScroll) {
44
- if (!tableLoader.reactQueryKeys) {
45
- tableLoader.reactQueryKeys = (0, TableLoader_1.generateDefaultReactQueryKeys)();
46
- }
42
+ function useTableData(tableLoader, rowsPerPage, page, infiniteScroll, setRowCount) {
47
43
  var startIndex = (0, react_1.useMemo)(function () { return page * rowsPerPage; }, [page, rowsPerPage]);
48
44
  var endIndex = (0, react_1.useMemo)(function () { return startIndex + rowsPerPage; }, [startIndex, rowsPerPage]);
49
45
  var _a = (0, exports.usePaginationTableQuery)(tableLoader, startIndex, endIndex, !infiniteScroll), paginatedData = _a.data, isPaginatedLoading = _a.isLoading, paginatedError = _a.error, refetchPaginatedData = _a.refetch;
50
- var _b = (0, exports.useInfiniteScrollTableQuery)(tableLoader, rowsPerPage, infiniteScroll), infiniteData = _b.data, fetchNextPage = _b.fetchNextPage, hasNextPage = _b.hasNextPage, isInfiniteLoading = _b.isLoading, isFetchingNextPage = _b.isFetchingNextPage, infiniteError = _b.error, refetchInfiniteData = _b.refetch;
46
+ var _b = (0, exports.useInfiniteScrollTableQuery)(tableLoader, rowsPerPage, setRowCount, infiniteScroll), infiniteData = _b.data, fetchNextPage = _b.fetchNextPage, hasNextPage = _b.hasNextPage, isInfiniteLoading = _b.isLoading, isFetchingNextPage = _b.isFetchingNextPage, infiniteError = _b.error, refetchInfiniteData = _b.refetch;
51
47
  var rows = (0, react_1.useMemo)(function () {
52
48
  return infiniteScroll
53
49
  ? ((infiniteData === null || infiniteData === void 0 ? void 0 : infiniteData.pages) || []).reduce(function (acc, page) { return acc.concat(page.rows); }, [])
@@ -99,7 +95,7 @@ var usePaginationTableQuery = function (tableLoader, startIndex, endIndex, enabl
99
95
  });
100
96
  };
101
97
  exports.usePaginationTableQuery = usePaginationTableQuery;
102
- var useInfiniteScrollTableQuery = function (tableLoader, rowsPerPage, enabled) {
98
+ var useInfiniteScrollTableQuery = function (tableLoader, rowsPerPage, setRowCount, enabled) {
103
99
  if (enabled === void 0) { enabled = true; }
104
100
  var reactQueryKeys = tableLoader.reactQueryKeys;
105
101
  if (!reactQueryKeys) {
@@ -108,15 +104,16 @@ var useInfiniteScrollTableQuery = function (tableLoader, rowsPerPage, enabled) {
108
104
  var fetchTableData = function (_a) {
109
105
  var _b = _a.pageParam, pageParam = _b === void 0 ? { startIndex: 0, endIndex: rowsPerPage } : _b;
110
106
  return __awaiter(void 0, void 0, void 0, function () {
111
- var startIndex, endIndex;
107
+ var startIndex, endIndex, data;
112
108
  return __generator(this, function (_c) {
113
109
  switch (_c.label) {
114
110
  case 0:
115
111
  startIndex = pageParam.startIndex, endIndex = pageParam.endIndex;
116
- return [4 /*yield*/, tableLoader.load(startIndex, endIndex, true)];
117
- case 1:
118
- // skip row count query since it is not utilized in infinite scroll implementation
119
- return [2 /*return*/, _c.sent()];
112
+ return [4 /*yield*/, tableLoader.load(startIndex, endIndex, setRowCount ? false : true)];
113
+ case 1:
114
+ data = _c.sent();
115
+ setRowCount && setRowCount(data.totalCount);
116
+ return [2 /*return*/, data];
120
117
  }
121
118
  });
122
119
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tableData.js","sourceRoot":"","sources":["../../../src/table/tableData.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CASqB;AACrB,6CAAsF;AACtF,+BAA6C;AAE7C,SAAgB,YAAY,CAC1B,WAA2B,EAC3B,WAAmB,EACnB,IAAY,EACZ,cAAuB;IAEvB,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;QAC/B,WAAW,CAAC,cAAc,GAAG,IAAA,2CAA6B,GAAE,CAAC;KAC9D;IAED,IAAM,UAAU,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,IAAI,GAAG,WAAW,EAAlB,CAAkB,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC1E,IAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,UAAU,GAAG,WAAW,EAAxB,CAAwB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9E,IAAA,KAKF,IAAA,+BAAuB,EAAI,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAJ1E,aAAa,UAAA,EACR,kBAAkB,eAAA,EACtB,cAAc,WAAA,EACZ,oBAAoB,aACmD,CAAC;IAE7E,IAAA,KAQF,IAAA,mCAA2B,EAAI,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,EAPpE,YAAY,UAAA,EAClB,aAAa,mBAAA,EACb,WAAW,iBAAA,EACA,iBAAiB,eAAA,EAC5B,kBAAkB,wBAAA,EACX,aAAa,WAAA,EACX,mBAAmB,aAC8C,CAAC;IAE7E,IAAM,IAAI,GAAG,IAAA,eAAO,EAClB;QACE,OAAA,cAAc;YACZ,CAAC,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAE,IAAkB,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAArB,CAAqB,EAAE,EAAS,CAAC;YACxG,CAAC,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,KAAI,EAAE;IAF7B,CAE6B,EAC/B,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,CAAC,CAC9C,CAAC;IAEF,IAAM,SAAS,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,EAAzB,CAAyB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5E,IAAM,SAAS,GAAG,IAAA,eAAO,EACvB,cAAM,OAAA,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAzD,CAAyD,EAC/D,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CACxD,CAAC;IAEF,IAAM,KAAK,GAAG,IAAA,eAAO,EACnB,cAAM,OAAA,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,EAAjD,CAAiD,EACvD,CAAC,cAAc,EAAE,aAAa,EAAE,cAAc,CAAC,CAChD,CAAC;IAEF,IAAM,qBAAqB,GAAG,IAAA,mBAAW,EAAC;QACxC,IAAI,cAAc,IAAI,CAAC,kBAAkB,IAAI,WAAW,EAAE;YACxD,aAAa,EAAE,CAAC;SACjB;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAErE,IAAM,UAAU,GAAG,IAAA,mBAAW,EAAC;QAC7B,IAAI,cAAc,EAAE;YAClB,mBAAmB,EAAE,CAAC;SACvB;aAAM;YACL,oBAAoB,EAAE,CAAC;SACxB;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI,MAAA;QACJ,SAAS,WAAA;QACT,SAAS,WAAA;QACT,KAAK,OAAA;QACL,aAAa,EAAE,qBAAqB;QACpC,WAAW,aAAA;QACX,kBAAkB,oBAAA;QAClB,UAAU,YAAA;KACX,CAAC;AACJ,CAAC;AA1ED,oCA0EC;AAIM,IAAM,uBAAuB,GAAG,UACrC,WAA2B,EAC3B,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAAf,wBAAA,EAAA,eAAe;IAEP,IAAA,cAAc,GAAK,WAAW,eAAhB,CAAiB;IAEvC,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;IAEO,IAAA,OAAO,GAAmB,cAAc,QAAjC,EAAE,YAAY,GAAK,cAAc,aAAnB,CAAoB;IAEjD,OAAO,IAAA,sBAAQ,EACb,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAC7C;;oBAAY,qBAAM,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAA;oBAA5C,sBAAA,SAA4C,EAAA;;aAAA,EACxD;QACE,OAAO,SAAA;QACP,oBAAoB,EAAE,KAAK;KAC5B,CACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC;AAEK,IAAM,2BAA2B,GAAG,UACzC,WAA2B,EAC3B,WAAmB,EACnB,OAAc;IAAd,wBAAA,EAAA,cAAc;IAEN,IAAA,cAAc,GAAK,WAAW,eAAhB,CAAiB;IAEvC,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;IAED,IAAM,cAAc,GAAG,UAAO,EAEqD;YADjF,iBAAoD,EAApD,SAAS,mBAAG,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAA;;;;;;wBAE5C,UAAU,GAAe,SAAS,WAAxB,EAAE,QAAQ,GAAK,SAAS,SAAd,CAAe;wBAEpC,qBAAM,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAA;;oBADzD,kFAAkF;oBAClF,sBAAO,SAAkD,EAAC;;;;KAC3D,CAAC;IAEM,IAAA,OAAO,GAAmB,cAAc,QAAjC,EAAE,YAAY,GAAK,cAAc,aAAnB,CAAoB;IACjD,OAAO,IAAA,8BAAgB,EAAC,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE;QAC/D,OAAO,SAAA;QACP,gBAAgB,EAAE,UAAC,QAAsB,EAAE,KAAqB;YAC9D,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE;gBACtC,OAAO,SAAS,CAAC,CAAC,wBAAwB;aAC3C;YACD,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAtB,CAAsB,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO;gBACL,UAAU,EAAE,cAAc;gBAC1B,QAAQ,EAAE,cAAc,GAAG,WAAW;aACvC,CAAC;QACJ,CAAC;QACD,oBAAoB,EAAE,KAAK;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,2BAA2B,+BAkCtC;AAEK,IAAM,gBAAgB,GAAG,UAC9B,WAA2B,EAC3B,UAAoD;IAEpD,IAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC7B,IAAA,cAAc,GAAK,WAAW,eAAhB,CAAiB;IAEvC,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;IAEO,IAAA,OAAO,GAAK,cAAc,QAAnB,CAAoB;IAEnC,OAAO,IAAA,yBAAW,EAA0B,UAAU,EAAE;QACtD,SAAS,EAAE;YACT,mDAAmD;YACnD,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,UAAC,KAAY;YACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B"}
1
+ {"version":3,"file":"tableData.js","sourceRoot":"","sources":["../../../src/table/tableData.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/ui",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "UI libs",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -57,5 +57,5 @@
57
57
  },
58
58
  "main": "./dist/generated/index.js",
59
59
  "types": "./dist/generated/index.d.ts",
60
- "gitHead": "1b0ce707ed6f90b62314a9f497acf8620a8cca33"
60
+ "gitHead": "11f5fa799ca7a948fc37cd8dddd73bd97b53e4ff"
61
61
  }
@@ -27,18 +27,25 @@ type ColumnValue<T, K extends keyof T> = T[K];
27
27
  export type CustomRenderer<T, K extends keyof T> = (value: ColumnValue<T, K>, row: T) => React.ReactNode;
28
28
  export type ColumnConfig<T> = {
29
29
  [K in keyof T]?: {
30
- renderer?: (value: T[K], row: T) => React.ReactNode;
30
+ renderer?: CustomRenderer<T, K>;
31
+ /** If no header is provided, a default header will be used. Pass in `null` if you'd like the header to be omitted. */
31
32
  header?: string | React.ReactNode;
32
33
  };
33
34
  };
34
35
 
36
+ type RowClickAction<T> = string | ((row: T) => void | Promise<void> | string | Promise<string>);
37
+
35
38
  export type TableProps<T> = {
36
39
  title?: string;
37
40
  description?: () => JSX.Element;
38
41
  columns: (keyof T)[];
39
42
  columnConfig?: ColumnConfig<T>;
43
+ hideColumnHeaders?: boolean;
40
44
  tableLoader: TableLoader<T>;
41
- rowOnClickRedirectUrl?: (row: T) => Promise<string>;
45
+ /** Setter which will be used to update the row count when rows are loaded */
46
+ setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>;
47
+ rowOnClick?: RowClickAction<T>;
48
+ /** Buttons displayed in the table head */
42
49
  buttons?: TableButton<T>[];
43
50
  /** If true, use pagination for table page navigation, if false uses infinite scroll. Defaults to false. */
44
51
  pagination?: boolean;
@@ -52,6 +59,8 @@ export type TableProps<T> = {
52
59
  tableContainerSx?: TableContainerOwnProps['sx'];
53
60
  /* Component displayed when there are no rows to display. */
54
61
  emptyTableComponent?: React.ReactNode;
62
+ /* Loading skeleton that's displayed before the table rows are first fetched. */
63
+ skeleton?: React.ReactNode;
55
64
  };
56
65
 
57
66
  export function Table<T>({
@@ -59,8 +68,10 @@ export function Table<T>({
59
68
  description,
60
69
  columns,
61
70
  columnConfig = {},
71
+ hideColumnHeaders = false,
62
72
  tableLoader,
63
- rowOnClickRedirectUrl,
73
+ rowOnClick,
74
+ setRowCount,
64
75
  pagination = false,
65
76
  defaultRowsPerPage = 10,
66
77
  buttons,
@@ -68,6 +79,7 @@ export function Table<T>({
68
79
  toolbarSx,
69
80
  toolbarContent,
70
81
  emptyTableComponent,
82
+ skeleton,
71
83
  }: TableProps<T>) {
72
84
  const infiniteScroll = !pagination;
73
85
  const [rowsPerPage, setRowsPerPage] = useState(defaultRowsPerPage);
@@ -77,7 +89,7 @@ export function Table<T>({
77
89
  const navigate = useNavigate();
78
90
 
79
91
  const { rows, totalRows, isLoading, error, fetchNextPage, hasNextPage, isFetchingNextPage, resetQuery } =
80
- useTableData<T>(tableLoader, rowsPerPage, page, infiniteScroll);
92
+ useTableData<T>(tableLoader, rowsPerPage, page, infiniteScroll, setRowCount);
81
93
 
82
94
  useEffect(() => {
83
95
  resetQuery();
@@ -89,23 +101,56 @@ export function Table<T>({
89
101
  setSelectAll(false);
90
102
  }, [rows]);
91
103
 
104
+ useEffect(() => {
105
+ if (!setRowCount || !totalRows) {
106
+ return;
107
+ }
108
+
109
+ setRowCount(totalRows);
110
+ }, [totalRows, setRowCount]);
111
+
92
112
  const handleFetchNextPage = useCallback(() => {
93
113
  if (!isFetchingNextPage) {
94
114
  fetchNextPage();
95
115
  }
96
116
  }, [fetchNextPage, isFetchingNextPage]);
97
117
 
98
- async function handleRowOnClick(row: T) {
99
- if (!rowOnClickRedirectUrl) {
118
+ async function handleRowOnClick<T>(row: T, action: RowClickAction<T>, navigate: (url: string) => void) {
119
+ if (!action) {
100
120
  return;
101
121
  }
102
122
 
103
- let redirectUrl = await rowOnClickRedirectUrl(row);
104
- if (!redirectUrl.startsWith('/')) {
105
- redirectUrl = `/${redirectUrl}`;
123
+ if (typeof action === 'string') {
124
+ // If action is a string, treat it as a URL
125
+ let url = action;
126
+ if (!url.startsWith('/')) {
127
+ url = `/${url}`;
128
+ }
129
+ navigate(url);
130
+ return;
106
131
  }
107
132
 
108
- navigate(redirectUrl);
133
+ // If action is a function, execute it
134
+ const result = action(row);
135
+
136
+ if (result instanceof Promise) {
137
+ // If the result is a Promise, wait for it to resolve
138
+ const resolvedResult = await result;
139
+ if (typeof resolvedResult === 'string') {
140
+ let url = resolvedResult;
141
+ if (!url.startsWith('/')) {
142
+ url = `/${url}`;
143
+ }
144
+ navigate(url);
145
+ }
146
+ } else if (typeof result === 'string') {
147
+ let url = result;
148
+ if (!url.startsWith('/')) {
149
+ url = `/${url}`;
150
+ }
151
+ navigate(url);
152
+ }
153
+ // If result is void, do nothing (the action has been performed in the function)
109
154
  }
110
155
 
111
156
  function updateRowsPerPage(newValue: number) {
@@ -147,30 +192,30 @@ export function Table<T>({
147
192
  setSelectAll(selected);
148
193
  }
149
194
 
150
- function formatCellValue(value: any, column: keyof T, row: T): React.ReactNode {
195
+ function formatCellValue(value: any, column: keyof T, row: T): { value: React.ReactNode; isCustomRendered: boolean } {
151
196
  const customRenderer = columnConfig[column]?.renderer;
152
197
  if (customRenderer) {
153
- return customRenderer(value, row);
198
+ return {
199
+ value: customRenderer(value, row),
200
+ isCustomRendered: true,
201
+ };
154
202
  }
155
203
 
156
204
  // Default formatting logic
205
+ let formattedValue: React.ReactNode;
157
206
  if (value == null) {
158
- return '';
159
- }
160
-
161
- if (typeof value === 'boolean') {
162
- return value ? 'True' : 'False';
163
- }
164
-
165
- if (moment.isMoment(value)) {
166
- return value.format('ddd, MMM Do YY, h:mm:ss a');
167
- }
168
-
169
- if (typeof value === 'object') {
170
- return JSON.stringify(value);
207
+ formattedValue = '';
208
+ } else if (typeof value === 'boolean') {
209
+ formattedValue = value ? 'True' : 'False';
210
+ } else if (moment.isMoment(value)) {
211
+ formattedValue = value.format('ddd, MMM Do YY, h:mm:ss a');
212
+ } else if (typeof value === 'object') {
213
+ formattedValue = JSON.stringify(value);
214
+ } else {
215
+ formattedValue = value.toString();
171
216
  }
172
217
 
173
- return value.toString();
218
+ return { value: formattedValue, isCustomRendered: false };
174
219
  }
175
220
 
176
221
  const renderTableContainer = () => {
@@ -192,20 +237,23 @@ export function Table<T>({
192
237
  />
193
238
  </TableCell>
194
239
  )}
195
- {columns.map((column, index) => (
196
- <TableCell key={index}>
197
- <Typography variant='h6'>
198
- {columnConfig[column]?.header || StringUtil.humanizeCamel(column as string)}
199
- </Typography>
200
- </TableCell>
201
- ))}
240
+ {!hideColumnHeaders &&
241
+ columns.map((column, index) => (
242
+ <TableCell key={index}>
243
+ {columnConfig[column]?.header !== null && (
244
+ <Typography variant='h6'>
245
+ {columnConfig[column]?.header || StringUtil.humanizeCamel(column as string)}
246
+ </Typography>
247
+ )}
248
+ </TableCell>
249
+ ))}
202
250
  </TableRow>
203
251
  </TableHead>
204
252
  {isLoading && (
205
253
  <TableBody>
206
254
  <TableRow>
207
255
  <TableCell colSpan={totalColumns} align='center' sx={{ py: 3 }}>
208
- <CircularProgress />
256
+ {skeleton ? skeleton : <CircularProgress />}
209
257
  </TableCell>
210
258
  </TableRow>
211
259
  </TableBody>
@@ -223,19 +271,19 @@ export function Table<T>({
223
271
  <TableBody>
224
272
  {rows.map((row, index) => {
225
273
  index = rowsPerPage * page + index;
274
+ const isSelected = typeof selectedRows[index] !== 'undefined';
226
275
  return (
227
276
  <TableRow
228
277
  hover
229
- role='checkbox'
230
278
  tabIndex={-1}
231
279
  key={index}
232
- selected={typeof selectedRows[index] !== 'undefined'}
233
- onClick={(event: any) => handleRowOnClick(row)}
280
+ selected={isSelected}
281
+ onClick={rowOnClick ? () => handleRowOnClick(row, rowOnClick, navigate) : undefined}
234
282
  >
235
283
  {buttons && buttons.length > 0 && (
236
284
  <TableCell padding='checkbox'>
237
285
  <Checkbox
238
- checked={typeof selectedRows[index] !== 'undefined'}
286
+ checked={isSelected}
239
287
  onChange={(event) => {
240
288
  event.stopPropagation();
241
289
  toggleSelectRow(index, row);
@@ -248,10 +296,10 @@ export function Table<T>({
248
296
  </TableCell>
249
297
  )}
250
298
  {columns.map((column, index) => {
251
- const cellValue = formatCellValue(row[column], column, row);
299
+ const { value: cellValue, isCustomRendered } = formatCellValue(row[column], column, row);
252
300
  return (
253
301
  <TableCell key={index}>
254
- <Typography>{cellValue}</Typography>
302
+ {isCustomRendered ? cellValue : <Typography>{cellValue}</Typography>}
255
303
  </TableCell>
256
304
  );
257
305
  })}
@@ -283,7 +331,11 @@ export function Table<T>({
283
331
  dataLength={rows.length}
284
332
  next={handleFetchNextPage}
285
333
  hasMore={!!hasNextPage}
286
- loader={<Typography sx={{ p: 2 }}>Loading...</Typography>}
334
+ loader={
335
+ <Typography variant='body2' sx={{ p: 3 }}>
336
+ Loading...
337
+ </Typography>
338
+ }
287
339
  scrollableTarget='infinite-scroll-container'
288
340
  >
289
341
  {renderTableContainer()}
@@ -19,15 +19,29 @@ export type ReactQueryKeys = {
19
19
  dataQueryKey: string;
20
20
  };
21
21
 
22
- export type TableLoader<T> = {
23
- reactQueryKeys?: ReactQueryKeys;
22
+ export interface TableLoader<T> {
23
+ /**
24
+ * Query keys are used in React Query to uniquely identify and manage cached data fetched from an API.
25
+ * If you do not want to set your own query keys, extend `BaseTableLoader` and it will implement defaults for you.
26
+ * */
27
+ reactQueryKeys: ReactQueryKeys;
24
28
  load: (startIndex: number, endIndex: number, skipRowCount?: boolean) => Promise<RowWindow<T>>;
25
- };
29
+ }
30
+
31
+ export abstract class BaseTableLoader<T> implements TableLoader<T> {
32
+ readonly reactQueryKeys: ReactQueryKeys;
33
+
34
+ constructor() {
35
+ this.reactQueryKeys = generateDefaultReactQueryKeys();
36
+ }
37
+
38
+ abstract load(startIndex: number, endIndex: number, skipRowCount?: boolean): Promise<RowWindow<T>>;
39
+ }
26
40
 
27
41
  export class StaticTableLoader<T> implements TableLoader<T> {
28
42
  constructor(
29
43
  private list: T[],
30
- public reactQueryKeys?: TableLoader<T>['reactQueryKeys']
44
+ public reactQueryKeys: TableLoader<T>['reactQueryKeys']
31
45
  ) {
32
46
  if (!this.reactQueryKeys) {
33
47
  this.reactQueryKeys = generateDefaultReactQueryKeys();
@@ -8,19 +8,16 @@ import {
8
8
  UseInfiniteQueryResult,
9
9
  QueryFunctionContext,
10
10
  } from 'react-query';
11
- import { TableLoader, RowWindow, generateDefaultReactQueryKeys } from './TableLoader';
11
+ import { TableLoader, RowWindow } from './TableLoader';
12
12
  import { useCallback, useMemo } from 'react';
13
13
 
14
14
  export function useTableData<T>(
15
15
  tableLoader: TableLoader<T>,
16
16
  rowsPerPage: number,
17
17
  page: number,
18
- infiniteScroll: boolean
18
+ infiniteScroll: boolean,
19
+ setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>
19
20
  ) {
20
- if (!tableLoader.reactQueryKeys) {
21
- tableLoader.reactQueryKeys = generateDefaultReactQueryKeys();
22
- }
23
-
24
21
  const startIndex = useMemo(() => page * rowsPerPage, [page, rowsPerPage]);
25
22
  const endIndex = useMemo(() => startIndex + rowsPerPage, [startIndex, rowsPerPage]);
26
23
 
@@ -39,7 +36,7 @@ export function useTableData<T>(
39
36
  isFetchingNextPage,
40
37
  error: infiniteError,
41
38
  refetch: refetchInfiniteData,
42
- } = useInfiniteScrollTableQuery<T>(tableLoader, rowsPerPage, infiniteScroll);
39
+ } = useInfiniteScrollTableQuery<T>(tableLoader, rowsPerPage, setRowCount, infiniteScroll);
43
40
 
44
41
  const rows = useMemo(
45
42
  () =>
@@ -116,6 +113,7 @@ export const usePaginationTableQuery = <T>(
116
113
  export const useInfiniteScrollTableQuery = <T>(
117
114
  tableLoader: TableLoader<T>,
118
115
  rowsPerPage: number,
116
+ setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>,
119
117
  enabled = true
120
118
  ): UseInfiniteQueryResult<RowWindow<T>, Error> => {
121
119
  const { reactQueryKeys } = tableLoader;
@@ -128,8 +126,10 @@ export const useInfiniteScrollTableQuery = <T>(
128
126
  pageParam = { startIndex: 0, endIndex: rowsPerPage },
129
127
  }: QueryFunctionContext<[string, string], { startIndex: number; endIndex: number }>) => {
130
128
  const { startIndex, endIndex } = pageParam;
131
- // skip row count query since it is not utilized in infinite scroll implementation
132
- return await tableLoader.load(startIndex, endIndex, true);
129
+ // skip row count query, unless setRowCount was provided, since it is not utilized in infinite scroll implementation
130
+ const data = await tableLoader.load(startIndex, endIndex, setRowCount ? false : true);
131
+ setRowCount && setRowCount(data.totalCount);
132
+ return data;
133
133
  };
134
134
 
135
135
  const { dataKey, dataQueryKey } = reactQueryKeys;