@proteinjs/ui 4.1.0 → 4.1.2

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 (41) hide show
  1. package/dist/generated/index.js +1 -1
  2. package/dist/generated/index.js.map +1 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/container/PageContainer.d.ts +17 -3
  8. package/dist/src/container/PageContainer.d.ts.map +1 -1
  9. package/dist/src/container/PageContainer.js +9 -4
  10. package/dist/src/container/PageContainer.js.map +1 -1
  11. package/dist/src/formatters.d.ts +37 -0
  12. package/dist/src/formatters.d.ts.map +1 -0
  13. package/dist/src/formatters.js +54 -0
  14. package/dist/src/formatters.js.map +1 -0
  15. package/dist/src/router/Page.d.ts +0 -2
  16. package/dist/src/router/Page.d.ts.map +1 -1
  17. package/dist/src/router/Router.d.ts.map +1 -1
  18. package/dist/src/router/Router.js +3 -4
  19. package/dist/src/router/Router.js.map +1 -1
  20. package/dist/src/table/InfiniteScroll.d.ts.map +1 -1
  21. package/dist/src/table/InfiniteScroll.js +4 -7
  22. package/dist/src/table/InfiniteScroll.js.map +1 -1
  23. package/dist/src/table/Table.d.ts +10 -4
  24. package/dist/src/table/Table.d.ts.map +1 -1
  25. package/dist/src/table/Table.js +31 -17
  26. package/dist/src/table/Table.js.map +1 -1
  27. package/dist/src/table/tableData.d.ts +7 -3
  28. package/dist/src/table/tableData.d.ts.map +1 -1
  29. package/dist/src/table/tableData.js +10 -7
  30. package/dist/src/table/tableData.js.map +1 -1
  31. package/generated/index.ts +1 -1
  32. package/index.ts +2 -0
  33. package/package.json +5 -6
  34. package/src/container/PageContainer.tsx +34 -5
  35. package/src/formatters.ts +69 -0
  36. package/src/router/Page.ts +0 -1
  37. package/src/router/Router.tsx +4 -5
  38. package/src/table/InfiniteScroll.tsx +4 -6
  39. package/src/table/Table.tsx +66 -22
  40. package/src/table/tableData.ts +15 -7
  41. package/LICENSE +0 -21
@@ -33,7 +33,7 @@ require("react-router-dom");
33
33
  require("string");
34
34
  require("uuid");
35
35
  /** Generate Source Graph */
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\"}]}";
36
+ var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/ui/Page\",\"value\":{\"packageName\":\"@proteinjs/ui\",\"name\":\"Page\",\"filePath\":\"/Users/brentbahry/repos/n3xa/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\":\"/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\"}]}";
37
37
  /** Generate Source Links */
38
38
  var sourceLinks = {};
39
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,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"}
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,wgHAAwgH,CAAC;AAG7hH,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
@@ -15,4 +15,5 @@ export * from './src/table/TableButton';
15
15
  export * from './src/table/TableLoader';
16
16
  export * from './src/table/tableData';
17
17
  export * from './src/components/SearchInput';
18
+ export * from './src/formatters';
18
19
  //# 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,yBAAyB,CAAC;AACxC,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,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;AAE7C,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -31,4 +31,5 @@ __exportStar(require("./src/table/TableButton"), exports);
31
31
  __exportStar(require("./src/table/TableLoader"), exports);
32
32
  __exportStar(require("./src/table/tableData"), exports);
33
33
  __exportStar(require("./src/components/SearchInput"), exports);
34
+ __exportStar(require("./src/formatters"), exports);
34
35
  //# 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,0DAAwC;AACxC,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAwC;AACxC,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;AAE7C,mDAAiC"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { AppBarProps, ToolbarProps } from '@mui/material';
2
+ import { AppBarProps, ToolbarProps, Theme, SxProps } from '@mui/material';
3
3
  import { NavigateFunction } from 'react-router-dom';
4
4
  import { Page } from '../router/Page';
5
5
  import { LinkOrDialog, NavMenuItem } from './NavMenu';
@@ -8,9 +8,24 @@ import { AccountAuth } from './AccountAuth';
8
8
  interface AccountIconButtonWithNavigateProps extends AccountIconButtonProps {
9
9
  navigate: NavigateFunction;
10
10
  }
