@webiny/app-audit-logs 6.6.0-alpha.0 → 6.6.0-alpha.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 (96) hide show
  1. package/components/Text.d.ts +1 -3
  2. package/components/Text.js +4 -9
  3. package/components/Text.js.map +1 -1
  4. package/config/list/AuditLogsListConfig.d.ts +6 -0
  5. package/config/list/AuditLogsListConfig.js +10 -1
  6. package/config/list/AuditLogsListConfig.js.map +1 -1
  7. package/config/list/Details/PreviewTab.d.ts +15 -0
  8. package/config/list/Details/PreviewTab.js +32 -0
  9. package/config/list/Details/PreviewTab.js.map +1 -0
  10. package/config/list/Details/index.d.ts +8 -0
  11. package/config/list/Details/index.js +7 -0
  12. package/config/list/Details/index.js.map +1 -0
  13. package/hooks/schema.d.ts +2 -3
  14. package/hooks/schema.js +1 -2
  15. package/hooks/schema.js.map +1 -1
  16. package/hooks/useAuditLogsList.d.ts +0 -3
  17. package/hooks/useAuditLogsList.js +11 -12
  18. package/hooks/useAuditLogsList.js.map +1 -1
  19. package/index.js +12 -5
  20. package/index.js.map +1 -1
  21. package/package.json +13 -15
  22. package/types.d.ts +2 -2
  23. package/views/Logs/Filters/FilterByAction.d.ts +1 -1
  24. package/views/Logs/Filters/FilterByAction.js +5 -3
  25. package/views/Logs/Filters/FilterByAction.js.map +1 -1
  26. package/views/Logs/Filters/FilterByApp.js +2 -1
  27. package/views/Logs/Filters/FilterByApp.js.map +1 -1
  28. package/views/Logs/Filters/FilterByCreatedBy.js +2 -1
  29. package/views/Logs/Filters/FilterByCreatedBy.js.map +1 -1
  30. package/views/Logs/Filters/FilterByCreatedOn.js +26 -27
  31. package/views/Logs/Filters/FilterByCreatedOn.js.map +1 -1
  32. package/views/Logs/Filters/FilterByEntity.d.ts +1 -1
  33. package/views/Logs/Filters/FilterByEntity.js +5 -3
  34. package/views/Logs/Filters/FilterByEntity.js.map +1 -1
  35. package/views/Logs/Filters/FilterByEntityId.js +2 -1
  36. package/views/Logs/Filters/FilterByEntityId.js.map +1 -1
  37. package/views/Logs/Filters/Filters.d.ts +1 -2
  38. package/views/Logs/Filters/Filters.js +61 -13
  39. package/views/Logs/Filters/Filters.js.map +1 -1
  40. package/views/Logs/Header/ButtonFilters/ButtonFilters.js +4 -5
  41. package/views/Logs/Header/ButtonFilters/ButtonFilters.js.map +1 -1
  42. package/views/Logs/Header/Header.d.ts +2 -4
  43. package/views/Logs/Header/Header.js +4 -7
  44. package/views/Logs/Header/Header.js.map +1 -1
  45. package/views/Logs/LoadMoreButton/styled.d.ts +4 -4
  46. package/views/Logs/LoadMoreButton/styled.js +4 -6
  47. package/views/Logs/LoadMoreButton/styled.js.map +1 -1
  48. package/views/Logs/LogsView.js +4 -8
  49. package/views/Logs/LogsView.js.map +1 -1
  50. package/views/Logs/Preview/AuditLogDetailsPresenter.d.ts +13 -0
  51. package/views/Logs/Preview/AuditLogDetailsPresenter.js +36 -0
  52. package/views/Logs/Preview/AuditLogDetailsPresenter.js.map +1 -0
  53. package/views/Logs/Preview/Preview.d.ts +4 -2
  54. package/views/Logs/Preview/Preview.js +67 -22
  55. package/views/Logs/Preview/Preview.js.map +1 -1
  56. package/views/Logs/Preview/abstractions.d.ts +14 -0
  57. package/views/Logs/Preview/abstractions.js +5 -0
  58. package/views/Logs/Preview/abstractions.js.map +1 -0
  59. package/views/Logs/Preview/feature.d.ts +5 -0
  60. package/views/Logs/Preview/feature.js +22 -0
  61. package/views/Logs/Preview/feature.js.map +1 -0
  62. package/views/Logs/Preview/index.d.ts +2 -0
  63. package/views/Logs/Preview/index.js +1 -0
  64. package/views/Logs/Preview/tabs/AiPromptTabs.d.ts +2 -0
  65. package/views/Logs/Preview/tabs/AiPromptTabs.js +25 -0
  66. package/views/Logs/Preview/tabs/AiPromptTabs.js.map +1 -0
  67. package/views/Logs/Preview/tabs/LlmResponseTab.d.ts +4 -0
  68. package/views/Logs/Preview/tabs/LlmResponseTab.js +41 -0
  69. package/views/Logs/Preview/tabs/LlmResponseTab.js.map +1 -0
  70. package/views/Logs/Preview/tabs/SystemPromptTab.d.ts +4 -0
  71. package/views/Logs/Preview/tabs/SystemPromptTab.js +24 -0
  72. package/views/Logs/Preview/tabs/SystemPromptTab.js.map +1 -0
  73. package/views/Logs/Preview/tabs/UserPromptTab.d.ts +4 -0
  74. package/views/Logs/Preview/tabs/UserPromptTab.js +18 -0
  75. package/views/Logs/Preview/tabs/UserPromptTab.js.map +1 -0
  76. package/views/Logs/Preview/tabs/shared.d.ts +28 -0
  77. package/views/Logs/Preview/tabs/shared.js +16 -0
  78. package/views/Logs/Preview/tabs/shared.js.map +1 -0
  79. package/views/Logs/Table/Table.d.ts +3 -6
  80. package/views/Logs/Table/Table.js +25 -16
  81. package/views/Logs/Table/Table.js.map +1 -1
  82. package/views/Logs/Table/styled.d.ts +1 -16
  83. package/views/Logs/Table/styled.js +15 -55
  84. package/views/Logs/Table/styled.js.map +1 -1
  85. package/views/Logs/Filters/FilterByTimestamp.d.ts +0 -2
  86. package/views/Logs/Filters/FilterByTimestamp.js +0 -39
  87. package/views/Logs/Filters/FilterByTimestamp.js.map +0 -1
  88. package/views/Logs/Filters/styled.d.ts +0 -4
  89. package/views/Logs/Filters/styled.js +0 -13
  90. package/views/Logs/Filters/styled.js.map +0 -1
  91. package/views/Logs/Logs.d.ts +0 -3
  92. package/views/Logs/Logs.js +0 -76
  93. package/views/Logs/Logs.js.map +0 -1
  94. package/views/Logs/Preview/styled.d.ts +0 -5
  95. package/views/Logs/Preview/styled.js +0 -32
  96. package/views/Logs/Preview/styled.js.map +0 -1
@@ -6,7 +6,5 @@ export interface TypographyProps {
6
6
  className?: string;
7
7
  style?: React.CSSProperties;
8
8
  }
9
- export declare const Text: import("@emotion/styled").StyledComponent<TypographyProps & {
10
- theme?: import("@emotion/react").Theme;
11
- }, {}, {}>;
9
+ export declare const Text: ({ use, children, className, style }: TypographyProps) => React.JSX.Element;
12
10
  export {};
@@ -1,5 +1,4 @@
1
1
  import react from "react";
2
- import styled from "@emotion/styled";
3
2
  import { Heading, Text } from "@webiny/admin-ui";
