@proteinjs/ui 2.0.8 → 2.1.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.d.ts +3 -0
  4. package/dist/generated/index.d.ts.map +1 -1
  5. package/dist/generated/index.js +4 -1
  6. package/dist/generated/index.js.map +1 -1
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/src/components/SearchInput.d.ts +14 -0
  12. package/dist/src/components/SearchInput.d.ts.map +1 -0
  13. package/dist/src/components/SearchInput.js +26 -0
  14. package/dist/src/components/SearchInput.js.map +1 -0
  15. package/dist/src/table/InfiniteScroll.d.ts +14 -0
  16. package/dist/src/table/InfiniteScroll.d.ts.map +1 -0
  17. package/dist/src/table/InfiniteScroll.js +66 -0
  18. package/dist/src/table/InfiniteScroll.js.map +1 -0
  19. package/dist/src/table/Table.d.ts +18 -2
  20. package/dist/src/table/Table.d.ts.map +1 -1
  21. package/dist/src/table/Table.js +96 -42
  22. package/dist/src/table/Table.js.map +1 -1
  23. package/dist/src/table/TableLoader.d.ts +11 -2
  24. package/dist/src/table/TableLoader.d.ts.map +1 -1
  25. package/dist/src/table/TableLoader.js +14 -2
  26. package/dist/src/table/TableLoader.js.map +1 -1
  27. package/dist/src/table/TableToolbar.d.ts +3 -0
  28. package/dist/src/table/TableToolbar.d.ts.map +1 -1
  29. package/dist/src/table/TableToolbar.js +23 -10
  30. package/dist/src/table/TableToolbar.js.map +1 -1
  31. package/dist/src/table/tableData.d.ts +16 -0
  32. package/dist/src/table/tableData.d.ts.map +1 -0
  33. package/dist/src/table/tableData.js +159 -0
  34. package/dist/src/table/tableData.js.map +1 -0
  35. package/generated/index.ts +4 -1
  36. package/index.ts +3 -0
  37. package/package.json +9 -4
  38. package/src/components/SearchInput.tsx +55 -0
  39. package/src/table/InfiniteScroll.tsx +74 -0
  40. package/src/table/Table.tsx +169 -75
  41. package/src/table/TableLoader.ts +26 -2
  42. package/src/table/TableToolbar.tsx +21 -16
  43. package/src/table/tableData.ts +174 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
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
+ ## [2.1.1](https://github.com/proteinjs/ui/compare/@proteinjs/ui@2.1.0...@proteinjs/ui@2.1.1) (2024-07-07)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * inf scroll should fetch more when rows don't fill container ([fb1526e](https://github.com/proteinjs/ui/commit/fb1526e36b83f0227285114d35d9e7109c896d9b))
12
+
13
+
14
+
15
+
16
+
17
+ # [2.1.0](https://github.com/proteinjs/ui/compare/@proteinjs/ui@2.0.8...@proteinjs/ui@2.1.0) (2024-07-06)
18
+
19
+
20
+ ### Features
21
+
22
+ * add react query and infinite scroll to table ([#6](https://github.com/proteinjs/ui/issues/6)) ([b9cb502](https://github.com/proteinjs/ui/commit/b9cb5028c2544ca9e50dbee7af69da15a80b9c66))
23
+
24
+
25
+
26
+
27
+
6
28
  ## [2.0.7](https://github.com/proteinjs/ui/compare/@proteinjs/ui@2.0.6...@proteinjs/ui@2.0.7) (2024-05-21)
7
29
 
8
30
  **Note:** Version bump only for package @proteinjs/ui
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Brent Bahry
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -10,8 +10,11 @@ import 'moment';
10
10
  import 'query-string';
11
11
  import 'react';
12
12
  import 'react-dom';
13
+ import 'react-infinite-scroll-component';
14
+ import 'react-query';
13
15
  import 'react-router';
14
16
  import 'react-router-dom';
15
17
  import 'string';
18
+ import 'uuid';
16
19
  export * from '../index';
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,gBAAgB,CAAC;AACxB,OAAO,iBAAiB,CAAC;AACzB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,eAAe,CAAC;AACvB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iBAAiB,CAAC;AACzB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,cAAc,CAAC;AACtB,OAAO,OAAO,CAAC;AACf,OAAO,WAAW,CAAC;AACnB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,QAAQ,CAAC;AAqBhB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,gBAAgB,CAAC;AACxB,OAAO,iBAAiB,CAAC;AACzB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,eAAe,CAAC;AACvB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iBAAiB,CAAC;AACzB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,cAAc,CAAC;AACtB,OAAO,OAAO,CAAC;AACf,OAAO,WAAW,CAAC;AACnB,OAAO,iCAAiC,CAAC;AACzC,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,QAAQ,CAAC;AAChB,OAAO,MAAM,CAAC;AAqBd,cAAc,UAAU,CAAC"}
@@ -26,11 +26,14 @@ require("moment");
26
26
  require("query-string");
27
27
  require("react");
28
28
  require("react-dom");
29
+ require("react-infinite-scroll-component");
30
+ require("react-query");
29
31
  require("react-router");
30
32
  require("react-router-dom");
31
33
  require("string");
34
+ require("uuid");
32
35
  /** Generate Source Graph */
33
- var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/ui/Page\",\"value\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"Page\",\"filePath\":\"/Users/veronica/Repositories/n3xa-meta-repo/packages/proteinjs/packages/ui/packages/ui/src/router/Page.ts\",\"qualifiedName\":\"@proteinjs/ui/Page\",\"properties\":[{\"name\":\"name\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"path\",\"type\":{\"packageName\":\"\",\"name\":\"string | string[]\",\"filePath\":null,\"qualifiedName\":\"/string | string[]\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"component\",\"type\":{\"packageName\":\"\",\"name\":\"React.ComponentType<PageComponentProps>\",\"filePath\":null,\"qualifiedName\":\"/React.ComponentType<PageComponentProps>\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"noPageContainer\",\"type\":{\"packageName\":\"\",\"name\":\"boolean\",\"filePath\":null,\"qualifiedName\":\"/boolean\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"auth\",\"type\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean;\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/ui/{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean;\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"pageContainerSxProps\",\"type\":{\"packageName\":\"\",\"name\":\"(theme: Theme) => SxProps\",\"filePath\":null,\"qualifiedName\":\"/(theme: Theme) => SxProps\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"/string | React.ComponentType\"},{\"v\":\"/React.FC\"},{\"v\":\"/Partial\"},{\"v\":\"/React.Component\"}],\"edges\":[{\"v\":\"@proteinjs/ui/Page\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"}]}";
36
+ var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/ui/Page\",\"value\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"Page\",\"filePath\":\"/home/runner/work/ui/ui/packages/ui/src/router/Page.ts\",\"qualifiedName\":\"@proteinjs/ui/Page\",\"properties\":[{\"name\":\"name\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"path\",\"type\":{\"packageName\":\"\",\"name\":\"string | string[]\",\"filePath\":null,\"qualifiedName\":\"/string | string[]\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"component\",\"type\":{\"packageName\":\"\",\"name\":\"React.ComponentType<PageComponentProps>\",\"filePath\":null,\"qualifiedName\":\"/React.ComponentType<PageComponentProps>\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"noPageContainer\",\"type\":{\"packageName\":\"\",\"name\":\"boolean\",\"filePath\":null,\"qualifiedName\":\"/boolean\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"auth\",\"type\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean;\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/ui/{\\n /** If true, the user does not need to be logged in or have any roles to access this page. If blank, defaults to false. */\\n public?: boolean;\\n /** If true, the user does not need to have any roles to access this page, but must be logged in. If blank, defaults to false. */\\n allUsers?: boolean;\\n /** The user must be logged in and have these roles to access this page. If blank, defaults to requiring the 'admin' role. */\\n roles?: string[];\\n }\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"pageContainerSxProps\",\"type\":{\"packageName\":\"\",\"name\":\"(theme: Theme) => SxProps\",\"filePath\":null,\"qualifiedName\":\"/(theme: Theme) => SxProps\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"/React.FC\"},{\"v\":\"/string | React.ComponentType\"},{\"v\":\"/Partial\"},{\"v\":\"/React.Component\"},{\"v\":\"/(value: ColumnValue\"}],\"edges\":[{\"v\":\"@proteinjs/ui/Page\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"}]}";
34
37
  /** Generate Source Links */