11
+ export interface CustomPageContainerProps {
12
+ children: React.ReactNode;
13
+ pageContainerSxProps: ((theme: Theme) => SxProps) | undefined;
14
+ loginClicked: boolean;
15
+ setLoginClicked: React.Dispatch<React.SetStateAction<boolean>>;
16
+ auth?: {
17
+ isLoggedIn: boolean;
18
+ canViewPage: (page: Page) => boolean;
19
+ /** Either a dialog component, or a path to be redirected to */
20
+ login: LinkOrDialog;
21
+ logout: () => Promise<string>;
22
+ };
23
+ }
11
24
  export type PageContainerProps = {
12
25
  page: Page;
13
26
  auth?: AccountAuth;
27
+ /** Will be used to render the `Page` within as children */
28
+ CustomPageContainer?: React.ComponentType<CustomPageContainerProps>;
14
29
  appName?: string;
15
30
  toolbarChildren?: React.ReactNode;
16
31
  /** An array of menu items, each containing a React node and an action triggered when selected, either a string, dialog component, or a function. */
@@ -24,10 +39,9 @@ export type PageContainerProps = {
24
39
  CustomAccountIconButton?: React.ComponentType<AccountIconButtonWithNavigateProps>;
25
40
  abovePageSlot?: React.ReactNode;
26
41
  };
27
- declare const Page: React.MemoExoticComponent<({ auth, page, navigate, loginClicked, setLoginClicked, }: {
42
+ declare const Page: React.MemoExoticComponent<({ auth, page, loginClicked, setLoginClicked, }: {
28
43
  auth: PageContainerProps['auth'];
29
44
  page: PageContainerProps['page'];
30
- navigate: NavigateFunction;
31
45
  loginClicked: boolean;
32
46
  setLoginClicked: (loginClicked: boolean) => void;
33
47
  }) => React.JSX.Element | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/container/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgD,WAAW,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AAEnH,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAqB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,UAAU,kCAAmC,SAAQ,sBAAsB;IACzE,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,oJAAoJ;IACpJ,gBAAgB,CAAC,EAAE;QAAE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IAClF,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uBAAuB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;IAClF,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,IAAI;UAQA,kBAAkB,CAAC,MAAM,CAAC;UAC1B,kBAAkB,CAAC,MAAM,CAAC;cACtB,gBAAgB;kBACZ,OAAO;oCACW,OAAO,KAAK,IAAI;+BAiBnD,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBA4FtD"}
1
+ {"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/container/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgD,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExH,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAqB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,UAAU,kCAAmC,SAAQ,sBAAsB;IACzE,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9D,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QACrC,+DAA+D;QAC/D,KAAK,EAAE,YAAY,CAAC;QACpB,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,oJAAoJ;IACpJ,gBAAgB,CAAC,EAAE;QAAE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;IAClF,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uBAAuB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;IAClF,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,IAAI;UAOA,kBAAkB,CAAC,MAAM,CAAC;UAC1B,kBAAkB,CAAC,MAAM,CAAC;kBAClB,OAAO;oCACW,OAAO,KAAK,IAAI;+BAkBnD,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBA0GtD"}
@@ -29,9 +29,10 @@ function qualifiedPath(path) {
29
29
  return "/".concat(path);
30
30
  }
31
31
  var Page = react_1.default.memo(function (_a) {
32
- var auth = _a.auth, page = _a.page, navigate = _a.navigate, loginClicked = _a.loginClicked, setLoginClicked = _a.setLoginClicked;
32
+ var auth = _a.auth, page = _a.page, loginClicked = _a.loginClicked, setLoginClicked = _a.setLoginClicked;
33
+ var navigate = (0, react_router_dom_1.useNavigate)();
33
34
  if (auth === null || auth === void 0 ? void 0 : auth.canViewPage(page)) {
34
- return react_1.default.createElement(page.component, { urlParams: (0, createUrlParams_1.createUrlParams)(), navigate: navigate });
35
+ return react_1.default.createElement(page.component, { urlParams: (0, createUrlParams_1.createUrlParams)() });
35
36
  }
36
37
  if (!(auth === null || auth === void 0 ? void 0 : auth.isLoggedIn)) {
37
38
  if (!loginClicked) {
@@ -44,7 +45,7 @@ var Page = react_1.default.memo(function (_a) {
44
45
  });
45
46
  function PageContainer(props) {
46
47
  var navigate = (0, react_router_dom_1.useNavigate)();
47
- var page = props.page, auth = props.auth, navMenuItems = props.navMenuItems, appName = props.appName, toolbarChildren = props.toolbarChildren, profileMenuItems = props.profileMenuItems, appBarProps = props.appBarProps, toolbarProps = props.toolbarProps, CustomAccountIconButton = props.CustomAccountIconButton, abovePageSlot = props.abovePageSlot;
48
+ var page = props.page, auth = props.auth, navMenuItems = props.navMenuItems, appName = props.appName, toolbarChildren = props.toolbarChildren, profileMenuItems = props.profileMenuItems, appBarProps = props.appBarProps, toolbarProps = props.toolbarProps, CustomAccountIconButton = props.CustomAccountIconButton, CustomPageContainer = props.CustomPageContainer, abovePageSlot = props.abovePageSlot;
48
49
  var _a = react_1.default.useState(false), loginClicked = _a[0], setLoginClicked = _a[1];
49
50
  var _b = react_1.default.useState(false), navMenuOpen = _b[0], setNavMenuOpen = _b[1];
50
51
  react_1.default.useEffect(function () {
@@ -59,6 +60,10 @@ function PageContainer(props) {
59
60
  }
60
61
  }
61
62
  }, [page]);
63
+ if (CustomPageContainer) {
64
+ return (react_1.default.createElement(CustomPageContainer, { loginClicked: loginClicked, setLoginClicked: setLoginClicked, auth: auth, pageContainerSxProps: page.pageContainerSxProps },
65
+ react_1.default.createElement(Page, { auth: auth, page: page, loginClicked: loginClicked, setLoginClicked: setLoginClicked })));
66
+ }
62
67
  return (react_1.default.createElement(material_1.Box, { sx: function (theme) {
63
68
  var defaultStyles = { minHeight: '100vh', backgroundColor: theme.palette.background.default };
64
69
  if (!page.pageContainerSxProps) {
@@ -82,7 +87,7 @@ function PageContainer(props) {
82
87
  CustomAccountIconButton ? (react_1.default.createElement(CustomAccountIconButton, { loginClicked: loginClicked, setLoginClicked: setLoginClicked, auth: auth, navigate: navigate })) : (react_1.default.createElement(AccountIconButton_1.AccountIconButton, __assign({ loginClicked: loginClicked, setLoginClicked: setLoginClicked, auth: auth }, (profileMenuItems ? { profileMenuItems: profileMenuItems } : {})))))),
83
88
  navMenuItems && (react_1.default.createElement(NavMenu_1.NavMenu, { navMenuItems: navMenuItems, navMenuOpen: navMenuOpen, setNavMenuOpen: setNavMenuOpen })),
84
89
  abovePageSlot,
85
- react_1.default.createElement(Page, { auth: auth, page: page, navigate: navigate, loginClicked: loginClicked, setLoginClicked: setLoginClicked })));
90
+ react_1.default.createElement(Page, { auth: auth, page: page, loginClicked: loginClicked, setLoginClicked: setLoginClicked })));
86
91
  }
87
92
  exports.PageContainer = PageContainer;
88
93
  //# sourceMappingURL=PageContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageContainer.js","sourceRoot":"","sources":["../../../src/container/PageContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,0CAAmH;AACnH,kEAAgD;AAChD,qDAAiE;AAEjE,6DAA4D;AAC5D,qCAA+D;AAC/D,yDAAgF;AAGhF,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,WAAI,IAAI,CAAE,CAAC;AACpB,CAAC;AAoBD,IAAM,IAAI,GAAG,eAAK,CAAC,IAAI,CACrB,UAAC,EAYA;QAXC,IAAI,UAAA,EACJ,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,YAAY,kBAAA,EACZ,eAAe,qBAAA;IAQf,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,8BAAC,IAAI,CAAC,SAAS,IAAC,SAAS,EAAE,IAAA,iCAAe,GAAE,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;KAC7E;IAED,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE;YACjB,eAAe,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF,SAAgB,aAAa,CAAC,KAAyB;IACrD,IAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAE7B,IAAA,IAAI,GAUF,KAAK,KAVH,EACJ,IAAI,GASF,KAAK,KATH,EACJ,YAAY,GAQV,KAAK,aARK,EACZ,OAAO,GAOL,KAAK,QAPA,EACP,eAAe,GAMb,KAAK,gBANQ,EACf,gBAAgB,GAKd,KAAK,iBALS,EAChB,WAAW,GAIT,KAAK,YAJI,EACX,YAAY,GAGV,KAAK,aAHK,EACZ,uBAAuB,GAErB,KAAK,wBAFgB,EACvB,aAAa,GACX,KAAK,cADM,CACL;IACJ,IAAA,KAAkC,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAtD,YAAY,QAAA,EAAE,eAAe,QAAyB,CAAC;IACxD,IAAA,KAAgC,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAApD,WAAW,QAAA,EAAE,cAAc,QAAyB,CAAC;IAE5D,eAAK,CAAC,SAAS,CAAC;QACd,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,IAAI,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;gBACnC,IAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACb;SACF;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,8BAAC,cAAG,IACF,EAAE,EAAE,UAAC,KAAK;YACR,IAAM,aAAa,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,OAAO,aAAa,CAAC;aACtB;YAED,IAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1F,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,8BAAC,iBAAM,aAAC,QAAQ,EAAC,QAAQ,IAAK,WAAW;YACvC,8BAAC,kBAAO,eAAK,YAAY;gBACtB,YAAY,IAAI,CACf,8BAAC,qBAAU,kBACE,MAAM,EACjB,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,CAAC,WAAW,CAAC,EAA5B,CAA4B,EAC3C,EAAE,EAAE,UAAC,KAAK,IAAK,OAAA,CAAC;wBACd,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC7B,SAAS,EAAE;4BACT,KAAK,EAAE,MAAM;yBACd;qBACF,CAAC,EALa,CAKb,EACF,KAAK,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;oBAEzC,8BAAC,cAAQ,OAAG,CACD,CACd;gBACA,OAAO,IAAI,CACV,8BAAC,qBAAU,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAChE,OAAO,CACG,CACd;gBACA,eAAe;gBAChB,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAQ;gBAClC,uBAAuB,CAAC,CAAC,CAAC,CACzB,8BAAC,uBAAuB,IACtB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,qCAAiB,aAChB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,IACN,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,kBAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,CACH,CACO,CACH;QACR,YAAY,IAAI,CACf,8BAAC,iBAAO,IAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAI,CAClG;QACA,aAAa;QACd,8BAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAC9G,CACP,CAAC;AACJ,CAAC;AA5FD,sCA4FC"}
1
+ {"version":3,"file":"PageContainer.js","sourceRoot":"","sources":["../../../src/container/PageContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,0CAAwH;AACxH,kEAAgD;AAChD,qDAAiE;AAEjE,6DAA4D;AAC5D,qCAA+D;AAC/D,yDAAgF;AAGhF,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,WAAI,IAAI,CAAE,CAAC;AACpB,CAAC;AAoCD,IAAM,IAAI,GAAG,eAAK,CAAC,IAAI,CACrB,UAAC,EAUA;QATC,IAAI,UAAA,EACJ,IAAI,UAAA,EACJ,YAAY,kBAAA,EACZ,eAAe,qBAAA;IAOf,IAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAC/B,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,8BAAC,IAAI,CAAC,SAAS,IAAC,SAAS,EAAE,IAAA,iCAAe,GAAE,GAAI,CAAC;KACzD;IAED,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE;YACjB,eAAe,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF,SAAgB,aAAa,CAAC,KAAyB;IACrD,IAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAE7B,IAAA,IAAI,GAWF,KAAK,KAXH,EACJ,IAAI,GAUF,KAAK,KAVH,EACJ,YAAY,GASV,KAAK,aATK,EACZ,OAAO,GAQL,KAAK,QARA,EACP,eAAe,GAOb,KAAK,gBAPQ,EACf,gBAAgB,GAMd,KAAK,iBANS,EAChB,WAAW,GAKT,KAAK,YALI,EACX,YAAY,GAIV,KAAK,aAJK,EACZ,uBAAuB,GAGrB,KAAK,wBAHgB,EACvB,mBAAmB,GAEjB,KAAK,oBAFY,EACnB,aAAa,GACX,KAAK,cADM,CACL;IACJ,IAAA,KAAkC,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAtD,YAAY,QAAA,EAAE,eAAe,QAAyB,CAAC;IACxD,IAAA,KAAgC,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAApD,WAAW,QAAA,EAAE,cAAc,QAAyB,CAAC;IAE5D,eAAK,CAAC,SAAS,CAAC;QACd,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,IAAI,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;gBACnC,IAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACb;SACF;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,mBAAmB,EAAE;QACvB,OAAO,CACL,8BAAC,mBAAmB,IAClB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAE/C,8BAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAC1E,CACvB,CAAC;KACH;IAED,OAAO,CACL,8BAAC,cAAG,IACF,EAAE,EAAE,UAAC,KAAK;YACR,IAAM,aAAa,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,OAAO,aAAa,CAAC;aACtB;YAED,IAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1F,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,8BAAC,iBAAM,aAAC,QAAQ,EAAC,QAAQ,IAAK,WAAW;YACvC,8BAAC,kBAAO,eAAK,YAAY;gBACtB,YAAY,IAAI,CACf,8BAAC,qBAAU,kBACE,MAAM,EACjB,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,CAAC,WAAW,CAAC,EAA5B,CAA4B,EAC3C,EAAE,EAAE,UAAC,KAAK,IAAK,OAAA,CAAC;wBACd,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC7B,SAAS,EAAE;4BACT,KAAK,EAAE,MAAM;yBACd;qBACF,CAAC,EALa,CAKb,EACF,KAAK,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;oBAEzC,8BAAC,cAAQ,OAAG,CACD,CACd;gBACA,OAAO,IAAI,CACV,8BAAC,qBAAU,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAChE,OAAO,CACG,CACd;gBACA,eAAe;gBAChB,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAQ;gBAClC,uBAAuB,CAAC,CAAC,CAAC,CACzB,8BAAC,uBAAuB,IACtB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,qCAAiB,aAChB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,IACN,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,kBAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,CACH,CACO,CACH;QACR,YAAY,IAAI,CACf,8BAAC,iBAAO,IAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAI,CAClG;QACA,aAAa;QACd,8BAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAC1F,CACP,CAAC;AACJ,CAAC;AA1GD,sCA0GC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Configuration options for date formatting
3
+ */
4
+ interface DateFormatterOptions {
5
+ /** Format for time on today's dates (default: 'h:mm A') */
6
+ todayFormat?: string;
7
+ /** Format for time on yesterday's dates (default: 'h:mm A') */
8
+ yesterdayFormat?: string;
9
+ /** Format for older dates (default: 'MMM D, YYYY') */
10
+ defaultFormat?: string;
11
+ }
12
+ /**
13
+ * Valid input types for the date parameter
14
+ */
15
+ type DateInput = Date | string | number;
16
+ /**
17
+ * Formats a date relative to now, showing "Today at HH:MM AM/PM",
18
+ * "Yesterday at HH:MM AM/PM", or "MMM D, YYYY"
19
+ *
20
+ * @param {Date|string|number} inputDate - The date to format (Date object, ISO string, or timestamp)
21
+ * @param {Object} options - Configuration options
22
+ * @param {string} options.todayFormat - Format for time on today's dates (default: 'h:mm A')
23
+ * @param {string} options.yesterdayFormat - Format for time on yesterday's dates (default: 'h:mm A')
24
+ * @param {string} options.defaultFormat - Format for older dates (default: 'MMM D, YYYY')
25
+ * @returns {string} The formatted date string
26
+ * @throws {Error} If inputDate is invalid
27
+ *
28
+ * @example
29
+ * formatRelativeDate(new Date()) // "Today at 2:30 PM"
30
+ * formatRelativeDate('2024-10-28') // "Yesterday at 12:00 AM"
31
+ * formatRelativeDate('2024-10-27') // "Oct 27, 2024"
32
+ */
33
+ export declare function formatRelativeDate(inputDate: DateInput, options?: DateFormatterOptions): string;
34
+ /** Capitalize the first character in a string. Returns empty string for invalid inputs. */
35
+ export declare const capitalizeFirst: (str?: string | null) => string;
36
+ export {};
37
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/formatters.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,UAAU,oBAAoB;IAC5B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAwBnG;AAED,2FAA2F;AAC3F,eAAO,MAAM,eAAe,SAAU,MAAM,GAAG,IAAI,KAAG,MAKrD,CAAC"}
@@ -0,0 +1,54 @@
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.capitalizeFirst = exports.formatRelativeDate = void 0;
7
+ var moment_1 = __importDefault(require("moment"));
8
+ /**
9
+ * Formats a date relative to now, showing "Today at HH:MM AM/PM",
10
+ * "Yesterday at HH:MM AM/PM", or "MMM D, YYYY"
11
+ *
12
+ * @param {Date|string|number} inputDate - The date to format (Date object, ISO string, or timestamp)
13
+ * @param {Object} options - Configuration options
14
+ * @param {string} options.todayFormat - Format for time on today's dates (default: 'h:mm A')
15
+ * @param {string} options.yesterdayFormat - Format for time on yesterday's dates (default: 'h:mm A')
16
+ * @param {string} options.defaultFormat - Format for older dates (default: 'MMM D, YYYY')
17
+ * @returns {string} The formatted date string
18
+ * @throws {Error} If inputDate is invalid
19
+ *
20
+ * @example
21
+ * formatRelativeDate(new Date()) // "Today at 2:30 PM"
22
+ * formatRelativeDate('2024-10-28') // "Yesterday at 12:00 AM"
23
+ * formatRelativeDate('2024-10-27') // "Oct 27, 2024"
24
+ */
25
+ function formatRelativeDate(inputDate, options) {
26
+ if (options === void 0) { options = {}; }
27
+ // Set default options
28
+ var _a = options.todayFormat, todayFormat = _a === void 0 ? 'h:mm A' : _a, _b = options.yesterdayFormat, yesterdayFormat = _b === void 0 ? 'h:mm A' : _b, _c = options.defaultFormat, defaultFormat = _c === void 0 ? 'MMM D, YYYY' : _c; // Set default options
29
+ // Convert input to moment object
30
+ var date = (0, moment_1.default)(inputDate);
31
+ // Validate input
32
+ if (!date.isValid()) {
33
+ throw new Error('Invalid date provided');
34
+ }
35
+ var now = (0, moment_1.default)();
36
+ // Format based on relative time
37
+ if (date.isSame(now, 'day')) {
38
+ return "Today at ".concat(date.format(todayFormat));
39
+ }
40
+ if (date.isSame(now.clone().subtract(1, 'day'), 'day')) {
41
+ return "Yesterday at ".concat(date.format(yesterdayFormat));
42
+ }
43
+ return date.format(defaultFormat);
44
+ }
45
+ exports.formatRelativeDate = formatRelativeDate;
46
+ /** Capitalize the first character in a string. Returns empty string for invalid inputs. */
47
+ var capitalizeFirst = function (str) {
48
+ if (!str || typeof str !== 'string' || str.length === 0) {
49
+ return '';
50
+ }
51
+ return str.charAt(0).toUpperCase() + str.slice(1);
52
+ };
53
+ exports.capitalizeFirst = capitalizeFirst;
54
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA4B;AAmB5B;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,kBAAkB,CAAC,SAAoB,EAAE,OAAkC;IAAlC,wBAAA,EAAA,YAAkC;IACzF,sBAAsB;IACd,IAAA,KAAsF,OAAO,YAAvE,EAAtB,WAAW,mBAAG,QAAQ,KAAA,EAAE,KAA8D,OAAO,gBAA3C,EAA1B,eAAe,mBAAG,QAAQ,KAAA,EAAE,KAAkC,OAAO,cAAZ,EAA7B,aAAa,mBAAG,aAAa,KAAA,CAAa,CAAC,sBAAsB;IAE7H,iCAAiC;IACjC,IAAM,IAAI,GAAG,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC;IAE/B,iBAAiB;IACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC1C;IAED,IAAM,GAAG,GAAG,IAAA,gBAAM,GAAE,CAAC;IAErB,gCAAgC;IAChC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC3B,OAAO,mBAAY,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAE,CAAC;KAC/C;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;QACtD,OAAO,uBAAgB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;KACvD;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC;AAxBD,gDAwBC;AAED,2FAA2F;AACpF,IAAM,eAAe,GAAG,UAAC,GAAmB;IACjD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACvD,OAAO,EAAE,CAAC;KACX;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AALW,QAAA,eAAe,mBAK1B"}
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
2
  import { SxProps, Theme } from '@mui/material';
3
3
  import { Loadable } from '@proteinjs/reflection';
4
- import { NavigateFunction } from 'react-router-dom';
5
4
  export declare const getPages: () => Page[];
6
5
  export type PageComponentProps = {
7
6
  urlParams: {
8
7
  [key: string]: string;
9
8
  };
10
- navigate: NavigateFunction;
11
9
  };
12
10
  export interface Page extends Loadable {
13
11
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/router/Page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,QAAQ,cAAmE,CAAC;AAEzF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACrC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,QAAQ;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACnD,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE;QACL,0HAA0H;QAC1H,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,iIAAiI;QACjI,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,6HAA6H;QAC7H,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CAClD"}
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/router/Page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAGnE,eAAO,MAAM,QAAQ,cAAmE,CAAC;AAEzF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,QAAQ;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACnD,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE;QACL,0HAA0H;QAC1H,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,iIAAiI;QACjI,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,6HAA6H;QAC7H,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,GAAE,UAAe,QAI/C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,qBA8DnE"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,GAAE,UAAe,QAI/C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,qBA6DnE"}
@@ -25,7 +25,6 @@ function Router(props) {
25
25
  react_1.default.createElement(react_router_dom_1.BrowserRouter, null,
26
26
  react_1.default.createElement(RoutesComponent, null))));
27
27
  function RoutesComponent() {
28
- var navigate = (0, react_router_dom_1.useNavigate)();
29
28
  return (react_1.default.createElement(react_router_1.Routes, null,
30
29
  (function () {
31
30
  var routes = [];
@@ -33,13 +32,13 @@ function Router(props) {
33
32
  for (var _i = 0, pages_1 = pages; _i < pages_1.length; _i++) {
34
33
  var page = pages_1[_i];
35
34
  if (typeof page.path === 'string') {
36
- routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(page.path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page, navigate: navigate }) }));
35
+ routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(page.path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page }) }));
37
36
  }
38
37
  else {
39
38
  var paths = page.path;
40
39
  for (var _a = 0, paths_1 = paths; _a < paths_1.length; _a++) {
41
40
  var path = paths_1[_a];
42
- routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page, navigate: navigate }) }));
41
+ routes.push(react_1.default.createElement(react_router_1.Route, { key: key++, path: getPath(path), element: react_1.default.createElement(ContainerizedComponent, { options: options, page: page }) }));
43
42
  }
44
43
  }
45
44
  }