4
3
  const headingLevelMap = {
5
4
  headline1: 1,
@@ -18,23 +17,19 @@ const sizeMap = {
18
17
  button: "sm",
19
18
  overline: "sm"
20
19
  };
21
- const Typography = ({ use = "body2", children, className, style })=>{
20
+ const Text_Text = ({ use = "body2", children, className, style })=>{
21
+ const classes = `whitespace-nowrap overflow-hidden text-ellipsis ${className ?? ""}`.trim();
22
22
  if (use in headingLevelMap) return /*#__PURE__*/ react.createElement(Heading, {
23
23
  level: headingLevelMap[use],
24
- className: className,
24
+ className: classes,
25
25
  style: style
26
26
  }, children);
27
27
  return /*#__PURE__*/ react.createElement(Text, {
28
28
  size: sizeMap[use] ?? "md",
29
- className: className,
29
+ className: classes,
30
30
  style: style
31
31
  }, children);
32
32
  };
33
- const Text_Text = styled(Typography)`
34
- white-space: nowrap;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- `;
38
33
  export { Text_Text as Text };
39
34
 
40
35
  //# sourceMappingURL=Text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/Text.js","sources":["../../src/components/Text.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Text as BaseText, Heading } from \"@webiny/admin-ui\";\nimport type { HeadingLevels } from \"@webiny/admin-ui\";\n\ntype TypographyT =\n | \"headline1\"\n | \"headline2\"\n | \"headline3\"\n | \"headline4\"\n | \"headline5\"\n | \"headline6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\";\n\nexport interface TypographyProps {\n use?: TypographyT;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst headingLevelMap: Partial<Record<TypographyT, HeadingLevels>> = {\n headline1: 1,\n headline2: 2,\n headline3: 3,\n headline4: 4,\n headline5: 5,\n headline6: 6\n};\n\nconst sizeMap: Partial<Record<TypographyT, \"sm\" | \"md\">> = {\n subtitle1: \"md\",\n subtitle2: \"sm\",\n body1: \"md\",\n body2: \"sm\",\n caption: \"sm\",\n button: \"sm\",\n overline: \"sm\"\n};\n\nconst Typography = ({ use = \"body2\", children, className, style }: TypographyProps) => {\n if (use in headingLevelMap) {\n return (\n <Heading level={headingLevelMap[use]} className={className} style={style}>\n {children}\n </Heading>\n );\n }\n return (\n <BaseText size={sizeMap[use] ?? \"md\"} className={className} style={style}>\n {children}\n </BaseText>\n );\n};\n\nexport const Text = styled(Typography)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n"],"names":["headingLevelMap","sizeMap","Typography","use","children","className","style","Heading","BaseText","Text","styled"],"mappings":";;;AA2BA,MAAMA,kBAA+D;IACjE,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;AACf;AAEA,MAAMC,UAAqD;IACvD,WAAW;IACX,WAAW;IACX,OAAO;IACP,OAAO;IACP,SAAS;IACT,QAAQ;IACR,UAAU;AACd;AAEA,MAAMC,aAAa,CAAC,EAAEC,MAAM,OAAO,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAmB;IAC9E,IAAIH,OAAOH,iBACP,OAAO,WAAP,GACI,oBAACO,SAAOA;QAAC,OAAOP,eAAe,CAACG,IAAI;QAAE,WAAWE;QAAW,OAAOC;OAC9DF;IAIb,OAAO,WAAP,GACI,oBAACI,MAAQA;QAAC,MAAMP,OAAO,CAACE,IAAI,IAAI;QAAM,WAAWE;QAAW,OAAOC;OAC9DF;AAGb;AAEO,MAAMK,YAAOC,OAAOR,WAAW,CAAC;;;;AAIvC,CAAC"}
1
+ {"version":3,"file":"components/Text.js","sources":["../../src/components/Text.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text as BaseText, Heading } from \"@webiny/admin-ui\";\nimport type { HeadingLevels } from \"@webiny/admin-ui\";\n\ntype TypographyT =\n | \"headline1\"\n | \"headline2\"\n | \"headline3\"\n | \"headline4\"\n | \"headline5\"\n | \"headline6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\";\n\nexport interface TypographyProps {\n use?: TypographyT;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst headingLevelMap: Partial<Record<TypographyT, HeadingLevels>> = {\n headline1: 1,\n headline2: 2,\n headline3: 3,\n headline4: 4,\n headline5: 5,\n headline6: 6\n};\n\nconst sizeMap: Partial<Record<TypographyT, \"sm\" | \"md\">> = {\n subtitle1: \"md\",\n subtitle2: \"sm\",\n body1: \"md\",\n body2: \"sm\",\n caption: \"sm\",\n button: \"sm\",\n overline: \"sm\"\n};\n\nexport const Text = ({ use = \"body2\", children, className, style }: TypographyProps) => {\n const classes = `whitespace-nowrap overflow-hidden text-ellipsis ${className ?? \"\"}`.trim();\n\n if (use in headingLevelMap) {\n return (\n <Heading level={headingLevelMap[use]} className={classes} style={style}>\n {children}\n </Heading>\n );\n }\n return (\n <BaseText size={sizeMap[use] ?? \"md\"} className={classes} style={style}>\n {children}\n </BaseText>\n );\n};\n"],"names":["headingLevelMap","sizeMap","Text","use","children","className","style","classes","Heading","BaseText"],"mappings":";;AA0BA,MAAMA,kBAA+D;IACjE,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;AACf;AAEA,MAAMC,UAAqD;IACvD,WAAW;IACX,WAAW;IACX,OAAO;IACP,OAAO;IACP,SAAS;IACT,QAAQ;IACR,UAAU;AACd;AAEO,MAAMC,YAAO,CAAC,EAAEC,MAAM,OAAO,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAmB;IAC/E,MAAMC,UAAU,CAAC,gDAAgD,EAAEF,aAAa,IAAI,CAAC,IAAI;IAEzF,IAAIF,OAAOH,iBACP,OAAO,WAAP,GACI,oBAACQ,SAAOA;QAAC,OAAOR,eAAe,CAACG,IAAI;QAAE,WAAWI;QAAS,OAAOD;OAC5DF;IAIb,OAAO,WAAP,GACI,oBAACK,MAAQA;QAAC,MAAMR,OAAO,CAACE,IAAI,IAAI;QAAM,WAAWI;QAAS,OAAOD;OAC5DF;AAGb"}
@@ -36,6 +36,9 @@ export declare const AuditLogsListConfig: typeof ScopedAuditLogsListConfig & {
36
36
  };
37
37
  FiltersToWhere: typeof import("./Browser/FiltersToWhere.js").FiltersToWhere;
38
38
  };
39
+ Details: {
40
+ Tab: typeof import("./Details/PreviewTab.js").PreviewTab;
41
+ };
39
42
  };