35
38
  var sourceLinks = {};
36
39
  /** Load Source Graph and Links */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,0BAAwB;AACxB,2BAAyB;AACzB,+BAA6B;AAC7B,yBAAuB;AACvB,iCAA+B;AAC/B,2BAAyB;AACzB,mBAAiB;AACjB,kBAAgB;AAChB,wBAAsB;AACtB,iBAAe;AACf,qBAAmB;AACnB,wBAAsB;AACtB,4BAA0B;AAC1B,kBAAgB;AAGhB,4BAA4B;AAE5B,IAAM,WAAW,GAAG,s/GAAs/G,CAAC;AAG3gH,4BAA4B;AAG5B,IAAM,WAAW,GAAG,EACnB,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,0BAAwB;AACxB,2BAAyB;AACzB,+BAA6B;AAC7B,yBAAuB;AACvB,iCAA+B;AAC/B,2BAAyB;AACzB,mBAAiB;AACjB,kBAAgB;AAChB,wBAAsB;AACtB,iBAAe;AACf,qBAAmB;AACnB,2CAAyC;AACzC,uBAAqB;AACrB,wBAAsB;AACtB,4BAA0B;AAC1B,kBAAgB;AAChB,gBAAc;AAGd,4BAA4B;AAE5B,IAAM,WAAW,GAAG,o+GAAo+G,CAAC;AAGz/G,4BAA4B;AAG5B,IAAM,WAAW,GAAG,EACnB,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