@@ -51,7 +50,7 @@ function Router(props) {
51
50
  if (props.options.pageContainer && !props.page.noPageContainer) {
52
51
  return react_1.default.createElement(props.options.pageContainer, { page: props.page });
53
52
  }
54
- return react_1.default.createElement(props.page.component, { urlParams: (0, createUrlParams_1.createUrlParams)(), navigate: props.navigate });
53
+ return react_1.default.createElement(props.page.component, { urlParams: (0, createUrlParams_1.createUrlParams)() });
55
54
  }
56
55
  function PageNotFound(props) {
57
56
  if (props.pageNotFound) {
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../src/router/Router.tsx"],"names":[],"mappings":"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"}
@@ -1 +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,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAgC,EAAE,KAAK,IAAI,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEjH,UAAU,mBAAoB,SAAQ,4BAA4B;IAChE,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA6DxD,CAAC"}
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,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAgC,EAAE,KAAK,IAAI,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEjH,UAAU,mBAAoB,SAAQ,4BAA4B;IAChE,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2DxD,CAAC"}
@@ -58,18 +58,15 @@ var InfiniteScroll = function (_a) {
58
58
  var containerRef = (0, react_1.useRef)(null);
59
59
  (0, react_1.useEffect)(function () {
60
60
  var getScrollableTarget = function () {
61
- if (typeof scrollableTarget === 'string') {
62
- return document.getElementById(scrollableTarget);
63
- }
64
- else if (scrollableTarget instanceof HTMLElement) {
61
+ if (scrollableTarget instanceof HTMLElement) {
65
62
  return scrollableTarget;
66
63
  }
67
64
  return null;
68
65
  };
69
66
  var options = {
70
67
  root: getScrollableTarget(),
71
- rootMargin: '0px 0px 100px 0px',
72
- threshold: 0.1,
68
+ rootMargin: '100px 0px',
69
+ threshold: 0,
73
70
  };
74
71
  var observer = new IntersectionObserver(function (entries) {
75
72
  var entry = entries[0];
@@ -89,7 +86,7 @@ var InfiniteScroll = function (_a) {
89
86
  return (react_1.default.createElement(material_1.Box, { ref: containerRef, sx: sx },
90
87
  react_1.default.createElement(react_infinite_scroll_component_1.default, __assign({ next: next, hasMore: hasMore, scrollableTarget: scrollableTarget }, otherProps), children),
91
88
  hasMore && (react_1.default.createElement(material_1.Box, { ref: observerTarget, sx: {
92
- height: '100px',
89
+ height: '48px',
93
90
  visibility: 'hidden',
94
91
  } }))));
95
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"InfiniteScroll.js","sourceRoot":"","sources":["../../../src/table/InfiniteScroll.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA8C;AAC9C,6CAAiD;AACjD,oGAAiH;AAM1G,IAAM,cAAc,GAAkC,UAAC,EAO7D;IANC,IAAA,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,gBAAgB,sBAAA,EAChB,EAAE,QAAA,EACC,UAAU,cAN+C,yDAO7D,CADc;IAEb,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,mBAAmB,GAAG;YAC1B,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;gBACxC,OAAO,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;aAClD;iBAAM,IAAI,gBAAgB,YAAY,WAAW,EAAE;gBAClD,OAAO,gBAAgB,CAAC;aACzB;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,IAAM,OAAO,GAAG;YACd,IAAI,EAAE,mBAAmB,EAAE;YAC3B,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,aAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,IAAM,UAAU,GACtG,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;AA7DW,QAAA,cAAc,kBA6DzB"}
1
+ {"version":3,"file":"InfiniteScroll.js","sourceRoot":"","sources":["../../../src/table/InfiniteScroll.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA8C;AAC9C,6CAAiD;AACjD,oGAAiH;AAM1G,IAAM,cAAc,GAAkC,UAAC,EAO7D;IANC,IAAA,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,gBAAgB,sBAAA,EAChB,EAAE,QAAA,EACC,UAAU,cAN+C,yDAO7D,CADc;IAEb,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,mBAAmB,GAAG;YAC1B,IAAI,gBAAgB,YAAY,WAAW,EAAE;gBAC3C,OAAO,gBAAgB,CAAC;aACzB;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,IAAM,OAAO,GAAG;YACd,IAAI,EAAE,mBAAmB,EAAE;YAC3B,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,CAAC;SACb,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,aAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,IAAM,UAAU,GACtG,QAAQ,CACe;QACzB,OAAO,IAAI,CACV,8BAAC,cAAG,IACF,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,QAAQ;aACrB,GACD,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AA3DW,QAAA,cAAc,kBA2DzB"}
@@ -1,17 +1,18 @@
1
1
  import React from 'react';
2
- import { TableContainerOwnProps, ToolbarProps } from '@mui/material';
2
+ import { TableContainerOwnProps, ToolbarProps, TablePaginationProps, TableCellProps } from '@mui/material';
3
3
  import { TableLoader } from './TableLoader';
4
4
  import { TableButton } from './TableButton';
5
5
  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
+ cellProps?: TableCellProps;
9
10
  renderer?: CustomRenderer<T, K>;
10
11
  /** If no header is provided, a default header will be used. Pass in `null` if you'd like the header to be omitted. */
11
12
  header?: string | React.ReactNode;
12
13
  };
13
14
  };
14
- type RowClickAction<T> = string | ((row: T) => void | Promise<void> | string | Promise<string>);
15
+ type RowClickAction<T> = string | ((row: T, event?: React.MouseEvent) => void | Promise<void> | string | Promise<string>);
15
16
  export type TableProps<T> = {
16
17
  title?: string;
17
18
  description?: () => JSX.Element;
@@ -19,6 +20,7 @@ export type TableProps<T> = {
19
20
  columnConfig?: ColumnConfig<T>;
20
21
  hideColumnHeaders?: boolean;
21
22
  tableLoader: TableLoader<T>;
23
+ refetchOnWindowFocus?: boolean;
22
24
  /** Setter which will be used to update the row count when rows are loaded */
23
25
  setRowCount?: React.Dispatch<React.SetStateAction<number | undefined>>;
24
26
  rowOnClick?: RowClickAction<T>;
@@ -26,13 +28,17 @@ export type TableProps<T> = {
26
28
  buttons?: TableButton<T>[];
27
29
  /** If true, use pagination for table page navigation, if false uses infinite scroll. Defaults to false. */
28
30
  pagination?: boolean;
29
- defaultRowsPerPage?: number;
31
+ /** Props passed into the TablePagination component. This component is only displayed if `pagination` is true. */
32
+ tablePaginationProps?: Partial<TablePaginationProps>;
33
+ rowsPerPage?: number;
30
34
  toolbarSx?: ToolbarProps['sx'];
31
35
  toolbarContent?: React.ReactNode;
32
36
  tableContainerSx?: TableContainerOwnProps['sx'];
33
37
  emptyTableComponent?: React.ReactNode;
34
38
  skeleton?: React.ReactNode;
39
+ /** Loader to display while items are fetching. Only applicable when pagination prop is false. */
40
+ infiniteScrollLoader?: React.ReactNode;
35
41
  };
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;
42
+ export declare function Table<T>({ title, description, columns, columnConfig, hideColumnHeaders, tableLoader, refetchOnWindowFocus, rowOnClick, setRowCount, pagination, tablePaginationProps, rowsPerPage: rowsPerPageProp, buttons, tableContainerSx, toolbarSx, toolbarContent, emptyTableComponent, skeleton, infiniteScrollLoader, }: TableProps<T>): React.JSX.Element;
37
43
  export {};
38
44
  //# 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,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"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -83,14 +83,25 @@ 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, _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;
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, _d = _a.refetchOnWindowFocus, refetchOnWindowFocus = _d === void 0 ? false : _d, rowOnClick = _a.rowOnClick, setRowCount = _a.setRowCount, _e = _a.pagination, pagination = _e === void 0 ? false : _e, tablePaginationProps = _a.tablePaginationProps, _f = _a.rowsPerPage, rowsPerPageProp = _f === void 0 ? 10 : _f, buttons = _a.buttons, tableContainerSx = _a.tableContainerSx, toolbarSx = _a.toolbarSx, toolbarContent = _a.toolbarContent, emptyTableComponent = _a.emptyTableComponent, skeleton = _a.skeleton, infiniteScrollLoader = _a.infiniteScrollLoader;
87
87
  var infiniteScroll = !pagination;
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];
88
+ var _g = (0, react_1.useState)(rowsPerPageProp), rowsPerPage = _g[0], setRowsPerPage = _g[1];
89
+ var _h = (0, react_1.useState)(0), page = _h[0], setPage = _h[1];
90
+ var _j = (0, react_1.useState)({}), selectedRows = _j[0], setSelectedRows = _j[1];
91
+ var _k = (0, react_1.useState)(false), selectAll = _k[0], setSelectAll = _k[1];
92
+ var infScrollContainerRef = (0, react_1.useRef)(null);
92
93
  var navigate = (0, react_router_dom_1.useNavigate)();
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
+ var _l = (0, tableData_1.useTableData)(tableLoader, rowsPerPage, page, infiniteScroll, setRowCount, refetchOnWindowFocus), rows = _l.rows, totalRows = _l.totalRows, isLoading = _l.isLoading, error = _l.error, fetchNextPage = _l.fetchNextPage, hasNextPage = _l.hasNextPage, isFetchingNextPage = _l.isFetchingNextPage, resetQuery = _l.resetQuery;
95
+ var maxPage = Math.max(0, Math.ceil((totalRows || 0) / rowsPerPage) - 1);
96
+ // Adjust page if it exceeds maxPage
97
+ (0, react_1.useEffect)(function () {
98
+ if (!pagination || isLoading) {
99
+ return;
100
+ }
101
+ if (page > maxPage && maxPage >= 0) {
102
+ setPage(maxPage);
103
+ }
104
+ }, [page, maxPage, pagination, isLoading, totalRows]);
94
105
  (0, react_1.useEffect)(function () {
95
106
  resetQuery();
96
107
  setPage(0);
@@ -110,7 +121,7 @@ function Table(_a) {
110
121
  fetchNextPage();
111
122
  }
112
123
  }, [fetchNextPage, isFetchingNextPage]);
113
- function handleRowOnClick(row, action, navigate) {
124
+ function handleRowOnClick(row, event, action, navigate) {
114
125
  return __awaiter(this, void 0, void 0, function () {
115
126
  var url, result, resolvedResult, url, url;
116
127
  return __generator(this, function (_a) {
@@ -127,7 +138,7 @@ function Table(_a) {
127
138
  navigate(url);
128
139
  return [2 /*return*/];
129
140
  }
130
- result = action(row);
141
+ result = action(row, event);
131
142
  if (!(result instanceof Promise)) return [3 /*break*/, 2];
132
143
  return [4 /*yield*/, result];
133
144
  case 1:
@@ -233,16 +244,18 @@ function Table(_a) {
233
244
  var _a, _b;
234
245
  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
246
  }))),
236
- isLoading && (react_1.default.createElement(material_1.TableBody, null,
237
- react_1.default.createElement(material_1.TableRow, 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))))),
247
+ isLoading && (react_1.default.createElement(material_1.TableBody, { className: 'loading-skeleton-table-body' },
248
+ react_1.default.createElement(material_1.TableRow, { className: 'loading-skeleton-row' },
249
+ react_1.default.createElement(material_1.TableCell, { colSpan: totalColumns, align: 'center', className: 'loading-skeleton-cell', sx: { py: 3 } }, skeleton ? skeleton : react_1.default.createElement(material_1.CircularProgress, null))))),
239
250
  rows.length === 0 && !isLoading && (react_1.default.createElement(material_1.TableBody, null,
240
251
  react_1.default.createElement(material_1.TableRow, null,
241
252
  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."))))),
242
253
  rows.length > 0 && (react_1.default.createElement(material_1.TableBody, null, rows.map(function (row, index) {
243
254
  index = rowsPerPage * page + index;
244
255
  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 },
256
+ return (react_1.default.createElement(material_1.TableRow, { hover: true, tabIndex: -1, key: index, selected: isSelected, onClick: rowOnClick
257
+ ? function (event) { return handleRowOnClick(row, event, rowOnClick, navigate); }
258
+ : undefined },
246
259
  buttons && buttons.length > 0 && (react_1.default.createElement(material_1.TableCell, { padding: 'checkbox' },
247
260
  react_1.default.createElement(material_1.Checkbox, { checked: isSelected, onChange: function (event) {
248
261
  event.stopPropagation();
@@ -251,16 +264,17 @@ function Table(_a) {
251
264
  'aria-label': 'Select row',
252
265
  } }))),
253
266
  columns.map(function (column, index) {
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)));
267
+ var _a;
268
+ var _b = formatCellValue(row[column], column, row), cellValue = _b.value, isCustomRendered = _b.isCustomRendered;
269
+ return (react_1.default.createElement(material_1.TableCell, __assign({ key: index }, (_a = columnConfig === null || columnConfig === void 0 ? void 0 : columnConfig[column]) === null || _a === void 0 ? void 0 : _a.cellProps), isCustomRendered ? cellValue : react_1.default.createElement(material_1.Typography, null, cellValue)));
256
270
  })));
257
271
  }))))));
258
272
  };
259
273
  return (react_1.default.createElement(material_1.Box, { sx: { width: '100%', height: '100%', display: 'flex', flexDirection: 'column' } },
260
274
  (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 })),
261
- react_1.default.createElement(material_1.Box, { id: 'infinite-scroll-container', sx: { width: '100%', flexGrow: 1, overflow: 'auto' } },
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()),
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)); } })))));
275
+ react_1.default.createElement(material_1.Box, { ref: infScrollContainerRef, sx: { width: '100%', flexGrow: 1, overflow: 'auto' } },
276
+ infiniteScroll ? (react_1.default.createElement(InfiniteScroll_1.InfiniteScroll, { dataLength: rows.length, next: handleFetchNextPage, hasMore: !!hasNextPage, loader: infiniteScrollLoader || (react_1.default.createElement(material_1.Typography, { variant: 'body2', sx: { p: 2 } }, "Loading...")), scrollableTarget: react_1.default.createElement('div', { ref: infScrollContainerRef }) }, renderTableContainer())) : (renderTableContainer()),
277
+ pagination && (react_1.default.createElement(material_1.TablePagination, __assign({ rowsPerPageOptions: [5, 10, 25, 50, 100, 200], component: 'div', count: totalRows || 0, rowsPerPage: rowsPerPage, page: isLoading ? page : Math.min(page, maxPage), onPageChange: function (event, newPage) { return setPage(newPage); }, onRowsPerPageChange: function (event) { return updateRowsPerPage(parseInt(event.target.value)); } }, tablePaginationProps))))));
264
278
  }
265
279
  exports.Table = Table;
266
280
  //# sourceMappingURL=Table.js.map