40
43
  export declare const AuditLogsListWithConfig: ({ children }: {
41
44
  children: React.ReactNode;
@@ -45,5 +48,8 @@ export declare function useAuditLogsListConfig(): {
45
48
  filters: import("./Browser/Filter.js").FilterConfig[];
46
49
  filtersToWhere: import("./Browser/FiltersToWhere.js").FiltersToWhereConverter[];
47
50
  };
51
+ details: {
52
+ tabs: import("./Details/PreviewTab.js").PreviewTabConfig[];
53
+ };
48
54
  };
49
55
  export {};
@@ -1,6 +1,7 @@
1
1
  import react, { useMemo } from "react";
2
2
  import { createConfigurableComponent } from "@webiny/react-properties";
3
3
  import { Browser } from "./Browser/index.js";
4
+ import { Details } from "./Details/index.js";
4
5
  import { CompositionScope } from "@webiny/react-composition";
5
6
  const base = createConfigurableComponent("AuditLogsListConfig");
6
7
  const ScopedAuditLogsListConfig = ({ children })=>/*#__PURE__*/ react.createElement(CompositionScope, {
@@ -8,7 +9,8 @@ const ScopedAuditLogsListConfig = ({ children })=>/*#__PURE__*/ react.createElem
8
9
  }, /*#__PURE__*/ react.createElement(base.Config, null, children));
9
10
  ScopedAuditLogsListConfig.displayName = "AuditLogsListConfig";
10
11
  const AuditLogsListConfig = Object.assign(ScopedAuditLogsListConfig, {
11
- Browser: Browser
12
+ Browser: Browser,
13
+ Details: Details
12
14
  });
13
15
  const AuditLogsListWithConfig = ({ children })=>/*#__PURE__*/ react.createElement(CompositionScope, {
14
16
  name: "auditLogs"
@@ -16,6 +18,7 @@ const AuditLogsListWithConfig = ({ children })=>/*#__PURE__*/ react.createElemen
16
18
  function useAuditLogsListConfig() {
17
19
  const config = base.useConfig();
18
20
  const browser = config.browser || {};
21
+ const details = config.details || {};
19
22
  return useMemo(()=>({
20
23
  browser: {
21
24
  ...browser,
@@ -25,6 +28,12 @@ function useAuditLogsListConfig() {
25
28
  filtersToWhere: [
26
29
  ...browser.filtersToWhere || []
27
30
  ]
31
+ },
32
+ details: {
33
+ ...details,
34
+ tabs: [
35
+ ...details.tabs || []
36
+ ]
28
37
  }
29
38
  }), [
30
39
  config
@@ -1 +1 @@
1
- {"version":3,"file":"config/list/AuditLogsListConfig.js","sources":["../../../src/config/list/AuditLogsListConfig.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { createConfigurableComponent } from \"@webiny/react-properties\";\nimport type { BrowserConfig } from \"./Browser/index.js\";\nimport { Browser } from \"./Browser/index.js\";\nimport { CompositionScope } from \"@webiny/react-composition\";\n\nconst base = createConfigurableComponent<AuditLogsListConfig>(\"AuditLogsListConfig\");\n\nconst ScopedAuditLogsListConfig = ({ children }: { children: React.ReactNode }) => {\n return (\n <CompositionScope name={\"auditLogs\"}>\n <base.Config>{children}</base.Config>\n </CompositionScope>\n );\n};\n\nScopedAuditLogsListConfig.displayName = \"AuditLogsListConfig\";\n\nexport const AuditLogsListConfig = Object.assign(ScopedAuditLogsListConfig, { Browser });\nexport const AuditLogsListWithConfig = ({ children }: { children: React.ReactNode }) => {\n return (\n <CompositionScope name={\"auditLogs\"}>\n <base.WithConfig>{children}</base.WithConfig>\n </CompositionScope>\n );\n};\n\ninterface AuditLogsListConfig {\n browser: BrowserConfig;\n}\n\nexport function useAuditLogsListConfig() {\n const config = base.useConfig();\n\n const browser = config.browser || {};\n\n return useMemo(\n () => ({\n browser: {\n ...browser,\n filters: [...(browser.filters || [])],\n filtersToWhere: [...(browser.filtersToWhere || [])]\n }\n }),\n [config]\n );\n}\n"],"names":["base","createConfigurableComponent","ScopedAuditLogsListConfig","children","CompositionScope","AuditLogsListConfig","Object","Browser","AuditLogsListWithConfig","useAuditLogsListConfig","config","browser","useMemo"],"mappings":";;;;AAMA,MAAMA,OAAOC,4BAAiD;AAE9D,MAAMC,4BAA4B,CAAC,EAAEC,QAAQ,EAAiC,GACnE,WAAP,GACI,oBAACC,kBAAgBA;QAAC,MAAM;qBACpB,oBAACJ,KAAK,MAAM,QAAEG;AAK1BD,0BAA0B,WAAW,GAAG;AAEjC,MAAMG,sBAAsBC,OAAO,MAAM,CAACJ,2BAA2B;IAAEK,SAAOA;AAAC;AAC/E,MAAMC,0BAA0B,CAAC,EAAEL,QAAQ,EAAiC,GACxE,WAAP,GACI,oBAACC,kBAAgBA;QAAC,MAAM;qBACpB,oBAACJ,KAAK,UAAU,QAAEG;AASvB,SAASM;IACZ,MAAMC,SAASV,KAAK,SAAS;IAE7B,MAAMW,UAAUD,OAAO,OAAO,IAAI,CAAC;IAEnC,OAAOE,QACH,IAAO;YACH,SAAS;gBACL,GAAGD,OAAO;gBACV,SAAS;uBAAKA,QAAQ,OAAO,IAAI,EAAE;iBAAE;gBACrC,gBAAgB;uBAAKA,QAAQ,cAAc,IAAI,EAAE;iBAAE;YACvD;QACJ,IACA;QAACD;KAAO;AAEhB"}
1
+ {"version":3,"file":"config/list/AuditLogsListConfig.js","sources":["../../../src/config/list/AuditLogsListConfig.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { createConfigurableComponent } from \"@webiny/react-properties\";\nimport type { BrowserConfig } from \"./Browser/index.js\";\nimport { Browser } from \"./Browser/index.js\";\nimport type { DetailsConfig } from \"./Details/index.js\";\nimport { Details } from \"./Details/index.js\";\nimport { CompositionScope } from \"@webiny/react-composition\";\n\nconst base = createConfigurableComponent<AuditLogsListConfig>(\"AuditLogsListConfig\");\n\nconst ScopedAuditLogsListConfig = ({ children }: { children: React.ReactNode }) => {\n return (\n <CompositionScope name={\"auditLogs\"}>\n <base.Config>{children}</base.Config>\n </CompositionScope>\n );\n};\n\nScopedAuditLogsListConfig.displayName = \"AuditLogsListConfig\";\n\nexport const AuditLogsListConfig = Object.assign(ScopedAuditLogsListConfig, { Browser, Details });\nexport const AuditLogsListWithConfig = ({ children }: { children: React.ReactNode }) => {\n return (\n <CompositionScope name={\"auditLogs\"}>\n <base.WithConfig>{children}</base.WithConfig>\n </CompositionScope>\n );\n};\n\ninterface AuditLogsListConfig {\n browser: BrowserConfig;\n details: DetailsConfig;\n}\n\nexport function useAuditLogsListConfig() {\n const config = base.useConfig();\n\n const browser = config.browser || {};\n const details = config.details || {};\n\n return useMemo(\n () => ({\n browser: {\n ...browser,\n filters: [...(browser.filters || [])],\n filtersToWhere: [...(browser.filtersToWhere || [])]\n },\n details: {\n ...details,\n tabs: [...(details.tabs || [])]\n }\n }),\n [config]\n );\n}\n"],"names":["base","createConfigurableComponent","ScopedAuditLogsListConfig","children","CompositionScope","AuditLogsListConfig","Object","Browser","Details","AuditLogsListWithConfig","useAuditLogsListConfig","config","browser","details","useMemo"],"mappings":";;;;;AAQA,MAAMA,OAAOC,4BAAiD;AAE9D,MAAMC,4BAA4B,CAAC,EAAEC,QAAQ,EAAiC,GACnE,WAAP,GACI,oBAACC,kBAAgBA;QAAC,MAAM;qBACpB,oBAACJ,KAAK,MAAM,QAAEG;AAK1BD,0BAA0B,WAAW,GAAG;AAEjC,MAAMG,sBAAsBC,OAAO,MAAM,CAACJ,2BAA2B;IAAEK,SAAOA;IAAEC,SAAOA;AAAC;AACxF,MAAMC,0BAA0B,CAAC,EAAEN,QAAQ,EAAiC,GACxE,WAAP,GACI,oBAACC,kBAAgBA;QAAC,MAAM;qBACpB,oBAACJ,KAAK,UAAU,QAAEG;AAUvB,SAASO;IACZ,MAAMC,SAASX,KAAK,SAAS;IAE7B,MAAMY,UAAUD,OAAO,OAAO,IAAI,CAAC;IACnC,MAAME,UAAUF,OAAO,OAAO,IAAI,CAAC;IAEnC,OAAOG,QACH,IAAO;YACH,SAAS;gBACL,GAAGF,OAAO;gBACV,SAAS;uBAAKA,QAAQ,OAAO,IAAI,EAAE;iBAAE;gBACrC,gBAAgB;uBAAKA,QAAQ,cAAc,IAAI,EAAE;iBAAE;YACvD;YACA,SAAS;gBACL,GAAGC,OAAO;gBACV,MAAM;uBAAKA,QAAQ,IAAI,IAAI,EAAE;iBAAE;YACnC;QACJ,IACA;QAACF;KAAO;AAEhB"}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { IAuditLog } from "../../../types.js";
3
+ export interface PreviewTabConfig {
4
+ name: string;
5
+ label: string;
6
+ element: React.ReactElement;
7
+ canRender?: (auditLog: IAuditLog) => boolean;
8
+ }
9
+ export interface PreviewTabProps {
10
+ name: string;
11
+ label: string;
12
+ element: React.ReactElement;
13
+ canRender?: (auditLog: IAuditLog) => boolean;
14
+ }
15
+ export declare const PreviewTab: ({ name, label, element, canRender }: PreviewTabProps) => React.JSX.Element;
@@ -0,0 +1,32 @@
1
+ import react from "react";
2
+ import { Property, useIdGenerator } from "@webiny/react-properties";
3
+ const PreviewTab = ({ name, label, element, canRender })=>{
4
+ const getId = useIdGenerator("previewTab");
5
+ return /*#__PURE__*/ react.createElement(Property, {
6
+ id: "details",
7
+ name: "details"
8
+ }, /*#__PURE__*/ react.createElement(Property, {
9
+ id: getId(name),
10
+ name: "tabs",
11
+ array: true
12
+ }, /*#__PURE__*/ react.createElement(Property, {
13
+ id: getId(name, "name"),
14
+ name: "name",
15
+ value: name
16
+ }), /*#__PURE__*/ react.createElement(Property, {
17
+ id: getId(name, "label"),
18
+ name: "label",
19
+ value: label
20
+ }), /*#__PURE__*/ react.createElement(Property, {
21
+ id: getId(name, "element"),
22
+ name: "element",
23
+ value: element
24
+ }), canRender ? /*#__PURE__*/ react.createElement(Property, {
25
+ id: getId(name, "canRender"),
26
+ name: "canRender",
27
+ value: canRender
28
+ }) : null));
29
+ };
30
+ export { PreviewTab };
31
+
32
+ //# sourceMappingURL=PreviewTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config/list/Details/PreviewTab.js","sources":["../../../../src/config/list/Details/PreviewTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { Property, useIdGenerator } from \"@webiny/react-properties\";\nimport type { IAuditLog } from \"~/types.js\";\n\nexport interface PreviewTabConfig {\n name: string;\n label: string;\n element: React.ReactElement;\n canRender?: (auditLog: IAuditLog) => boolean;\n}\n\nexport interface PreviewTabProps {\n name: string;\n label: string;\n element: React.ReactElement;\n canRender?: (auditLog: IAuditLog) => boolean;\n}\n\nexport const PreviewTab = ({ name, label, element, canRender }: PreviewTabProps) => {\n const getId = useIdGenerator(\"previewTab\");\n\n return (\n <Property id=\"details\" name={\"details\"}>\n <Property id={getId(name)} name={\"tabs\"} array={true}>\n <Property id={getId(name, \"name\")} name={\"name\"} value={name} />\n <Property id={getId(name, \"label\")} name={\"label\"} value={label} />\n <Property id={getId(name, \"element\")} name={\"element\"} value={element} />\n {canRender ? (\n <Property id={getId(name, \"canRender\")} name={\"canRender\"} value={canRender} />\n ) : null}\n </Property>\n </Property>\n );\n};\n"],"names":["PreviewTab","name","label","element","canRender","getId","useIdGenerator","Property"],"mappings":";;AAkBO,MAAMA,aAAa,CAAC,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,SAAS,EAAmB;IAC3E,MAAMC,QAAQC,eAAe;IAE7B,OAAO,WAAP,GACI,oBAACC,UAAQA;QAAC,IAAG;QAAU,MAAM;qBACzB,oBAACA,UAAQA;QAAC,IAAIF,MAAMJ;QAAO,MAAM;QAAQ,OAAO;qBAC5C,oBAACM,UAAQA;QAAC,IAAIF,MAAMJ,MAAM;QAAS,MAAM;QAAQ,OAAOA;sBACxD,oBAACM,UAAQA;QAAC,IAAIF,MAAMJ,MAAM;QAAU,MAAM;QAAS,OAAOC;sBAC1D,oBAACK,UAAQA;QAAC,IAAIF,MAAMJ,MAAM;QAAY,MAAM;QAAW,OAAOE;QAC7DC,YAAY,WAAZA,GACG,oBAACG,UAAQA;QAAC,IAAIF,MAAMJ,MAAM;QAAc,MAAM;QAAa,OAAOG;SAClE;AAIpB"}
@@ -0,0 +1,8 @@
1
+ import type { PreviewTabConfig } from "./PreviewTab.js";
2
+ import { PreviewTab } from "./PreviewTab.js";
3
+ export interface DetailsConfig {
4
+ tabs: PreviewTabConfig[];
5
+ }
6
+ export declare const Details: {
7
+ Tab: typeof PreviewTab;
8
+ };
@@ -0,0 +1,7 @@
1
+ import { PreviewTab } from "./PreviewTab.js";
2
+ const Details = {
3
+ Tab: PreviewTab
4
+ };
5
+ export { Details };
6
+
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config/list/Details/index.js","sources":["../../../../src/config/list/Details/index.ts"],"sourcesContent":["import type { PreviewTabConfig } from \"./PreviewTab.js\";\nimport { PreviewTab } from \"./PreviewTab.js\";\n\nexport interface DetailsConfig {\n tabs: PreviewTabConfig[];\n}\n\nexport const Details = {\n Tab: PreviewTab\n};\n"],"names":["Details","PreviewTab"],"mappings":";AAOO,MAAMA,UAAU;IACnB,KAAKC;AACT"}
package/hooks/schema.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import zod from "zod";
2
- import { ActionType } from "../types.js";
3
2
  export declare const auditLogSchema: zod.ZodObject<{
4
3
  id: zod.ZodString;
5
4
  createdBy: zod.ZodObject<{
@@ -9,7 +8,7 @@ export declare const auditLogSchema: zod.ZodObject<{
9
8
  }, zod.core.$strip>;
10
9
  createdOn: zod.ZodPreprocess<zod.ZodDate>;
11
10
  app: zod.ZodString;
12
- action: zod.ZodEnum<typeof ActionType>;
11
+ action: zod.ZodString;
13
12
  message: zod.ZodString;
14
13
  entity: zod.ZodString;
15
14
  entityId: zod.ZodString;
@@ -26,7 +25,7 @@ export declare const listAuditLogsSchema: zod.ZodArray<zod.ZodObject<{
26
25
  }, zod.core.$strip>;
27
26
  createdOn: zod.ZodPreprocess<zod.ZodDate>;
28
27
  app: zod.ZodString;
29
- action: zod.ZodEnum<typeof ActionType>;
28
+ action: zod.ZodString;
30
29
  message: zod.ZodString;
31
30
  entity: zod.ZodString;
32
31
  entityId: zod.ZodString;
package/hooks/schema.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import zod from "zod";
2
- import { ActionType } from "../types.js";
3
2
  const auditLogSchema = zod.object({
4
3
  id: zod.string(),
5
4
  createdBy: zod.object({
@@ -12,7 +11,7 @@ const auditLogSchema = zod.object({
12
11
  return value;
13
12
  }, zod.date()),
14
13
  app: zod.string(),
15
- action: zod.nativeEnum(ActionType),
14
+ action: zod.string(),
16
15
  message: zod.string(),
17
16
  entity: zod.string(),
18
17
  entityId: zod.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"hooks/schema.js","sources":["../../src/hooks/schema.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ActionType } from \"~/types.js\";\n\nexport const auditLogSchema = zod.object({\n id: zod.string(),\n createdBy: zod.object({\n id: zod.string(),\n displayName: zod.string().optional(),\n type: zod.string().optional()\n }),\n createdOn: zod.preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return value;\n }, zod.date()),\n app: zod.string(),\n action: zod.nativeEnum(ActionType),\n message: zod.string(),\n entity: zod.string(),\n entityId: zod.string(),\n tags: zod.array(zod.string()),\n expiresAt: zod\n .preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return undefined;\n }, zod.date().optional().nullish())\n .optional()\n .nullish()\n .transform(value => {\n return value || undefined;\n }),\n content: zod.string()\n});\n\nexport const listAuditLogsSchema = zod.array(auditLogSchema);\n"],"names":["auditLogSchema","zod","value","Date","ActionType","undefined","listAuditLogsSchema"],"mappings":";;AAGO,MAAMA,iBAAiBC,IAAI,MAAM,CAAC;IACrC,IAAIA,IAAI,MAAM;IACd,WAAWA,IAAI,MAAM,CAAC;QAClB,IAAIA,IAAI,MAAM;QACd,aAAaA,IAAI,MAAM,GAAG,QAAQ;QAClC,MAAMA,IAAI,MAAM,GAAG,QAAQ;IAC/B;IACA,WAAWA,IAAI,UAAU,CAACC,CAAAA;QACtB,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;QAEpB,OAAOA;IACX,GAAGD,IAAI,IAAI;IACX,KAAKA,IAAI,MAAM;IACf,QAAQA,IAAI,UAAU,CAACG;IACvB,SAASH,IAAI,MAAM;IACnB,QAAQA,IAAI,MAAM;IAClB,UAAUA,IAAI,MAAM;IACpB,MAAMA,IAAI,KAAK,CAACA,IAAI,MAAM;IAC1B,WAAWA,IAAAA,UACI,CAACC,CAAAA;QACR,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;IAGxB,GAAGD,IAAI,IAAI,GAAG,QAAQ,GAAG,OAAO,IAC/B,QAAQ,GACR,OAAO,GACP,SAAS,CAACC,CAAAA,QACAA,SAASG;IAExB,SAASJ,IAAI,MAAM;AACvB;AAEO,MAAMK,sBAAsBL,IAAI,KAAK,CAACD"}
1
+ {"version":3,"file":"hooks/schema.js","sources":["../../src/hooks/schema.ts"],"sourcesContent":["import zod from \"zod\";\n\nexport const auditLogSchema = zod.object({\n id: zod.string(),\n createdBy: zod.object({\n id: zod.string(),\n displayName: zod.string().optional(),\n type: zod.string().optional()\n }),\n createdOn: zod.preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return value;\n }, zod.date()),\n app: zod.string(),\n action: zod.string(),\n message: zod.string(),\n entity: zod.string(),\n entityId: zod.string(),\n tags: zod.array(zod.string()),\n expiresAt: zod\n .preprocess(value => {\n if (typeof value === \"string\" || value instanceof Date) {\n return new Date(value);\n }\n return undefined;\n }, zod.date().optional().nullish())\n .optional()\n .nullish()\n .transform(value => {\n return value || undefined;\n }),\n content: zod.string()\n});\n\nexport const listAuditLogsSchema = zod.array(auditLogSchema);\n"],"names":["auditLogSchema","zod","value","Date","undefined","listAuditLogsSchema"],"mappings":";AAEO,MAAMA,iBAAiBC,IAAI,MAAM,CAAC;IACrC,IAAIA,IAAI,MAAM;IACd,WAAWA,IAAI,MAAM,CAAC;QAClB,IAAIA,IAAI,MAAM;QACd,aAAaA,IAAI,MAAM,GAAG,QAAQ;QAClC,MAAMA,IAAI,MAAM,GAAG,QAAQ;IAC/B;IACA,WAAWA,IAAI,UAAU,CAACC,CAAAA;QACtB,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;QAEpB,OAAOA;IACX,GAAGD,IAAI,IAAI;IACX,KAAKA,IAAI,MAAM;IACf,QAAQA,IAAI,MAAM;IAClB,SAASA,IAAI,MAAM;IACnB,QAAQA,IAAI,MAAM;IAClB,UAAUA,IAAI,MAAM;IACpB,MAAMA,IAAI,KAAK,CAACA,IAAI,MAAM;IAC1B,WAAWA,IAAAA,UACI,CAACC,CAAAA;QACR,IAAI,AAAiB,YAAjB,OAAOA,SAAsBA,iBAAiBC,MAC9C,OAAO,IAAIA,KAAKD;IAGxB,GAAGD,IAAI,IAAI,GAAG,QAAQ,GAAG,OAAO,IAC/B,QAAQ,GACR,OAAO,GACP,SAAS,CAACC,CAAAA,QACAA,SAASE;IAExB,SAASH,IAAI,MAAM;AACvB;AAEO,MAAMI,sBAAsBJ,IAAI,KAAK,CAACD"}
@@ -12,8 +12,5 @@ export interface UseAuditLogs {
12
12
  after?: string;
13
13
  sorting: DataTableSorting;
14
14
  setSorting: OnDataTableSortingChange;
15
- showingFilters: boolean;
16
- showFilters: () => void;
17
- hideFilters: () => void;
18
15
  }
19
16
  export declare const useAuditLogsList: () => UseAuditLogs;
@@ -15,13 +15,20 @@ const useAuditLogsList = ()=>{
15
15
  hasMoreItems: false,
16
16
  cursor: null
17
17
  });
18
+ const resetPagination = useCallback(()=>{
19
+ setAccumulatedRecords([]);
20
+ setMeta({
21
+ hasMoreItems: false,
22
+ cursor: null
23
+ });
24
+ }, []);
18
25
  const setWhere = useCallback((where)=>{
19
26
  setVariables((prev)=>({
20
27
  ...prev,
21
28
  where,
22
29
  after: void 0
23
30
  }));
24
- setAccumulatedRecords([]);
31
+ resetPagination();
25
32
  }, []);
26
33
  const setSort = useCallback((sort)=>{
27
34
  setVariables((prev)=>({
@@ -29,7 +36,7 @@ const useAuditLogsList = ()=>{
29
36
  sort,
30
37
  after: void 0
31
38
  }));
32
- setAccumulatedRecords([]);
39
+ resetPagination();
33
40
  }, []);
34
41
  const setAfter = useCallback((after)=>{
35
42
  setVariables((prev)=>({
@@ -43,7 +50,6 @@ const useAuditLogsList = ()=>{
43
50
  limit
44
51
  }));
45
52
  }, []);
46
- const [showingFilters, setShowingFilters] = useState(false);
47
53
  const [acoSorting, setAcoSorting] = useState([]);
48
54
  useEffect(()=>{
49
55
  const sort = acoSorting[0];
@@ -81,20 +87,13 @@ const useAuditLogsList = ()=>{
81
87
  records: accumulatedRecords,
82
88
  meta,
83
89
  listMoreRecords: ()=>{
84
- setAfter(meta.cursor || void 0);
90
+ if (!loading && meta.cursor) setAfter(meta.cursor);
85
91
  },
86
92
  setWhere,
87
93
  sorting,
88
94
  setSorting: setAcoSorting,
89
95
  setLimit,
90
- isListLoadingMore: loading && !!variables.after,
91
- showingFilters,
92
- showFilters: ()=>{
93
- setShowingFilters(true);
94
- },
95
- hideFilters: ()=>{
96
- setShowingFilters(false);
97
- }
96
+ isListLoadingMore: loading && !!variables.after
98
97
  };
99
98
  };
100
99
  export { useAuditLogsList };
@@ -1 +1 @@
1
- {"version":3,"file":"hooks/useAuditLogsList.js","sources":["../../src/hooks/useAuditLogsList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { ListAuditLogsFeature } from \"~/features/listAuditLogs/index.js\";\nimport type { IListAuditLogsVariablesWhere } from \"~/hooks/graphql.js\";\nimport type { IAuditLog, IAuditLogsMeta } from \"~/types.js\";\nimport type { OnDataTableSortingChange, DataTableSorting } from \"@webiny/admin-ui\";\n\nexport interface UseAuditLogs {\n isListLoading: boolean;\n isListLoadingMore: boolean;\n records: IAuditLog[];\n meta: IAuditLogsMeta;\n listMoreRecords: () => void;\n setWhere: (where: Partial<IListAuditLogsVariablesWhere>) => void;\n setLimit: (limit: number) => void;\n after?: string;\n sorting: DataTableSorting;\n setSorting: OnDataTableSortingChange;\n showingFilters: boolean;\n showFilters: () => void;\n hideFilters: () => void;\n}\n\ninterface ListVariables {\n where: Record<string, unknown>;\n after: string | undefined;\n sort: \"ASC\" | \"DESC\";\n limit: number;\n}\n\nexport const useAuditLogsList = (): UseAuditLogs => {\n const { useCase } = useFeature(ListAuditLogsFeature);\n\n const [variables, setVariables] = useState<ListVariables>({\n where: {},\n after: undefined,\n sort: \"DESC\",\n limit: 25\n });\n\n const [accumulatedRecords, setAccumulatedRecords] = useState<IAuditLog[]>([]);\n const [loading, setLoading] = useState(true);\n const [meta, setMeta] = useState<IAuditLogsMeta>({\n hasMoreItems: false,\n cursor: null\n });\n\n const setWhere = useCallback((where: Partial<IListAuditLogsVariablesWhere>) => {\n setVariables(prev => ({ ...prev, where, after: undefined }));\n setAccumulatedRecords([]);\n }, []);\n\n const setSort = useCallback((sort: \"ASC\" | \"DESC\") => {\n setVariables(prev => ({ ...prev, sort, after: undefined }));\n setAccumulatedRecords([]);\n }, []);\n\n const setAfter = useCallback((after?: string) => {\n setVariables(prev => ({ ...prev, after }));\n }, []);\n\n const setLimit = useCallback((limit: number) => {\n setVariables(prev => ({ ...prev, limit }));\n }, []);\n\n const [showingFilters, setShowingFilters] = useState(false);\n const [acoSorting, setAcoSorting] = useState<DataTableSorting>([]);\n\n useEffect(() => {\n const sort = acoSorting[0];\n if (!sort) {\n return;\n }\n setSort(sort.desc ? \"DESC\" : \"ASC\");\n }, [acoSorting]);\n\n const requestIdRef = useRef(0);\n\n useEffect(() => {\n setLoading(true);\n const requestId = ++requestIdRef.current;\n\n useCase.execute(variables).then(result => {\n if (requestId !== requestIdRef.current) {\n return;\n }\n\n if (variables.after) {\n setAccumulatedRecords(prev => [...prev, ...result.records]);\n } else {\n setAccumulatedRecords(result.records);\n }\n\n setMeta(result.meta);\n setLoading(false);\n });\n }, [variables]);\n\n const sorting = useMemo((): DataTableSorting => {\n return [\n {\n id: \"createdOn\",\n desc: variables.sort === \"DESC\"\n }\n ];\n }, [variables.sort]);\n\n return {\n isListLoading: loading,\n records: accumulatedRecords,\n meta,\n listMoreRecords: () => {\n setAfter(meta.cursor || undefined);\n },\n setWhere,\n sorting,\n setSorting: setAcoSorting,\n setLimit,\n isListLoadingMore: loading && !!variables.after,\n showingFilters,\n showFilters: () => {\n setShowingFilters(true);\n },\n hideFilters: () => {\n setShowingFilters(false);\n }\n };\n};\n"],"names":["useAuditLogsList","useCase","useFeature","ListAuditLogsFeature","variables","setVariables","useState","undefined","accumulatedRecords","setAccumulatedRecords","loading","setLoading","meta","setMeta","setWhere","useCallback","where","prev","setSort","sort","setAfter","after","setLimit","limit","showingFilters","setShowingFilters","acoSorting","setAcoSorting","useEffect","requestIdRef","useRef","requestId","result","sorting","useMemo"],"mappings":";;;AA8BO,MAAMA,mBAAmB;IAC5B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAE/B,MAAM,CAACC,WAAWC,aAAa,GAAGC,SAAwB;QACtD,OAAO,CAAC;QACR,OAAOC;QACP,MAAM;QACN,OAAO;IACX;IAEA,MAAM,CAACC,oBAAoBC,sBAAsB,GAAGH,SAAsB,EAAE;IAC5E,MAAM,CAACI,SAASC,WAAW,GAAGL,SAAS;IACvC,MAAM,CAACM,MAAMC,QAAQ,GAAGP,SAAyB;QAC7C,cAAc;QACd,QAAQ;IACZ;IAEA,MAAMQ,WAAWC,YAAY,CAACC;QAC1BX,aAAaY,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAED;gBAAO,OAAOT;YAAU;QACzDE,sBAAsB,EAAE;IAC5B,GAAG,EAAE;IAEL,MAAMS,UAAUH,YAAY,CAACI;QACzBd,aAAaY,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEE;gBAAM,OAAOZ;YAAU;QACxDE,sBAAsB,EAAE;IAC5B,GAAG,EAAE;IAEL,MAAMW,WAAWL,YAAY,CAACM;QAC1BhB,aAAaY,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEI;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAMC,WAAWP,YAAY,CAACQ;QAC1BlB,aAAaY,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEM;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGnB,SAAS;IACrD,MAAM,CAACoB,YAAYC,cAAc,GAAGrB,SAA2B,EAAE;IAEjEsB,UAAU;QACN,MAAMT,OAAOO,UAAU,CAAC,EAAE;QAC1B,IAAI,CAACP,MACD;QAEJD,QAAQC,KAAK,IAAI,GAAG,SAAS;IACjC,GAAG;QAACO;KAAW;IAEf,MAAMG,eAAeC,OAAO;IAE5BF,UAAU;QACNjB,WAAW;QACX,MAAMoB,YAAY,EAAEF,aAAa,OAAO;QAExC5B,QAAQ,OAAO,CAACG,WAAW,IAAI,CAAC4B,CAAAA;YAC5B,IAAID,cAAcF,aAAa,OAAO,EAClC;YAGAzB,UAAU,KAAK,GACfK,sBAAsBQ,CAAAA,OAAQ;uBAAIA;uBAASe,OAAO,OAAO;iBAAC,IAE1DvB,sBAAsBuB,OAAO,OAAO;YAGxCnB,QAAQmB,OAAO,IAAI;YACnBrB,WAAW;QACf;IACJ,GAAG;QAACP;KAAU;IAEd,MAAM6B,UAAUC,QAAQ,IACb;YACH;gBACI,IAAI;gBACJ,MAAM9B,AAAmB,WAAnBA,UAAU,IAAI;YACxB;SACH,EACF;QAACA,UAAU,IAAI;KAAC;IAEnB,OAAO;QACH,eAAeM;QACf,SAASF;QACTI;QACA,iBAAiB;YACbQ,SAASR,KAAK,MAAM,IAAIL;QAC5B;QACAO;QACAmB;QACA,YAAYN;QACZL;QACA,mBAAmBZ,WAAW,CAAC,CAACN,UAAU,KAAK;QAC/CoB;QACA,aAAa;YACTC,kBAAkB;QACtB;QACA,aAAa;YACTA,kBAAkB;QACtB;IACJ;AACJ"}
1
+ {"version":3,"file":"hooks/useAuditLogsList.js","sources":["../../src/hooks/useAuditLogsList.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { ListAuditLogsFeature } from \"~/features/listAuditLogs/index.js\";\nimport type { IListAuditLogsVariablesWhere } from \"~/hooks/graphql.js\";\nimport type { IAuditLog, IAuditLogsMeta } from \"~/types.js\";\nimport type { OnDataTableSortingChange, DataTableSorting } from \"@webiny/admin-ui\";\n\nexport interface UseAuditLogs {\n isListLoading: boolean;\n isListLoadingMore: boolean;\n records: IAuditLog[];\n meta: IAuditLogsMeta;\n listMoreRecords: () => void;\n setWhere: (where: Partial<IListAuditLogsVariablesWhere>) => void;\n setLimit: (limit: number) => void;\n after?: string;\n sorting: DataTableSorting;\n setSorting: OnDataTableSortingChange;\n}\n\ninterface ListVariables {\n where: Record<string, unknown>;\n after: string | undefined;\n sort: \"ASC\" | \"DESC\";\n limit: number;\n}\n\nexport const useAuditLogsList = (): UseAuditLogs => {\n const { useCase } = useFeature(ListAuditLogsFeature);\n\n const [variables, setVariables] = useState<ListVariables>({\n where: {},\n after: undefined,\n sort: \"DESC\",\n limit: 25\n });\n\n const [accumulatedRecords, setAccumulatedRecords] = useState<IAuditLog[]>([]);\n const [loading, setLoading] = useState(true);\n const [meta, setMeta] = useState<IAuditLogsMeta>({\n hasMoreItems: false,\n cursor: null\n });\n\n const resetPagination = useCallback(() => {\n setAccumulatedRecords([]);\n setMeta({ hasMoreItems: false, cursor: null });\n }, []);\n\n const setWhere = useCallback((where: Partial<IListAuditLogsVariablesWhere>) => {\n setVariables(prev => ({ ...prev, where, after: undefined }));\n resetPagination();\n }, []);\n\n const setSort = useCallback((sort: \"ASC\" | \"DESC\") => {\n setVariables(prev => ({ ...prev, sort, after: undefined }));\n resetPagination();\n }, []);\n\n const setAfter = useCallback((after?: string) => {\n setVariables(prev => ({ ...prev, after }));\n }, []);\n\n const setLimit = useCallback((limit: number) => {\n setVariables(prev => ({ ...prev, limit }));\n }, []);\n\n const [acoSorting, setAcoSorting] = useState<DataTableSorting>([]);\n\n useEffect(() => {\n const sort = acoSorting[0];\n if (!sort) {\n return;\n }\n setSort(sort.desc ? \"DESC\" : \"ASC\");\n }, [acoSorting]);\n\n const requestIdRef = useRef(0);\n\n useEffect(() => {\n setLoading(true);\n const requestId = ++requestIdRef.current;\n\n useCase.execute(variables).then(result => {\n if (requestId !== requestIdRef.current) {\n return;\n }\n\n if (variables.after) {\n setAccumulatedRecords(prev => [...prev, ...result.records]);\n } else {\n setAccumulatedRecords(result.records);\n }\n\n setMeta(result.meta);\n setLoading(false);\n });\n }, [variables]);\n\n const sorting = useMemo((): DataTableSorting => {\n return [\n {\n id: \"createdOn\",\n desc: variables.sort === \"DESC\"\n }\n ];\n }, [variables.sort]);\n\n return {\n isListLoading: loading,\n records: accumulatedRecords,\n meta,\n listMoreRecords: () => {\n if (!loading && meta.cursor) {\n setAfter(meta.cursor);\n }\n },\n setWhere,\n sorting,\n setSorting: setAcoSorting,\n setLimit,\n isListLoadingMore: loading && !!variables.after\n };\n};\n"],"names":["useAuditLogsList","useCase","useFeature","ListAuditLogsFeature","variables","setVariables","useState","undefined","accumulatedRecords","setAccumulatedRecords","loading","setLoading","meta","setMeta","resetPagination","useCallback","setWhere","where","prev","setSort","sort","setAfter","after","setLimit","limit","acoSorting","setAcoSorting","useEffect","requestIdRef","useRef","requestId","result","sorting","useMemo"],"mappings":";;;AA2BO,MAAMA,mBAAmB;IAC5B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAE/B,MAAM,CAACC,WAAWC,aAAa,GAAGC,SAAwB;QACtD,OAAO,CAAC;QACR,OAAOC;QACP,MAAM;QACN,OAAO;IACX;IAEA,MAAM,CAACC,oBAAoBC,sBAAsB,GAAGH,SAAsB,EAAE;IAC5E,MAAM,CAACI,SAASC,WAAW,GAAGL,SAAS;IACvC,MAAM,CAACM,MAAMC,QAAQ,GAAGP,SAAyB;QAC7C,cAAc;QACd,QAAQ;IACZ;IAEA,MAAMQ,kBAAkBC,YAAY;QAChCN,sBAAsB,EAAE;QACxBI,QAAQ;YAAE,cAAc;YAAO,QAAQ;QAAK;IAChD,GAAG,EAAE;IAEL,MAAMG,WAAWD,YAAY,CAACE;QAC1BZ,aAAaa,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAED;gBAAO,OAAOV;YAAU;QACzDO;IACJ,GAAG,EAAE;IAEL,MAAMK,UAAUJ,YAAY,CAACK;QACzBf,aAAaa,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEE;gBAAM,OAAOb;YAAU;QACxDO;IACJ,GAAG,EAAE;IAEL,MAAMO,WAAWN,YAAY,CAACO;QAC1BjB,aAAaa,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEI;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAMC,WAAWR,YAAY,CAACS;QAC1BnB,aAAaa,CAAAA,OAAS;gBAAE,GAAGA,IAAI;gBAAEM;YAAM;IAC3C,GAAG,EAAE;IAEL,MAAM,CAACC,YAAYC,cAAc,GAAGpB,SAA2B,EAAE;IAEjEqB,UAAU;QACN,MAAMP,OAAOK,UAAU,CAAC,EAAE;QAC1B,IAAI,CAACL,MACD;QAEJD,QAAQC,KAAK,IAAI,GAAG,SAAS;IACjC,GAAG;QAACK;KAAW;IAEf,MAAMG,eAAeC,OAAO;IAE5BF,UAAU;QACNhB,WAAW;QACX,MAAMmB,YAAY,EAAEF,aAAa,OAAO;QAExC3B,QAAQ,OAAO,CAACG,WAAW,IAAI,CAAC2B,CAAAA;YAC5B,IAAID,cAAcF,aAAa,OAAO,EAClC;YAGAxB,UAAU,KAAK,GACfK,sBAAsBS,CAAAA,OAAQ;uBAAIA;uBAASa,OAAO,OAAO;iBAAC,IAE1DtB,sBAAsBsB,OAAO,OAAO;YAGxClB,QAAQkB,OAAO,IAAI;YACnBpB,WAAW;QACf;IACJ,GAAG;QAACP;KAAU;IAEd,MAAM4B,UAAUC,QAAQ,IACb;YACH;gBACI,IAAI;gBACJ,MAAM7B,AAAmB,WAAnBA,UAAU,IAAI;YACxB;SACH,EACF;QAACA,UAAU,IAAI;KAAC;IAEnB,OAAO;QACH,eAAeM;QACf,SAASF;QACTI;QACA,iBAAiB;YACb,IAAI,CAACF,WAAWE,KAAK,MAAM,EACvBS,SAAST,KAAK,MAAM;QAE5B;QACAI;QACAgB;QACA,YAAYN;QACZH;QACA,mBAAmBb,WAAW,CAAC,CAACN,UAAU,KAAK;IACnD;AACJ"}
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import react from "react";
2
- import { AdminConfig, AdminLayout, HasPermission, RegisterFeature, useRouter, useWcp } from "@webiny/app-admin";
2
+ import { AdminConfig, AdminLayout, HasPermission, RegisterFeature, useFeatureFlags, useRouter } from "@webiny/app-admin";
3
3
  import { ReactComponent } from "@webiny/icons/manage_search.svg";
4
4
  import { LogsModule } from "./views/Logs/LogsModule.js";
5
5
  import { SecurityPermission } from "./SecurityPermission.js";
@@ -8,16 +8,20 @@ import { AuditLogsListWithConfig } from "./config/list/index.js";
8
8
  import { Routes } from "./routes.js";
9
9
  import { AlPermissionsFeature } from "./features/permissions/feature.js";
10
10
  import { ListAuditLogsFeature } from "./features/listAuditLogs/index.js";
11
+ import { AuditLogDetailsPresenterFeature } from "./views/Logs/Preview/feature.js";
12
+ import { AiPromptPreviewTabs } from "./views/Logs/Preview/tabs/AiPromptTabs.js";
11
13
  const { Menu: Menu, Route: Route } = AdminConfig;
12
14
  const AuditLogs = ()=>{
13
- const wcp = useWcp();
15
+ const featureFlags = useFeatureFlags();
14
16
  const router = useRouter();
15
- if (!wcp.canUseAuditLogs()) return null;
17
+ if (!featureFlags.isEnabled("auditLogs")) return null;
16
18
  return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
17
19
  feature: AlPermissionsFeature
18
20
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
19
21
  feature: ListAuditLogsFeature
20
- }), /*#__PURE__*/ react.createElement(LogsModule, null), /*#__PURE__*/ react.createElement(SecurityPermission, null), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
22
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
23
+ feature: AuditLogDetailsPresenterFeature
24
+ }), /*#__PURE__*/ react.createElement(LogsModule, null), /*#__PURE__*/ react.createElement(SecurityPermission, null), /*#__PURE__*/ react.createElement(AiPromptPreviewTabs, null), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
21
25
  any: [
22
26
  "al.*"
23
27
  ]
@@ -36,7 +40,10 @@ const AuditLogs = ()=>{
36
40
  route: Routes.AuditLogsList,
37
41
  element: /*#__PURE__*/ react.createElement(AdminLayout, {
38
42
  title: "Audit Logs - Logs"
39
- }, /*#__PURE__*/ react.createElement(AuditLogsListWithConfig, null, /*#__PURE__*/ react.createElement(LogsView, null)))
43
+ }, /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
44
+ name: "auditLogs",
45
+ label: "Audit Logs"
46
+ }), /*#__PURE__*/ react.createElement(AuditLogsListWithConfig, null, /*#__PURE__*/ react.createElement(LogsView, null)))
40
47
  }))));
41
48
  };