package/dist/index.d.ts CHANGED
@@ -12,4 +12,6 @@ export * from './src/container/NavMenu';
12
12
  export * from './src/table/Table';
13
13
  export * from './src/table/TableButton';
14
14
  export * from './src/table/TableLoader';
15
+ export * from './src/table/tableData';
16
+ export * from './src/components/SearchInput';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -28,4 +28,6 @@ __exportStar(require("./src/container/NavMenu"), exports);
28
28
  __exportStar(require("./src/table/Table"), exports);
29
29
  __exportStar(require("./src/table/TableButton"), exports);
30
30
  __exportStar(require("./src/table/TableLoader"), exports);
31
+ __exportStar(require("./src/table/tableData"), exports);
32
+ __exportStar(require("./src/components/SearchInput"), exports);
31
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,oDAAkC;AAElC,kDAAgC;AAChC,mDAAiC;AACjC,wDAAsC;AAEtC,8DAA4C;AAE5C,iEAA+C;AAC/C,gEAA8C;AAE9C,gEAA8C;AAC9C,8DAA4C;AAC5C,0DAAwC;AAExC,oDAAkC;AAClC,0DAAwC;AACxC,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,oDAAkC;AAElC,kDAAgC;AAChC,mDAAiC;AACjC,wDAAsC;AAEtC,8DAA4C;AAE5C,iEAA+C;AAC/C,gEAA8C;AAE9C,gEAA8C;AAC9C,8DAA4C;AAC5C,0DAAwC;AAExC,oDAAkC;AAClC,0DAAwC;AACxC,0DAAwC;AACxC,wDAAsC;AAEtC,+DAA6C"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ interface SearchInputProps {
4
+ value: string;
5
+ onChange: (value: string) => void;
6
+ onClear?: () => void;
7
+ placeholder?: string;
8
+ sx?: SxProps<Theme>;
9
+ inputSx?: SxProps<Theme>;
10
+ variant?: 'standard' | 'filled' | 'outlined';
11
+ }
12
+ export declare const SearchInput: React.FC<SearchInputProps>;
13
+ export {};
14
+ //# sourceMappingURL=SearchInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAA8C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAK3F,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC9C;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAsClD,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SearchInput = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var material_1 = require("@mui/material");
9
+ var Search_1 = __importDefault(require("@mui/icons-material/Search"));
10
+ var Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
11
+ var SearchInput = function (_a) {
12
+ var value = _a.value, onChange = _a.onChange, onClear = _a.onClear, _b = _a.placeholder, placeholder = _b === void 0 ? 'Search...' : _b, sx = _a.sx, inputSx = _a.inputSx, _c = _a.variant, variant = _c === void 0 ? 'outlined' : _c;
13
+ var handleChange = function (event) {
14
+ onChange(event.target.value);
15
+ };
16
+ return (react_1.default.createElement(material_1.Box, { sx: sx },
17
+ react_1.default.createElement(material_1.TextField, { variant: variant, value: value, onChange: handleChange, placeholder: placeholder, InputProps: {
18
+ startAdornment: (react_1.default.createElement(material_1.InputAdornment, { position: 'start' },
19
+ react_1.default.createElement(Search_1.default, null))),
20
+ endAdornment: value && onClear && (react_1.default.createElement(material_1.InputAdornment, { position: 'end' },
21
+ react_1.default.createElement(material_1.IconButton, { onClick: onClear, edge: 'end', size: 'small' },
22
+ react_1.default.createElement(Clear_1.default, null)))),
23
+ }, sx: inputSx })));
24
+ };
25
+ exports.SearchInput = SearchInput;
26
+ //# sourceMappingURL=SearchInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.js","sourceRoot":"","sources":["../../../src/components/SearchInput.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAmD;AACnD,0CAA2F;AAC3F,sEAAoD;AACpD,oEAAkD;AAa3C,IAAM,WAAW,GAA+B,UAAC,EAQvD;QAPC,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,OAAO,aAAA,EACP,mBAAyB,EAAzB,WAAW,mBAAG,WAAW,KAAA,EACzB,EAAE,QAAA,EACF,OAAO,aAAA,EACP,eAAoB,EAApB,OAAO,mBAAG,UAAU,KAAA;IAEpB,IAAM,YAAY,GAAG,UAAC,KAA0C;QAC9D,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACL,8BAAC,cAAG,IAAC,EAAE,EAAE,EAAE;QACT,8BAAC,oBAAS,IACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE;gBACV,cAAc,EAAE,CACd,8BAAC,yBAAc,IAAC,QAAQ,EAAC,OAAO;oBAC9B,8BAAC,gBAAU,OAAG,CACC,CAClB;gBACD,YAAY,EAAE,KAAK,IAAI,OAAO,IAAI,CAChC,8BAAC,yBAAc,IAAC,QAAQ,EAAC,KAAK;oBAC5B,8BAAC,qBAAU,IAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO;wBACnD,8BAAC,eAAS,OAAG,CACF,CACE,CAClB;aACF,EACD,EAAE,EAAE,OAAO,GACX,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,WAAW,eAsCtB"}
@@ -0,0 +1,14 @@
1
+ import { BoxProps } from '@mui/material';
2
+ import React, { ReactNode } from 'react';
3
+ interface InfiniteScrollProps {
4
+ children: ReactNode;
5
+ dataLength: number;
6
+ next: () => void;
7
+ hasMore: boolean;
8
+ loader?: ReactNode;
9
+ scrollableTarget?: string;
10
+ sx?: BoxProps['sx'];
11
+ }
12
+ export declare const InfiniteScroll: React.FC<InfiniteScrollProps>;
13
+ export {};
14
+ //# sourceMappingURL=InfiniteScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfiniteScroll.d.ts","sourceRoot":"","sources":["../../../src/table/InfiniteScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,EAAqB,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5D,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2DxD,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.InfiniteScroll = void 0;
30
+ var material_1 = require("@mui/material");
31
+ var react_1 = __importStar(require("react"));
32
+ var react_infinite_scroll_component_1 = __importDefault(require("react-infinite-scroll-component"));
33
+ var InfiniteScroll = function (_a) {
34
+ var children = _a.children, dataLength = _a.dataLength, next = _a.next, hasMore = _a.hasMore, loader = _a.loader, scrollableTarget = _a.scrollableTarget, sx = _a.sx;
35
+ var observerTarget = (0, react_1.useRef)(null);
36
+ var containerRef = (0, react_1.useRef)(null);
37
+ (0, react_1.useEffect)(function () {
38
+ var options = {
39
+ root: scrollableTarget ? document.getElementById(scrollableTarget) : null,
40
+ rootMargin: '0px 0px 100px 0px',
41
+ threshold: 0.1,
42
+ };
43
+ var observer = new IntersectionObserver(function (entries) {
44
+ var entry = entries[0];
45
+ if (entry.isIntersecting && hasMore) {
46
+ next();
47
+ }
48
+ }, options);
49
+ if (observerTarget.current) {
50
+ observer.observe(observerTarget.current);
51
+ }
52
+ return function () {
53
+ if (observerTarget.current) {
54
+ observer.unobserve(observerTarget.current);
55
+ }
56
+ };
57
+ }, [next, hasMore, scrollableTarget]);
58
+ return (react_1.default.createElement(material_1.Box, { ref: containerRef, sx: sx },
59
+ react_1.default.createElement(react_infinite_scroll_component_1.default, { dataLength: dataLength, next: next, hasMore: hasMore, loader: loader, scrollableTarget: scrollableTarget }, children),
60
+ hasMore && (react_1.default.createElement(material_1.Box, { ref: observerTarget, sx: {
61
+ height: '100px',
62
+ visibility: 'hidden',
63
+ } }))));
64
+ };
65
+ exports.InfiniteScroll = InfiniteScroll;
66
+ //# sourceMappingURL=InfiniteScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfiniteScroll.js","sourceRoot":"","sources":["../../../src/table/InfiniteScroll.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA8C;AAC9C,6CAA4D;AAC5D,oGAAsE;AAY/D,IAAM,cAAc,GAAkC,UAAC,EAQ7D;QAPC,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,MAAM,YAAA,EACN,gBAAgB,sBAAA,EAChB,EAAE,QAAA;IAEF,IAAM,cAAc,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACpD,IAAM,YAAY,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAElD,IAAA,iBAAS,EAAC;QACR,IAAM,OAAO,GAAG;YACd,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;YACzE,UAAU,EAAE,mBAAmB;YAC/B,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,UAAC,OAAO;YACzC,IAAA,KAAK,GAAI,OAAO,GAAX,CAAY;YACxB,IAAI,KAAK,CAAC,cAAc,IAAI,OAAO,EAAE;gBACnC,IAAI,EAAE,CAAC;aACR;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SAC1C;QAED,OAAO;YACL,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC1B,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC5C;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEtC,OAAO,CACL,8BAAC,cAAG,IAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;QAC5B,8BAAC,yCAAuB,IACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,IAEjC,QAAQ,CACe;QACzB,OAAO,IAAI,CACV,8BAAC,cAAG,IACF,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,QAAQ;aACrB,GACD,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AA3DW,QAAA,cAAc,kBA2DzB"}
@@ -1,14 +1,30 @@
1
1
  import React from 'react';
