@webiny/app-audit-logs 6.6.0-alpha.0 → 6.6.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -1,16 +1 @@
1
- import { ActionType } from "../../../types.js";
2
- export declare const ActionWrapper: import("@emotion/styled").StyledComponent<{
3
- theme?: import("@emotion/react").Theme;
4
- as?: React.ElementType;
5
- } & {
6
- value: ActionType;
7
- }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
8
- export declare const wideColumn: string;
9
- export declare const appColumn: string;
10
- export declare const previewColumn: string;
11
- export declare const TextGray: import("@emotion/styled").StyledComponent<import("~/components/Text.js").TypographyProps & {
12
- theme?: import("@emotion/react").Theme;
13
- }, {}, {}>;
14
- export declare const TimezoneText: import("@emotion/styled").StyledComponent<import("~/components/Text.js").TypographyProps & {
15
- theme?: import("@emotion/react").Theme;
16
- }, {}, {}>;
1
+ export declare function getActionColorClasses(value: string): string;
@@ -1,57 +1,17 @@
1
- import styled from "@emotion/styled";
2
- import { css } from "@emotion/css";
3
- import { Text } from "../../../components/Text.js";
4
- import { ActionType } from "../../../types.js";
5
- const ACTION_TYPES_COLORS_MAP = {
6
- YELLOW: [
7
- ActionType.UPDATE
8
- ],
9
- RED: [
10
- ActionType.DELETE,
11
- ActionType.UNPUBLISH,
12
- ActionType.MOVE_TO_TRASH
13
- ]
14
- };
15
- const ActionWrapper = styled.div`
16
- padding: 0 8px;
17
- width: fit-content;
18
- border: 1px solid;
19
- border-radius: 5px;
20
-
21
- ${({ value: actionType })=>{
22
- if (ACTION_TYPES_COLORS_MAP.YELLOW.includes(actionType)) return `
23
- background-color: #fac42810;
24
- border-color: #fac428;
25
- color: #fac428;
26
- `;
27
- if (ACTION_TYPES_COLORS_MAP.RED.includes(actionType)) return `
28
- background-color: #ff000010;
29
- border-color: #ff0000;
30
- color: #ff0000;
31
- `;
32
- return `
33
- background-color: #00ccb010;
34
- border-color: #00ccb0;
35
- color: #00ccb0;
36
- `;
37
- }}
38
- `;
39
- const wideColumn = css`
40
- width: auto !important;
41
- `;
42
- const appColumn = css`
43
- width: 280px !important;
44
- `;
45
- const previewColumn = css`
46
- width: 100px !important;
47
- `;
48
- const TextGray = styled(Text)`
49
- color: "#616161";
50
- `;
51
- const TimezoneText = styled(TextGray)`
52
- padding-left: 6px;
53
- padding-right: 6px;
54
- `;
55
- export { ActionWrapper, TextGray, TimezoneText, appColumn, previewColumn, wideColumn };
1
+ import { ActionType } from "@webiny/common-audit-logs";
2
+ const YELLOW_ACTIONS = [
3
+ ActionType.UPDATE
4
+ ];
5
+ const RED_ACTIONS = [
6
+ ActionType.DELETE,
7
+ ActionType.UNPUBLISH,
8
+ ActionType.MOVE_TO_TRASH
9
+ ];
10
+ function getActionColorClasses(value) {
11
+ if (YELLOW_ACTIONS.includes(value)) return "bg-warning-100 border-warning-500 text-warning-700";
12
+ if (RED_ACTIONS.includes(value)) return "bg-destructive-100 border-destructive-500 text-destructive-700";
13
+ return "bg-success-100 border-success-500 text-success-700";
14
+ }
15
+ export { getActionColorClasses };
56
16
 