42
49
  export { AuditLogs };
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, RegisterFeature, useWcp } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { SecurityPermission } from \"~/SecurityPermission.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { AlPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { ListAuditLogsFeature } from \"~/features/listAuditLogs/index.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const wcp = useWcp();\n const router = useRouter();\n\n if (!wcp.canUseAuditLogs()) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={AlPermissionsFeature} />\n <RegisterFeature feature={ListAuditLogsFeature} />\n <LogsModule />\n <SecurityPermission />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n </>\n );\n};\n"],"names":["Menu","Route","AdminConfig","AuditLogs","wcp","useWcp","router","useRouter","RegisterFeature","AlPermissionsFeature","ListAuditLogsFeature","LogsModule","SecurityPermission","HasPermission","Icon","Routes","AdminLayout","AuditLogsListWithConfig","LogsView"],"mappings":";;;;;;;;;;AAaA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;AAEjB,MAAMC,YAAY;IACrB,MAAMC,MAAMC;IACZ,MAAMC,SAASC;IAEf,IAAI,CAACH,IAAI,eAAe,IACpB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACI,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACC,YAAUA,OAAAA,WAAAA,GACX,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACV,aAAWA,MAAAA,WAAAA,GACR,oBAACW,eAAaA;QAAC,KAAK;YAAC;SAAO;qBACxB,oBAACb,MAAIA;QACD,MAAK;QACL;QACA,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,oBAAM,oBAACA,KAAK,IAAI,CAAC,IAAI;gBAAC,uBAAS,oBAACc,gBAAIA;gBAAK,OAAO;;YAChD,IAAIR,OAAO,OAAO,CAACS,OAAO,aAAa;;sBAInD,oBAACd,OAAKA;QACF,OAAOc,OAAO,aAAa;QAC3B,uBACI,oBAACC,aAAWA;YAAC,OAAO;yBAChB,oBAACC,yBAAuBA,MAAAA,WAAAA,GACpB,oBAACC,UAAQA;;AAS7C"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { ReactComponent as Icon } from \"@webiny/icons/manage_search.svg\";\nimport { AdminConfig, AdminLayout, RegisterFeature, useFeatureFlags } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { LogsModule } from \"~/views/Logs/LogsModule.js\";\nimport { SecurityPermission } from \"~/SecurityPermission.js\";\nimport { LogsView } from \"~/views/Logs/LogsView.js\";\nimport { AuditLogsListWithConfig } from \"~/config/list/index.js\";\nimport { Routes } from \"~/routes.js\";\nimport { AlPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { ListAuditLogsFeature } from \"~/features/listAuditLogs/index.js\";\nimport { AuditLogDetailsPresenterFeature } from \"~/views/Logs/Preview/feature.js\";\nimport { AiPromptPreviewTabs } from \"~/views/Logs/Preview/tabs/AiPromptTabs.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const AuditLogs = () => {\n const featureFlags = useFeatureFlags();\n const router = useRouter();\n\n if (!featureFlags.isEnabled(\"auditLogs\")) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={AlPermissionsFeature} />\n <RegisterFeature feature={ListAuditLogsFeature} />\n <RegisterFeature feature={AuditLogDetailsPresenterFeature} />\n <LogsModule />\n <SecurityPermission />\n <AiPromptPreviewTabs />\n <AdminConfig>\n <HasPermission any={[\"al.*\"]}>\n <Menu\n name=\"auditLogs\"\n pinnable\n element={\n <Menu.Link\n text={\"Audit Logs\"}\n icon={<Menu.Link.Icon element={<Icon />} label={\"Audit Logs\"} />}\n to={router.getLink(Routes.AuditLogsList)}\n />\n }\n />\n <Route\n route={Routes.AuditLogsList}\n element={\n <AdminLayout title={\"Audit Logs - Logs\"}>\n <AdminConfig.Breadcrumb name={\"auditLogs\"} label={\"Audit Logs\"} />\n <AuditLogsListWithConfig>\n <LogsView />\n </AuditLogsListWithConfig>\n </AdminLayout>\n }\n />\n </HasPermission>\n </AdminConfig>\n </>\n );\n};\n"],"names":["Menu","Route","AdminConfig","AuditLogs","featureFlags","useFeatureFlags","router","useRouter","RegisterFeature","AlPermissionsFeature","ListAuditLogsFeature","AuditLogDetailsPresenterFeature","LogsModule","SecurityPermission","AiPromptPreviewTabs","HasPermission","Icon","Routes","AdminLayout","AuditLogsListWithConfig","LogsView"],"mappings":";;;;;;;;;;;;AAeA,MAAM,EAAEA,MAAAA,IAAI,EAAEC,OAAAA,KAAK,EAAE,GAAGC;AAEjB,MAAMC,YAAY;IACrB,MAAMC,eAAeC;IACrB,MAAMC,SAASC;IAEf,IAAI,CAACH,aAAa,SAAS,CAAC,cACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACI,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,YAAUA,OAAAA,WAAAA,GACX,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACZ,aAAWA,MAAAA,WAAAA,GACR,oBAACa,eAAaA;QAAC,KAAK;YAAC;SAAO;qBACxB,oBAACf,MAAIA;QACD,MAAK;QACL;QACA,uBACI,oBAACA,KAAK,IAAI;YACN,MAAM;YACN,oBAAM,oBAACA,KAAK,IAAI,CAAC,IAAI;gBAAC,uBAAS,oBAACgB,gBAAIA;gBAAK,OAAO;;YAChD,IAAIV,OAAO,OAAO,CAACW,OAAO,aAAa;;sBAInD,oBAAChB,OAAKA;QACF,OAAOgB,OAAO,aAAa;QAC3B,uBACI,oBAACC,aAAWA;YAAC,OAAO;yBAChB,oBAAChB,YAAY,UAAU;YAAC,MAAM;YAAa,OAAO;0BAClD,oBAACiB,yBAAuBA,MAAAA,WAAAA,GACpB,oBAACC,UAAQA;;AAS7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-audit-logs",
3
- "version": "6.6.0-alpha.0",
3
+ "version": "6.6.0-alpha.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -13,20 +13,18 @@
13
13
  "description": "",
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@emotion/css": "11.13.5",
17
- "@emotion/react": "11.14.0",
18
- "@emotion/styled": "11.14.1",
19
- "@webiny/admin-ui": "6.6.0-alpha.0",
20
- "@webiny/app": "6.6.0-alpha.0",
21
- "@webiny/app-admin": "6.6.0-alpha.0",
22
- "@webiny/common-audit-logs": "6.6.0-alpha.0",
23
- "@webiny/feature": "6.6.0-alpha.0",
24
- "@webiny/form": "6.6.0-alpha.0",
25
- "@webiny/icons": "6.6.0-alpha.0",
26
- "@webiny/react-composition": "6.6.0-alpha.0",
27
- "@webiny/react-properties": "6.6.0-alpha.0",
16
+ "@webiny/admin-ui": "6.6.0-alpha.2",
17
+ "@webiny/app": "6.6.0-alpha.2",
18
+ "@webiny/app-admin": "6.6.0-alpha.2",
19
+ "@webiny/common-audit-logs": "6.6.0-alpha.2",
20
+ "@webiny/feature": "6.6.0-alpha.2",
21
+ "@webiny/form": "6.6.0-alpha.2",
22
+ "@webiny/icons": "6.6.0-alpha.2",
23
+ "@webiny/react-composition": "6.6.0-alpha.2",
24
+ "@webiny/react-properties": "6.6.0-alpha.2",
28
25
  "date-fns": "4.4.0",