2
+ import { TableContainerOwnProps, ToolbarProps } from '@mui/material';
2
3
  import { TableLoader } from './TableLoader';
3
4
  import { TableButton } from './TableButton';
5
+ type ColumnValue<T, K extends keyof T> = T[K];
6
+ export type CustomRenderer<T, K extends keyof T> = (value: ColumnValue<T, K>, row: T) => React.ReactNode;
7
+ export type ColumnConfig<T> = {
8
+ [K in keyof T]?: {
9
+ renderer?: (value: T[K], row: T) => React.ReactNode;
10
+ header?: string | React.ReactNode;
11
+ };
12
+ };
4
13
  export type TableProps<T> = {
5
14
  title?: string;
6
15
  description?: () => JSX.Element;
7
16
  columns: (keyof T)[];
17
+ columnConfig?: ColumnConfig<T>;
8
18
  tableLoader: TableLoader<T>;
9
19
  rowOnClickRedirectUrl?: (row: T) => Promise<string>;
10
- defaultRowsPerPage?: number;
11
20
  buttons?: TableButton<T>[];
21
+ /** If true, use pagination for table page navigation, if false uses infinite scroll. Defaults to false. */
22
+ pagination?: boolean;
23
+ defaultRowsPerPage?: number;
24
+ toolbarSx?: ToolbarProps['sx'];
25
+ toolbarContent?: React.ReactNode;
26
+ tableContainerSx?: TableContainerOwnProps['sx'];
12
27
  };