57
17
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"views/Logs/Table/styled.js","sources":["../../../../src/views/Logs/Table/styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { css } from \"@emotion/css\";\nimport { Text } from \"~/components/Text.js\";\nimport { ActionType } from \"~/types.js\";\n\nconst ACTION_TYPES_COLORS_MAP = {\n YELLOW: [ActionType.UPDATE],\n RED: [ActionType.DELETE, ActionType.UNPUBLISH, ActionType.MOVE_TO_TRASH]\n};\n\nexport const ActionWrapper = styled.div<{ value: ActionType }>`\n padding: 0 8px;\n width: fit-content;\n border: 1px solid;\n border-radius: 5px;\n\n ${({ value: actionType }) => {\n // Yellow.\n if (ACTION_TYPES_COLORS_MAP.YELLOW.includes(actionType)) {\n return `\n background-color: #fac42810;\n border-color: #fac428;\n color: #fac428;\n `;\n }\n\n // Red.\n if (ACTION_TYPES_COLORS_MAP.RED.includes(actionType)) {\n return `\n background-color: #ff000010;\n border-color: #ff0000;\n color: #ff0000;\n `;\n }\n\n // Green.\n return `\n background-color: #00ccb010;\n border-color: #00ccb0;\n color: #00ccb0;\n `;\n }}\n`;\n\nexport const wideColumn = css`\n width: auto !important;\n`;\n\nexport const appColumn = css`\n width: 280px !important;\n`;\n\nexport const previewColumn = css`\n width: 100px !important;\n`;\n\nexport const TextGray = styled(Text)`\n color: \"#616161\";\n`;\n\nexport const TimezoneText = styled(TextGray)`\n padding-left: 6px;\n padding-right: 6px;\n`;\n"],"names":["ACTION_TYPES_COLORS_MAP","ActionType","ActionWrapper","styled","actionType","wideColumn","css","appColumn","previewColumn","TextGray","Text","TimezoneText"],"mappings":";;;;AAKA,MAAMA,0BAA0B;IAC5B,QAAQ;QAACC,WAAW,MAAM;KAAC;IAC3B,KAAK;QAACA,WAAW,MAAM;QAAEA,WAAW,SAAS;QAAEA,WAAW,aAAa;KAAC;AAC5E;AAEO,MAAMC,gBAAgBC,OAAO,GAA0B,CAAC;;;;;;IAM3D,EAAE,CAAC,EAAE,OAAOC,UAAU,EAAE;IAEpB,IAAIJ,wBAAwB,MAAM,CAAC,QAAQ,CAACI,aACxC,OAAO,CAAC;;;;YAIR,CAAC;IAIL,IAAIJ,wBAAwB,GAAG,CAAC,QAAQ,CAACI,aACrC,OAAO,CAAC;;;;YAIR,CAAC;IAIL,OAAO,CAAC;;;;QAIR,CAAC;AACL,EAAE;AACN,CAAC;AAEM,MAAMC,aAAaC,GAAG,CAAC;;AAE9B,CAAC;AAEM,MAAMC,YAAYD,GAAG,CAAC;;AAE7B,CAAC;AAEM,MAAME,gBAAgBF,GAAG,CAAC;;AAEjC,CAAC;AAEM,MAAMG,WAAWN,OAAOO,KAAK,CAAC;;AAErC,CAAC;AAEM,MAAMC,eAAeR,OAAOM,SAAS,CAAC;;;AAG7C,CAAC"}
1
+ {"version":3,"file":"views/Logs/Table/styled.js","sources":["../../../../src/views/Logs/Table/styled.tsx"],"sourcesContent":["import { ActionType } from \"@webiny/common-audit-logs\";\n\nconst YELLOW_ACTIONS: string[] = [ActionType.UPDATE];\nconst RED_ACTIONS: string[] = [ActionType.DELETE, ActionType.UNPUBLISH, ActionType.MOVE_TO_TRASH];\n\nexport function getActionColorClasses(value: string): string {\n if (YELLOW_ACTIONS.includes(value)) {\n return \"bg-warning-100 border-warning-500 text-warning-700\";\n }\n if (RED_ACTIONS.includes(value)) {\n return \"bg-destructive-100 border-destructive-500 text-destructive-700\";\n }\n return \"bg-success-100 border-success-500 text-success-700\";\n}\n"],"names":["YELLOW_ACTIONS","ActionType","RED_ACTIONS","getActionColorClasses","value"],"mappings":";AAEA,MAAMA,iBAA2B;IAACC,WAAW,MAAM;CAAC;AACpD,MAAMC,cAAwB;IAACD,WAAW,MAAM;IAAEA,WAAW,SAAS;IAAEA,WAAW,aAAa;CAAC;AAE1F,SAASE,sBAAsBC,KAAa;IAC/C,IAAIJ,eAAe,QAAQ,CAACI,QACxB,OAAO;IAEX,IAAIF,YAAY,QAAQ,CAACE,QACrB,OAAO;IAEX,OAAO;AACX"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const FilterByTimestamp: () => React.JSX.Element;
@@ -1,39 +0,0 @@
1
- import react from "react";
2
- import { format } from "date-fns";
3
- import { Input } from "@webiny/admin-ui";
4
- import { useBind } from "@webiny/form";
5
- import { TimestampFiltersContainer } from "./styled.js";
6
- const formatDateTime = (date)=>{
7
- if (!date) return "";
8
- return format(new Date(date), "yyyy-MM-dd'T'HH:mm");
9
- };
10
- const getValidFilterValue = (value)=>{
11
- if ("" === value) return;
12
- return new Date(value);
13
- };
14
- const FilterByTimestamp = ()=>{
15
- const bindFrom = useBind({
16
- name: "data.timestamp_gte",
17
- beforeChange (value, cb) {
18
- cb(getValidFilterValue(value));
19
- }
20
- });
21
- const bindTo = useBind({
22
- name: "data.timestamp_lte",
23
- beforeChange (value, cb) {
24
- cb(getValidFilterValue(value));
25
- }
26
- });
27
- return /*#__PURE__*/ react.createElement(TimestampFiltersContainer, null, /*#__PURE__*/ react.createElement(Input, {
28
- ...bindFrom,
29
- value: formatDateTime(bindFrom.value),
30
- type: "datetime-local"
31
- }), /*#__PURE__*/ react.createElement(Input, {
32
- ...bindTo,
33
- value: formatDateTime(bindTo.value),
34
- type: "datetime-local"
35
- }));
36
- };
37
- export { FilterByTimestamp };
38
-
39
- //# sourceMappingURL=FilterByTimestamp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"views/Logs/Filters/FilterByTimestamp.js","sources":["../../../../src/views/Logs/Filters/FilterByTimestamp.tsx"],"sourcesContent":["import React from \"react\";\nimport { format } from \"date-fns\";\nimport { Input } from \"@webiny/admin-ui\";\nimport { useBind } from \"@webiny/form\";\nimport { TimestampFiltersContainer } from \"./styled.js\";\n\nconst formatDateTime = (date: string) => {\n if (!date) {\n return \"\";\n }\n\n return format(new Date(date), \"yyyy-MM-dd'T'HH:mm\");\n};\n\nconst getValidFilterValue = (value: string): Date | undefined => {\n if (value === \"\") {\n return undefined;\n }\n\n return new Date(value);\n};\n\nexport const FilterByTimestamp = () => {\n const bindFrom = useBind({\n name: \"data.timestamp_gte\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n const bindTo = useBind({\n name: \"data.timestamp_lte\",\n beforeChange(value, cb) {\n cb(getValidFilterValue(value));\n }\n });\n\n return (\n <TimestampFiltersContainer>\n <Input {...bindFrom} value={formatDateTime(bindFrom.value)} type=\"datetime-local\" />\n <Input {...bindTo} value={formatDateTime(bindTo.value)} type=\"datetime-local\" />\n </TimestampFiltersContainer>\n );\n};\n"],"names":["formatDateTime","date","format","Date","getValidFilterValue","value","FilterByTimestamp","bindFrom","useBind","cb","bindTo","TimestampFiltersContainer","Input"],"mappings":";;;;;AAMA,MAAMA,iBAAiB,CAACC;IACpB,IAAI,CAACA,MACD,OAAO;IAGX,OAAOC,OAAO,IAAIC,KAAKF,OAAO;AAClC;AAEA,MAAMG,sBAAsB,CAACC;IACzB,IAAIA,AAAU,OAAVA,OACA;IAGJ,OAAO,IAAIF,KAAKE;AACpB;AAEO,MAAMC,oBAAoB;IAC7B,MAAMC,WAAWC,QAAQ;QACrB,MAAM;QACN,cAAaH,KAAK,EAAEI,EAAE;YAClBA,GAAGL,oBAAoBC;QAC3B;IACJ;IAEA,MAAMK,SAASF,QAAQ;QACnB,MAAM;QACN,cAAaH,KAAK,EAAEI,EAAE;YAClBA,GAAGL,oBAAoBC;QAC3B;IACJ;IAEA,OAAO,WAAP,GACI,oBAACM,2BAAyBA,MAAAA,WAAAA,GACtB,oBAACC,OAAKA;QAAE,GAAGL,QAAQ;QAAE,OAAOP,eAAeO,SAAS,KAAK;QAAG,MAAK;sBACjE,oBAACK,OAAKA;QAAE,GAAGF,MAAM;QAAE,OAAOV,eAAeU,OAAO,KAAK;QAAG,MAAK;;AAGzE"}
@@ -1,4 +0,0 @@
1
- export declare const TimestampFiltersContainer: import("@emotion/styled").StyledComponent<{
2
- theme?: import("@emotion/react").Theme;
3
- as?: React.ElementType;
4
- }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -1,13 +0,0 @@
1
- import styled from "@emotion/styled";
2
- const TimestampFiltersContainer = styled.div`
3
- display: flex;
4
- column-gap: 16px;
5
- grow: 1;
6
-
7
- .relative {
8
- height: 32px;
9
- }
10
- `;
11
- export { TimestampFiltersContainer };
12
-
13
- //# sourceMappingURL=styled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"views/Logs/Filters/styled.js","sources":["../../../../src/views/Logs/Filters/styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const TimestampFiltersContainer = styled.div`\n display: flex;\n column-gap: 16px;\n grow: 1;\n\n .relative {\n height: 32px;\n }\n`;\n"],"names":["TimestampFiltersContainer","styled"],"mappings":";AAEO,MAAMA,4BAA4BC,OAAO,GAAG,CAAC;;;;;;;;AAQpD,CAAC"}
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- declare const AuditLogsView: () => React.JSX.Element;
3
- export default AuditLogsView;
@@ -1,76 +0,0 @@
1
- import react, { useCallback, useEffect, useRef, useState } from "react";
2
- import debounce from "lodash/debounce.js";
3
- import { i18n } from "@webiny/app/i18n/index.js";
4
- import { EmptyView, useSecurity } from "@webiny/app-admin";
5
- import { Scrollbar } from "@webiny/admin-ui";
6
- import { LoadingMore } from "./LoadingMore/index.js";
7
- import { LoadMoreButton } from "./LoadMoreButton/index.js";
8
- import { Header } from "./Header/index.js";
9
- import { Filters } from "./Filters/index.js";
10
- import { Table } from "./Table/index.js";
11
- import { Preview } from "./Preview/index.js";
12
- import { useAuditLogsList } from "../../hooks/index.js";
13
- const t = i18n.ns("app-audit-logs/views/logs");
14
- const AuditLogsView = ()=>{
15
- const [selectedAuditLog, setSelectedAuditLog] = useState(null);
16
- const handleAuditLogSelect = useCallback((auditLog)=>setSelectedAuditLog(auditLog), []);
17
- const closePreviewModal = useCallback(()=>setSelectedAuditLog(null), []);
18
- const { innerHeight: windowHeight } = window;
19
- const [tableHeight, setTableHeight] = useState(0);
20
- const tableRef = useRef(null);
21
- const { getPermissions } = useSecurity();
22
- const hasAccessToUsers = Boolean(getPermissions("adminUsers").length);
23
- const list = useAuditLogsList();
24
- useEffect(()=>{
25
- setTableHeight(tableRef?.current?.clientHeight || 0);
26
- return ()=>{
27
- setTableHeight(0);
28
- };
29
- });
30
- const loadMoreOnScroll = debounce(({ scrollFrame })=>{
31
- if (scrollFrame.top > 0.8 && !list.isListLoadingMore && list.meta.hasMoreItems) list.listMoreRecords();
32
- }, 200);
33
- return /*#__PURE__*/ react.createElement("div", {
34
- className: "flex flex-col h-main-content"
35
- }, /*#__PURE__*/ react.createElement(Header, {
36
- title: "Audit Logs",
37
- showingFilters: list.showingFilters,
38
- showFilters: list.showFilters,
39
- hideFilters: list.hideFilters
40
- }), /*#__PURE__*/ react.createElement("div", {
41
- className: "flex-1 min-h-0"
42
- }, /*#__PURE__*/ react.createElement(Filters, {
43
- showingFilters: list.showingFilters,
44
- setWhere: list.setWhere
45
- }), 0 !== list.records.length || list.isListLoading ? /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Preview, {
46
- auditLog: selectedAuditLog,
47
- onClose: ()=>closePreviewModal(),
48
- hasAccessToUsers: hasAccessToUsers
49
- }), /*#__PURE__*/ react.createElement(Scrollbar, {
50
- "data-testid": "default-data-list",
51
- onScrollFrame: (scrollFrame)=>loadMoreOnScroll({
52
- scrollFrame
53
- })
54
- }, /*#__PURE__*/ react.createElement(Table, {
55
- ref: tableRef,
56
- records: list.records,
57
- loading: list.isListLoading && !list.isListLoadingMore,
58
- handleRecordSelect: handleAuditLogSelect,
59
- sorting: list.sorting,
60
- onSortingChange: list.setSorting,
61
- hasAccessToUsers: hasAccessToUsers
62
- }), /*#__PURE__*/ react.createElement(LoadMoreButton, {
63
- show: !list.isListLoading && list.meta.hasMoreItems,
64
- disabled: list.isListLoadingMore,
65
- windowHeight: windowHeight,
66
- tableHeight: tableHeight,
67
- onClick: list.listMoreRecords
68
- })), list.isListLoadingMore && /*#__PURE__*/ react.createElement(LoadingMore, null)) : /*#__PURE__*/ react.createElement(EmptyView, {
69
- title: t`No results found.`,
70
- action: null
71
- })));
72
- };
73
- const Logs = AuditLogsView;
74
- export default Logs;
75
-
76
- //# sourceMappingURL=Logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"views/Logs/Logs.js","sources":["../../../src/views/Logs/Logs.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport debounce from \"lodash/debounce.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { EmptyView } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport { Scrollbar } from \"@webiny/admin-ui\";\nimport { LoadingMore } from \"~/views/Logs/LoadingMore/index.js\";\nimport { LoadMoreButton } from \"~/views/Logs/LoadMoreButton/index.js\";\nimport { Header } from \"~/views/Logs/Header/index.js\";\nimport { Filters } from \"~/views/Logs/Filters/index.js\";\nimport { Table } from \"~/views/Logs/Table/index.js\";\nimport { Preview } from \"~/views/Logs/Preview/index.js\";\nimport { useAuditLogsList } from \"~/hooks/index.js\";\nimport type { IAuditLog } from \"~/types.js\";\n\nconst t = i18n.ns(\"app-audit-logs/views/logs\");\n\nconst AuditLogsView = () => {\n const [selectedAuditLog, setSelectedAuditLog] = useState<IAuditLog | null>(null);\n const handleAuditLogSelect = useCallback(\n (auditLog: IAuditLog) => setSelectedAuditLog(auditLog),\n []\n );\n const closePreviewModal = useCallback(() => setSelectedAuditLog(null), []);\n\n const { innerHeight: windowHeight } = window;\n const [tableHeight, setTableHeight] = useState(0);\n const tableRef = useRef<HTMLDivElement>(null);\n const { getPermissions } = useSecurity();\n const hasAccessToUsers = Boolean(getPermissions(\"adminUsers\").length);\n\n const list = useAuditLogsList();\n\n useEffect(() => {\n setTableHeight(tableRef?.current?.clientHeight || 0);\n\n return () => {\n setTableHeight(0);\n };\n });\n\n const loadMoreOnScroll = debounce(({ scrollFrame }) => {\n if (scrollFrame.top > 0.8 && !list.isListLoadingMore && list.meta.hasMoreItems) {\n list.listMoreRecords();\n }\n }, 200);\n\n return (\n <div className={\"flex flex-col h-main-content\"}>\n <Header\n title=\"Audit Logs\"\n showingFilters={list.showingFilters}\n showFilters={list.showFilters}\n hideFilters={list.hideFilters}\n />\n <div className={\"flex-1 min-h-0\"}>\n <Filters showingFilters={list.showingFilters} setWhere={list.setWhere} />\n {list.records.length === 0 && !list.isListLoading ? (\n <EmptyView title={t`No results found.`} action={null} />\n ) : (\n <>\n <Preview\n auditLog={selectedAuditLog}\n onClose={() => closePreviewModal()}\n hasAccessToUsers={hasAccessToUsers}\n />\n <Scrollbar\n data-testid=\"default-data-list\"\n onScrollFrame={scrollFrame => loadMoreOnScroll({ scrollFrame })}\n >\n <Table\n ref={tableRef}\n records={list.records}\n loading={list.isListLoading && !list.isListLoadingMore}\n handleRecordSelect={handleAuditLogSelect}\n sorting={list.sorting}\n onSortingChange={list.setSorting}\n hasAccessToUsers={hasAccessToUsers}\n />\n <LoadMoreButton\n show={!list.isListLoading && list.meta.hasMoreItems}\n disabled={list.isListLoadingMore}\n windowHeight={windowHeight}\n tableHeight={tableHeight}\n onClick={list.listMoreRecords}\n />\n </Scrollbar>\n {list.isListLoadingMore && <LoadingMore />}\n </>\n )}\n </div>\n </div>\n );\n};\n\nexport default AuditLogsView;\n"],"names":["t","i18n","AuditLogsView","selectedAuditLog","setSelectedAuditLog","useState","handleAuditLogSelect","useCallback","auditLog","closePreviewModal","windowHeight","window","tableHeight","setTableHeight","tableRef","useRef","getPermissions","useSecurity","hasAccessToUsers","Boolean","list","useAuditLogsList","useEffect","loadMoreOnScroll","debounce","scrollFrame","Header","Filters","Preview","Scrollbar","Table","LoadMoreButton","LoadingMore","EmptyView"],"mappings":";;;;;;;;;;;;AAeA,MAAMA,IAAIC,KAAK,EAAE,CAAC;AAElB,MAAMC,gBAAgB;IAClB,MAAM,CAACC,kBAAkBC,oBAAoB,GAAGC,SAA2B;IAC3E,MAAMC,uBAAuBC,YACzB,CAACC,WAAwBJ,oBAAoBI,WAC7C,EAAE;IAEN,MAAMC,oBAAoBF,YAAY,IAAMH,oBAAoB,OAAO,EAAE;IAEzE,MAAM,EAAE,aAAaM,YAAY,EAAE,GAAGC;IACtC,MAAM,CAACC,aAAaC,eAAe,GAAGR,SAAS;IAC/C,MAAMS,WAAWC,OAAuB;IACxC,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAMC,mBAAmBC,QAAQH,eAAe,cAAc,MAAM;IAEpE,MAAMI,OAAOC;IAEbC,UAAU;QACNT,eAAeC,UAAU,SAAS,gBAAgB;QAElD,OAAO;YACHD,eAAe;QACnB;IACJ;IAEA,MAAMU,mBAAmBC,SAAS,CAAC,EAAEC,WAAW,EAAE;QAC9C,IAAIA,YAAY,GAAG,GAAG,OAAO,CAACL,KAAK,iBAAiB,IAAIA,KAAK,IAAI,CAAC,YAAY,EAC1EA,KAAK,eAAe;IAE5B,GAAG;IAEH,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACM,QAAMA;QACH,OAAM;QACN,gBAAgBN,KAAK,cAAc;QACnC,aAAaA,KAAK,WAAW;QAC7B,aAAaA,KAAK,WAAW;sBAEjC,oBAAC;QAAI,WAAW;qBACZ,oBAACO,SAAOA;QAAC,gBAAgBP,KAAK,cAAc;QAAE,UAAUA,KAAK,QAAQ;QACpEA,AAAwB,MAAxBA,KAAK,OAAO,CAAC,MAAM,IAAWA,KAAK,aAAa,G,cAG7C,wDACI,oBAACQ,SAAOA;QACJ,UAAUzB;QACV,SAAS,IAAMM;QACf,kBAAkBS;sBAEtB,oBAACW,WAASA;QACN,eAAY;QACZ,eAAeJ,CAAAA,cAAeF,iBAAiB;gBAAEE;YAAY;qBAE7D,oBAACK,OAAKA;QACF,KAAKhB;QACL,SAASM,KAAK,OAAO;QACrB,SAASA,KAAK,aAAa,IAAI,CAACA,KAAK,iBAAiB;QACtD,oBAAoBd;QACpB,SAASc,KAAK,OAAO;QACrB,iBAAiBA,KAAK,UAAU;QAChC,kBAAkBF;sBAEtB,oBAACa,gBAAcA;QACX,MAAM,CAACX,KAAK,aAAa,IAAIA,KAAK,IAAI,CAAC,YAAY;QACnD,UAAUA,KAAK,iBAAiB;QAChC,cAAcV;QACd,aAAaE;QACb,SAASQ,KAAK,eAAe;SAGpCA,KAAK,iBAAiB,IAAI,WAAJ,GAAI,oBAACY,aAAWA,SA9BK,WAAH,GAC7C,oBAACC,WAASA;QAAC,OAAOjC,CAAC,CAAC,iBAAiB,CAAC;QAAE,QAAQ;;AAmCpE;AAEA,aAAeE"}
@@ -1,5 +0,0 @@
1
- export declare const PayloadWrapper: import("@emotion/styled").StyledComponent<{
2
- theme?: import("@emotion/react").Theme;
3
- as?: React.ElementType;
4
- }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
5
- export declare const previewDialog: string;
@@ -1,32 +0,0 @@
1
- import styled from "@emotion/styled";
2
- import { css } from "@emotion/css";
3
- const PayloadWrapper = styled("div")`
4
- #brace-editor {
5
- height: 280px !important;
6
- }
7
-
8
- .ace_print-margin,
9
- .ace_active-line,
10
- .ace_gutter-active-line,
11
- .ace_cursor-layer {
12
- display: none;
13
- }
14
-
15
- .ace_line,
16
- .ace_gutter-cell {
17
- height: 12px !important;
18
- }
19
-
20
- .ace_gutter-layer {
21
- width: 47px !important;
22
- }
23
- `;
24
- const previewDialog = css`
25
- & .mdc-dialog__surface {
26
- width: 800px;
27
- min-width: 800px;
28
- }
29
- `;
30
- export { PayloadWrapper, previewDialog };
31
-
32
- //# sourceMappingURL=styled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"views/Logs/Preview/styled.js","sources":["../../../../src/views/Logs/Preview/styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { css } from \"@emotion/css\";\n\nexport const PayloadWrapper = styled(\"div\")`\n #brace-editor {\n height: 280px !important;\n }\n\n .ace_print-margin,\n .ace_active-line,\n .ace_gutter-active-line,\n .ace_cursor-layer {\n display: none;\n }\n\n .ace_line,\n .ace_gutter-cell {\n height: 12px !important;\n }\n\n .ace_gutter-layer {\n width: 47px !important;\n }\n`;\n\nexport const previewDialog = css`\n & .mdc-dialog__surface {\n width: 800px;\n min-width: 800px;\n }\n`;\n"],"names":["PayloadWrapper","styled","previewDialog","css"],"mappings":";;AAGO,MAAMA,iBAAiBC,OAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;AAoB5C,CAAC;AAEM,MAAMC,gBAAgBC,GAAG,CAAC;;;;;AAKjC,CAAC"}