29
26
  "lodash": "4.18.1",
27
+ "mobx": "7.0.3",
30
28
  "zod": "4.4.3"
31
29
  },
32
30
  "peerDependencies": {
@@ -34,8 +32,8 @@
34
32
  },
35
33
  "devDependencies": {
36
34
  "@types/react": "18.3.31",
37
- "@webiny/build-tools": "6.6.0-alpha.0",
38
- "execa": "10.0.0",
35
+ "@webiny/build-tools": "6.6.0-alpha.2",
36
+ "execa": "10.0.1",
39
37
  "rimraf": "6.1.3",
40
38
  "typescript": "7.0.2"
41
39
  },
package/types.d.ts CHANGED
@@ -22,7 +22,7 @@ export interface IAuditLogRaw {
22
22
  createdBy: IAuditLogCreatedByRaw;
23
23
  createdOn: Date;
24
24
  app: string;
25
- action: ActionType;
25
+ action: string;
26
26
  message: string;
27
27
  entity: string;
28
28
  entityId: string;
@@ -36,7 +36,7 @@ export interface IAuditLogEntity {
36
36
  link?: string;
37
37
  }
38
38
  export interface IAuditLogAction {
39
- value: ActionType;
39
+ value: string;
40
40
  label: string;
41
41
  }
42
42
  export interface IAuditLog extends Omit<IAuditLogRaw, "entity" | "action" | "createdBy"> {
@@ -1,2 +1,2 @@
1
1
  import React from "react";
2
- export declare const FilterByAction: () => React.JSX.Element | null;
2
+ export declare const FilterByAction: () => React.JSX.Element;
@@ -31,12 +31,14 @@ const FilterByAction = ()=>{
31
31
  }, [
32
32
  data
33
33
  ]);
34
- if (!data.app || !data.entity) return null;
34
+ const disabled = !data.app || !data.entity;
35
35
  return /*#__PURE__*/ react.createElement(Select, {
36
36
  ...bind,
37
+ label: "Action",
37
38
  size: "md",
38
- placeholder: "Filter by Action",
39
- options: options
39
+ placeholder: "All actions",
40
+ options: disabled ? [] : options,
41
+ disabled: disabled
40
42
  });
41
43
  };