13
- export declare function Table<T>({ title, description, columns, tableLoader, rowOnClickRedirectUrl, defaultRowsPerPage, buttons, }: TableProps<T>): React.JSX.Element;
28
+ export declare function Table<T>({ title, description, columns, columnConfig, tableLoader, rowOnClickRedirectUrl, pagination, defaultRowsPerPage, buttons, tableContainerSx, toolbarSx, toolbarContent, }: TableProps<T>): React.JSX.Element;
29
+ export {};
14
30
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,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,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,KAAK,CAAC,CAAC,EAAE,EACvB,KAAK,EACL,WAAW,EACX,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,kBAAuB,EACvB,OAAO,GACR,EAAE,UAAU,CAAC,CAAC,CAAC,qBA4Kf"}
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;CACjD,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,GACf,EAAE,UAAU,CAAC,CAAC,CAAC,qBA6Of"}
@@ -1,4 +1,38 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
2
36
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
37
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
38
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -40,41 +74,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
74
  };
41
75
  Object.defineProperty(exports, "__esModule", { value: true });
42
76
  exports.Table = void 0;
43
- var react_1 = __importDefault(require("react"));
77
+ var react_1 = __importStar(require("react"));
44
78
  var react_router_dom_1 = require("react-router-dom");
45
79
  var material_1 = require("@mui/material");