42
44
  export { FilterByAction };
@@ -1 +1 @@
1
- {"version":3,"file":"views/Logs/Filters/FilterByAction.js","sources":["../../../../src/views/Logs/Filters/FilterByAction.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { useBind, useForm } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { apps as auditLogsApps } from \"@webiny/common-audit-logs\";\nimport type { IFilterFormData } from \"~/views/Logs/Filters/types.js\";\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByAction = () => {\n const { data } = useForm<IFilterFormData>();\n const bind = useBind({\n name: \"action\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n const options = useMemo(() => {\n if (!data.app) {\n return [];\n }\n\n const entities = auditLogsApps.find(app => app.app === data.app)?.entities || [];\n const actions = entities.find(entity => entity.type === data.entity)?.actions || [];\n\n return [\n { label: \"All\", value: \"all\" },\n ...actions.map(entity => ({ label: entity.displayName, value: entity.type }))\n ];\n }, [data]);\n\n if (!data.app || !data.entity) {\n return null;\n }\n\n return <Select {...bind} size={\"md\"} placeholder={\"Filter by Action\"} options={options} />;\n};\n"],"names":["getValidFilterValue","value","FilterByAction","data","useForm","bind","useBind","cb","options","useMemo","entities","auditLogsApps","app","actions","entity","Select"],"mappings":";;;;AAMA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,iBAAiB;IAC1B,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAaL,KAAK,EAAEM,EAAE;YAClBA,GAAGP,oBAAoBC;QAC3B;IACJ;IAEA,MAAMO,UAAUC,QAAQ;QACpB,IAAI,CAACN,KAAK,GAAG,EACT,OAAO,EAAE;QAGb,MAAMO,WAAWC,KAAc,IAAI,CAACC,CAAAA,MAAOA,IAAI,GAAG,KAAKT,KAAK,GAAG,GAAG,YAAY,EAAE;QAChF,MAAMU,UAAUH,SAAS,IAAI,CAACI,CAAAA,SAAUA,OAAO,IAAI,KAAKX,KAAK,MAAM,GAAG,WAAW,EAAE;QAEnF,OAAO;YACH;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BU,QAAQ,GAAG,CAACC,CAAAA,SAAW;oBAAE,OAAOA,OAAO,WAAW;oBAAE,OAAOA,OAAO,IAAI;gBAAC;SAC7E;IACL,GAAG;QAACX;KAAK;IAET,IAAI,CAACA,KAAK,GAAG,IAAI,CAACA,KAAK,MAAM,EACzB,OAAO;IAGX,OAAO,WAAP,GAAO,oBAACY,QAAMA;QAAE,GAAGV,IAAI;QAAE,MAAM;QAAM,aAAa;QAAoB,SAASG;;AACnF"}
1
+ {"version":3,"file":"views/Logs/Filters/FilterByAction.js","sources":["../../../../src/views/Logs/Filters/FilterByAction.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { useBind, useForm } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { apps as auditLogsApps } from \"@webiny/common-audit-logs\";\nimport type { IFilterFormData } from \"~/views/Logs/Filters/types.js\";\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByAction = () => {\n const { data } = useForm<IFilterFormData>();\n const bind = useBind({\n name: \"action\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n const options = useMemo(() => {\n if (!data.app) {\n return [];\n }\n\n const entities = auditLogsApps.find(app => app.app === data.app)?.entities || [];\n const actions = entities.find(entity => entity.type === data.entity)?.actions || [];\n\n return [\n { label: \"All\", value: \"all\" },\n ...actions.map(entity => ({ label: entity.displayName, value: entity.type }))\n ];\n }, [data]);\n\n const disabled = !data.app || !data.entity;\n\n return (\n <Select\n {...bind}\n label={\"Action\"}\n size={\"md\"}\n placeholder={\"All actions\"}\n options={disabled ? [] : options}\n disabled={disabled}\n />\n );\n};\n"],"names":["getValidFilterValue","value","FilterByAction","data","useForm","bind","useBind","cb","options","useMemo","entities","auditLogsApps","app","actions","entity","disabled","Select"],"mappings":";;;;AAMA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,iBAAiB;IAC1B,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAaL,KAAK,EAAEM,EAAE;YAClBA,GAAGP,oBAAoBC;QAC3B;IACJ;IAEA,MAAMO,UAAUC,QAAQ;QACpB,IAAI,CAACN,KAAK,GAAG,EACT,OAAO,EAAE;QAGb,MAAMO,WAAWC,KAAc,IAAI,CAACC,CAAAA,MAAOA,IAAI,GAAG,KAAKT,KAAK,GAAG,GAAG,YAAY,EAAE;QAChF,MAAMU,UAAUH,SAAS,IAAI,CAACI,CAAAA,SAAUA,OAAO,IAAI,KAAKX,KAAK,MAAM,GAAG,WAAW,EAAE;QAEnF,OAAO;YACH;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BU,QAAQ,GAAG,CAACC,CAAAA,SAAW;oBAAE,OAAOA,OAAO,WAAW;oBAAE,OAAOA,OAAO,IAAI;gBAAC;SAC7E;IACL,GAAG;QAACX;KAAK;IAET,MAAMY,WAAW,CAACZ,KAAK,GAAG,IAAI,CAACA,KAAK,MAAM;IAE1C,OAAO,WAAP,GACI,oBAACa,QAAMA;QACF,GAAGX,IAAI;QACR,OAAO;QACP,MAAM;QACN,aAAa;QACb,SAASU,WAAW,EAAE,GAAGP;QACzB,UAAUO;;AAGtB"}
@@ -18,8 +18,9 @@ const FilterByApp = ()=>{
18
18
  });
19
19
  return /*#__PURE__*/ react.createElement(Select, {
20
20
  ...bind,
21
+ label: "Application",
21
22
  size: "md",
22
- placeholder: "Filter by App",
23
+ placeholder: "All applications",
23
24
  options: [
24
25
  {
25
26
  label: "All",
@@ -1 +1 @@
1
- {"version":3,"file":"views/Logs/Filters/FilterByApp.js","sources":["../../../../src/views/Logs/Filters/FilterByApp.tsx"],"sourcesContent":["import React from \"react\";\nimport { useBind, useForm } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { apps as auditLogsApps } from \"@webiny/common-audit-logs\";\nimport type { IFilterFormData } from \"~/views/Logs/Filters/types.js\";\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByApp = () => {\n const { setValue } = useForm<IFilterFormData>();\n const bind = useBind({\n name: \"app\",\n beforeChange(value, cb) {\n setValue(\"entity\", undefined);\n setValue(\"action\", undefined);\n cb(getValidFilterValue(value));\n }\n });\n\n return (\n <Select\n {...bind}\n size={\"md\"}\n placeholder={\"Filter by App\"}\n options={[\n { label: \"All\", value: \"all\" },\n ...auditLogsApps.map(app => ({ label: app.displayName, value: app.app }))\n ]}\n />\n );\n};\n"],"names":["getValidFilterValue","value","FilterByApp","setValue","useForm","bind","useBind","cb","undefined","Select","auditLogsApps","app"],"mappings":";;;;AAMA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,cAAc;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IACrB,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAaL,KAAK,EAAEM,EAAE;YAClBJ,SAAS,UAAUK;YACnBL,SAAS,UAAUK;YACnBD,GAAGP,oBAAoBC;QAC3B;IACJ;IAEA,OAAO,WAAP,GACI,oBAACQ,QAAMA;QACF,GAAGJ,IAAI;QACR,MAAM;QACN,aAAa;QACb,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BK,KAAAA,GAAiB,CAACC,CAAAA,MAAQ;oBAAE,OAAOA,IAAI,WAAW;oBAAE,OAAOA,IAAI,GAAG;gBAAC;SACzE;;AAGb"}
1
+ {"version":3,"file":"views/Logs/Filters/FilterByApp.js","sources":["../../../../src/views/Logs/Filters/FilterByApp.tsx"],"sourcesContent":["import React from \"react\";\nimport { useBind, useForm } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { apps as auditLogsApps } from \"@webiny/common-audit-logs\";\nimport type { IFilterFormData } from \"~/views/Logs/Filters/types.js\";\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByApp = () => {\n const { setValue } = useForm<IFilterFormData>();\n const bind = useBind({\n name: \"app\",\n beforeChange(value, cb) {\n setValue(\"entity\", undefined);\n setValue(\"action\", undefined);\n cb(getValidFilterValue(value));\n }\n });\n\n return (\n <Select\n {...bind}\n label={\"Application\"}\n size={\"md\"}\n placeholder={\"All applications\"}\n options={[\n { label: \"All\", value: \"all\" },\n ...auditLogsApps.map(app => ({ label: app.displayName, value: app.app }))\n ]}\n />\n );\n};\n"],"names":["getValidFilterValue","value","FilterByApp","setValue","useForm","bind","useBind","cb","undefined","Select","auditLogsApps","app"],"mappings":";;;;AAMA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,cAAc;IACvB,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IACrB,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAaL,KAAK,EAAEM,EAAE;YAClBJ,SAAS,UAAUK;YACnBL,SAAS,UAAUK;YACnBD,GAAGP,oBAAoBC;QAC3B;IACJ;IAEA,OAAO,WAAP,GACI,oBAACQ,QAAMA;QACF,GAAGJ,IAAI;QACR,OAAO;QACP,MAAM;QACN,aAAa;QACb,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BK,KAAAA,GAAiB,CAACC,CAAAA,MAAQ;oBAAE,OAAOA,IAAI,WAAW;oBAAE,OAAOA,IAAI,GAAG;gBAAC;SACzE;;AAGb"}
@@ -39,8 +39,9 @@ const FilterByCreatedBy = ()=>{
39
39
  ]);
40
40
  return /*#__PURE__*/ react.createElement(Select, {
41
41
  ...bind,
42
+ label: "Initiator",
42
43
  size: "md",
43
- placeholder: "Filter by Initiator",
44
+ placeholder: "Anyone",
44
45
  options: options
45
46
  });
46
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"views/Logs/Filters/FilterByCreatedBy.js","sources":["../../../../src/views/Logs/Filters/FilterByCreatedBy.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { useContainer } from \"@webiny/app\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient\";\nimport { useBind } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { LIST_USERS } from \"~/graphql.js\";\nimport type { User } from \"~/types.js\";\n\ninterface ListUsersResponse {\n adminUsers: {\n users: {\n data: User[];\n };\n };\n}\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByCreatedBy = () => {\n const container = useContainer();\n const client = container.resolve(MainGraphQLClient);\n const [users, setUsers] = useState<User[]>([]);\n\n useEffect(() => {\n client.execute<ListUsersResponse>({ query: LIST_USERS }).then(response => {\n setUsers(response.adminUsers.users.data || []);\n });\n }, []);\n\n const bind = useBind({\n name: \"createdBy\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n const options = useMemo(() => {\n return [\n { label: \"All\", value: \"all\" },\n ...users.map(user => ({ label: `${user.firstName} ${user.lastName}`, value: user.id }))\n ];\n }, [users]);\n\n return <Select {...bind} size={\"md\"} placeholder={\"Filter by Initiator\"} options={options} />;\n};\n"],"names":["getValidFilterValue","value","FilterByCreatedBy","container","useContainer","client","MainGraphQLClient","users","setUsers","useState","useEffect","LIST_USERS","response","bind","useBind","cb","options","useMemo","user","Select"],"mappings":";;;;;;AAgBA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,oBAAoB;IAC7B,MAAMC,YAAYC;IAClB,MAAMC,SAASF,UAAU,OAAO,CAACG;IACjC,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAiB,EAAE;IAE7CC,UAAU;QACNL,OAAO,OAAO,CAAoB;YAAE,OAAOM;QAAW,GAAG,IAAI,CAACC,CAAAA;YAC1DJ,SAASI,SAAS,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;QACjD;IACJ,GAAG,EAAE;IAEL,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAab,KAAK,EAAEc,EAAE;YAClBA,GAAGf,oBAAoBC;QAC3B;IACJ;IAEA,MAAMe,UAAUC,QAAQ,IACb;YACH;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BV,MAAM,GAAG,CAACW,CAAAA,OAAS;oBAAE,OAAO,GAAGA,KAAK,SAAS,CAAC,CAAC,EAAEA,KAAK,QAAQ,EAAE;oBAAE,OAAOA,KAAK,EAAE;gBAAC;SACvF,EACF;QAACX;KAAM;IAEV,OAAO,WAAP,GAAO,oBAACY,QAAMA;QAAE,GAAGN,IAAI;QAAE,MAAM;QAAM,aAAa;QAAuB,SAASG;;AACtF"}
1
+ {"version":3,"file":"views/Logs/Filters/FilterByCreatedBy.js","sources":["../../../../src/views/Logs/Filters/FilterByCreatedBy.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { useContainer } from \"@webiny/app\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient\";\nimport { useBind } from \"@webiny/form\";\nimport { Select } from \"@webiny/admin-ui\";\nimport { LIST_USERS } from \"~/graphql.js\";\nimport type { User } from \"~/types.js\";\n\ninterface ListUsersResponse {\n adminUsers: {\n users: {\n data: User[];\n };\n };\n}\n\nconst getValidFilterValue = (value: string): string | undefined => {\n if (value === \"all\" || value === \"\") {\n return undefined;\n }\n return value;\n};\n\nexport const FilterByCreatedBy = () => {\n const container = useContainer();\n const client = container.resolve(MainGraphQLClient);\n const [users, setUsers] = useState<User[]>([]);\n\n useEffect(() => {\n client.execute<ListUsersResponse>({ query: LIST_USERS }).then(response => {\n setUsers(response.adminUsers.users.data || []);\n });\n }, []);\n\n const bind = useBind({\n name: \"createdBy\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n const options = useMemo(() => {\n return [\n { label: \"All\", value: \"all\" },\n ...users.map(user => ({ label: `${user.firstName} ${user.lastName}`, value: user.id }))\n ];\n }, [users]);\n\n return (\n <Select\n {...bind}\n label={\"Initiator\"}\n size={\"md\"}\n placeholder={\"Anyone\"}\n options={options}\n />\n );\n};\n"],"names":["getValidFilterValue","value","FilterByCreatedBy","container","useContainer","client","MainGraphQLClient","users","setUsers","useState","useEffect","LIST_USERS","response","bind","useBind","cb","options","useMemo","user","Select"],"mappings":";;;;;;AAgBA,MAAMA,sBAAsB,CAACC;IACzB,IAAIA,AAAU,UAAVA,SAAmBA,AAAU,OAAVA,OACnB;IAEJ,OAAOA;AACX;AAEO,MAAMC,oBAAoB;IAC7B,MAAMC,YAAYC;IAClB,MAAMC,SAASF,UAAU,OAAO,CAACG;IACjC,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAiB,EAAE;IAE7CC,UAAU;QACNL,OAAO,OAAO,CAAoB;YAAE,OAAOM;QAAW,GAAG,IAAI,CAACC,CAAAA;YAC1DJ,SAASI,SAAS,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;QACjD;IACJ,GAAG,EAAE;IAEL,MAAMC,OAAOC,QAAQ;QACjB,MAAM;QACN,cAAab,KAAK,EAAEc,EAAE;YAClBA,GAAGf,oBAAoBC;QAC3B;IACJ;IAEA,MAAMe,UAAUC,QAAQ,IACb;YACH;gBAAE,OAAO;gBAAO,OAAO;YAAM;eAC1BV,MAAM,GAAG,CAACW,CAAAA,OAAS;oBAAE,OAAO,GAAGA,KAAK,SAAS,CAAC,CAAC,EAAEA,KAAK,QAAQ,EAAE;oBAAE,OAAOA,KAAK,EAAE;gBAAC;SACvF,EACF;QAACX;KAAM;IAEV,OAAO,WAAP,GACI,oBAACY,QAAMA;QACF,GAAGN,IAAI;QACR,OAAO;QACP,MAAM;QACN,aAAa;QACb,SAASG;;AAGrB"}