46
80
  var moment_1 = __importDefault(require("moment"));
47
81
  var util_1 = require("@proteinjs/util");
48
82
  var TableToolbar_1 = require("./TableToolbar");
83
+ var tableData_1 = require("./tableData");
84
+ var InfiniteScroll_1 = require("./InfiniteScroll");
49
85
  function Table(_a) {
50
- var _this = this;
51
- var title = _a.title, description = _a.description, columns = _a.columns, tableLoader = _a.tableLoader, rowOnClickRedirectUrl = _a.rowOnClickRedirectUrl, _b = _a.defaultRowsPerPage, defaultRowsPerPage = _b === void 0 ? 10 : _b, buttons = _a.buttons;
52
- var _c = react_1.default.useState(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
53
- var _d = react_1.default.useState(0), page = _d[0], setPage = _d[1];
54
- var _e = react_1.default.useState(0), totalRows = _e[0], setTotalRows = _e[1];
55
- var _f = react_1.default.useState([]), rows = _f[0], setRows = _f[1];
56
- var _g = react_1.default.useState({}), selectedRows = _g[0], setSelectedRows = _g[1];
57
- var _h = react_1.default.useState(false), selectAll = _h[0], setSelectAll = _h[1];
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;
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];
58
92
  var navigate = (0, react_router_dom_1.useNavigate)();
59
- react_1.default.useEffect(function () {
60
- var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
61
- var startIndex, endIndex, rowWindow;
62
- return __generator(this, function (_a) {
63
- switch (_a.label) {
64
- case 0:
65
- startIndex = page * rowsPerPage;
66
- endIndex = startIndex + rowsPerPage;
67
- return [4 /*yield*/, tableLoader.load(startIndex, endIndex)];
68
- case 1:
69
- rowWindow = _a.sent();
70
- setRows(rowWindow.rows);
71
- setTotalRows(rowWindow.totalCount);
72
- return [2 /*return*/];
73
- }
74
- });
75
- }); };
76
- fetchData();
77
- }, [page, rowsPerPage, tableLoader]);
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;
94
+ (0, react_1.useEffect)(function () {
95
+ resetQuery();
96
+ setPage(0);
97
+ }, [tableLoader, resetQuery]);
98
+ (0, react_1.useEffect)(function () {
99
+ setSelectedRows({});
100
+ setSelectAll(false);
101
+ }, [rows]);
102
+ var handleFetchNextPage = (0, react_1.useCallback)(function () {
103
+ if (!isFetchingNextPage) {
104
+ fetchNextPage();
105
+ }
106
+ }, [fetchNextPage, isFetchingNextPage]);
78
107
  function handleRowOnClick(row) {
79
108
  return __awaiter(this, void 0, void 0, function () {
80
109
  var redirectUrl;
@@ -132,7 +161,13 @@ function Table(_a) {
132
161
  }
133
162
  setSelectAll(selected);
134
163
  }
135
- function formatCellValue(value) {
164
+ function formatCellValue(value, column, row) {
165
+ var _a;
166
+ var customRenderer = (_a = columnConfig[column]) === null || _a === void 0 ? void 0 : _a.renderer;
167
+ if (customRenderer) {
168
+ return customRenderer(value, row);
169
+ }
170
+ // Default formatting logic
136
171
  if (value == null) {
137
172
  return '';
138
173
  }
@@ -147,9 +182,9 @@ function Table(_a) {
147
182
  }
148
183
  return value.toString();
149
184
  }
150
- return (react_1.default.createElement("div", { style: { overflow: 'auto', width: '100%' } },
151
- (title || description || (buttons && buttons.length > 0)) && (react_1.default.createElement(TableToolbar_1.TableToolbar, { title: title, description: description, selectedRows: Object.values(selectedRows), buttons: buttons })),
152
- react_1.default.createElement(material_1.TableContainer, null,
185
+ var renderTableContainer = function () {
186
+ var totalColumns = columns.length + (buttons && buttons.length > 0 ? 1 : 0);
187
+ return (react_1.default.createElement(material_1.TableContainer, { sx: __assign({}, tableContainerSx) },
153
188
  react_1.default.createElement(material_1.Table, { stickyHeader: true },
154
189
  react_1.default.createElement(material_1.TableHead, null,
155
190
  react_1.default.createElement(material_1.TableRow, null,
@@ -157,22 +192,41 @@ function Table(_a) {
157
192
  react_1.default.createElement(material_1.Checkbox, { checked: selectAll, onChange: function (event, selected) { return toggleSelectAll(selected); }, inputProps: {
158
193
  'aria-label': 'Select all',
159
194
  } }))),
160
- columns.map(function (column, index) { return (react_1.default.createElement(material_1.TableCell, { key: index },
161
- react_1.default.createElement(material_1.Typography, { variant: 'h6' }, util_1.StringUtil.humanizeCamel(column)))); }))),
162
- react_1.default.createElement(material_1.TableBody, null, rows.map(function (row, index) {
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
+ }))),
200
+ isLoading && (react_1.default.createElement(material_1.TableBody, null,
201
+ 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))))),
204
+ rows.length === 0 && !isLoading && (react_1.default.createElement(material_1.TableBody, null,
205
+ react_1.default.createElement(material_1.TableRow, null,
206
+ react_1.default.createElement(material_1.TableCell, { colSpan: totalColumns, align: 'center' },
207
+ react_1.default.createElement(material_1.Typography, null, "No rows to display."))))),
208
+ rows.length > 0 && (react_1.default.createElement(material_1.TableBody, null, rows.map(function (row, index) {
163
209
  index = rowsPerPage * page + index;
164
- return (react_1.default.createElement(material_1.TableRow, { hover: true, role: 'checkbox', tabIndex: -1, key: index, selected: typeof selectedRows[index] !== 'undefined' },
210
+ 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); } },
165
211
  buttons && buttons.length > 0 && (react_1.default.createElement(material_1.TableCell, { padding: 'checkbox' },
166
- react_1.default.createElement(material_1.Checkbox, { checked: typeof selectedRows[index] !== 'undefined', onChange: function (event, value) { return toggleSelectRow(index, row); }, inputProps: {
212
+ react_1.default.createElement(material_1.Checkbox, { checked: typeof selectedRows[index] !== 'undefined', onChange: function (event) {
213
+ event.stopPropagation();
214
+ toggleSelectRow(index, row);
215
+ }, onClick: function (event) { return event.stopPropagation(); }, inputProps: {
167
216
  'aria-label': 'Select row',
168
217
  } }))),
169
218
  columns.map(function (column, index) {
170
- var cellValue = formatCellValue(row[column]);
171
- return (react_1.default.createElement(material_1.TableCell, { key: index, onClick: function (event) { return handleRowOnClick(row); } },
172
- react_1.default.createElement(material_1.Typography, { variant: 'subtitle1' }, cellValue)));
219
+ var cellValue = formatCellValue(row[column], column, row);
220
+ return (react_1.default.createElement(material_1.TableCell, { key: index },
221
+ react_1.default.createElement(material_1.Typography, null, cellValue)));
173
222
  })));
174
- })))),
175
- react_1.default.createElement(material_1.TablePagination, { rowsPerPageOptions: [5, 10, 25, 50, 100, 200], component: 'div', count: totalRows, rowsPerPage: rowsPerPage, page: page, onPageChange: function (event, newPage) { return setPage(newPage); }, onRowsPerPageChange: function (event) { return updateRowsPerPage(parseInt(event.target.value)); } })));
223
+ }))))));
224
+ };
225
+ return (react_1.default.createElement(material_1.Box, { sx: { width: '100%', height: '100%', display: 'flex', flexDirection: 'column' } },
226
+ (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 })),
227
+ react_1.default.createElement(material_1.Box, { id: 'infinite-scroll-container', sx: { width: '100%', flexGrow: 1, overflow: 'auto' } },
228
+ 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()),
229
+ 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)); } })))));
176
230
  }
177
231
  exports.Table = Table;
178
232
  //# sourceMappingURL=Table.js.map
@@ -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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"}
@@ -2,12 +2,21 @@ export type RowWindow<T> = {
2
2
  rows: T[];
3
3
  totalCount: number;
4
4
  };
5
+ export declare function generateDefaultReactQueryKeys(): ReactQueryKeys;
6
+ export type ReactQueryKeys = {
7
+ /** Unique name of data set */
8
+ dataKey: string;
9
+ /** Unique name to differentiate between queries on the data set */
10
+ dataQueryKey: string;
11
+ };
5
12
  export type TableLoader<T> = {
6
- load: (startIndex: number, endIndex: number) => Promise<RowWindow<T>>;
13
+ reactQueryKeys?: ReactQueryKeys;
14
+ load: (startIndex: number, endIndex: number, skipRowCount?: boolean) => Promise<RowWindow<T>>;
7
15
  };
8
16
  export declare class StaticTableLoader<T> implements TableLoader<T> {
9
17
  private list;
10
- constructor(list: T[]);
18
+ reactQueryKeys?: ReactQueryKeys | undefined;
19
+ constructor(list: T[], reactQueryKeys?: ReactQueryKeys | undefined);
11
20
  load(startIndex: number, endIndex: number): Promise<{
12
21
  rows: T[];
13
22
  totalCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TableLoader.d.ts","sourceRoot":"","sources":["../../../src/table/TableLoader.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;CACvE,CAAC;AAEF,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,CAAC,EAAE;IAEvB,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,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"}
@@ -36,10 +36,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.StaticTableLoader = void 0;
39
+ exports.StaticTableLoader = exports.generateDefaultReactQueryKeys = void 0;
40
+ var uuid_1 = require("uuid");
41
+ function generateDefaultReactQueryKeys() {
42
+ return {
43
+ dataKey: (0, uuid_1.v1)(),
44
+ dataQueryKey: (0, uuid_1.v1)(),
45
+ };
46
+ }
47
+ exports.generateDefaultReactQueryKeys = generateDefaultReactQueryKeys;
40
48
  var StaticTableLoader = /** @class */ (function () {
41
- function StaticTableLoader(list) {
49
+ function StaticTableLoader(list, reactQueryKeys) {
42
50
  this.list = list;
51
+ this.reactQueryKeys = reactQueryKeys;
52
+ if (!this.reactQueryKeys) {
53
+ this.reactQueryKeys = generateDefaultReactQueryKeys();
54
+ }
43
55
  }
44
56
  StaticTableLoader.prototype.load = function (startIndex, endIndex) {
45
57
  return __awaiter(this, void 0, void 0, function () {