@webiny/app-audit-logs 0.0.0-unstable.2696f9d9e8

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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/components/Text.d.ts +3 -0
  4. package/components/Text.js +16 -0
  5. package/components/Text.js.map +1 -0
  6. package/config/list/AuditLogsListConfig.d.ts +25 -0
  7. package/config/list/AuditLogsListConfig.js +34 -0
  8. package/config/list/AuditLogsListConfig.js.map +1 -0
  9. package/config/list/Browser/Filter.d.ts +20 -0
  10. package/config/list/Browser/Filter.js +54 -0
  11. package/config/list/Browser/Filter.js.map +1 -0
  12. package/config/list/Browser/FiltersToWhere.d.ts +7 -0
  13. package/config/list/Browser/FiltersToWhere.js +23 -0
  14. package/config/list/Browser/FiltersToWhere.js.map +1 -0
  15. package/config/list/Browser/index.d.ts +20 -0
  16. package/config/list/Browser/index.js +15 -0
  17. package/config/list/Browser/index.js.map +1 -0
  18. package/config/list/index.d.ts +1 -0
  19. package/config/list/index.js +18 -0
  20. package/config/list/index.js.map +1 -0
  21. package/constants/index.d.ts +1 -0
  22. package/constants/index.js +10 -0
  23. package/constants/index.js.map +1 -0
  24. package/graphql.d.ts +1 -0
  25. package/graphql.js +15 -0
  26. package/graphql.js.map +1 -0
  27. package/hooks/index.d.ts +1 -0
  28. package/hooks/index.js +18 -0
  29. package/hooks/index.js.map +1 -0
  30. package/hooks/useAuditLogsList.d.ts +21 -0
  31. package/hooks/useAuditLogsList.js +116 -0
  32. package/hooks/useAuditLogsList.js.map +1 -0
  33. package/index.d.ts +2 -0
  34. package/index.js +53 -0
  35. package/index.js.map +1 -0
  36. package/package.json +59 -0
  37. package/plugins/permissionRenderer/AuditLogsPermissions.d.ts +8 -0
  38. package/plugins/permissionRenderer/AuditLogsPermissions.js +118 -0
  39. package/plugins/permissionRenderer/AuditLogsPermissions.js.map +1 -0
  40. package/plugins/permissionRenderer/index.d.ts +1 -0
  41. package/plugins/permissionRenderer/index.js +40 -0
  42. package/plugins/permissionRenderer/index.js.map +1 -0
  43. package/types.d.ts +19 -0
  44. package/types.js +7 -0
  45. package/types.js.map +1 -0
  46. package/utils/transformCmsContentEntriesToRecordEntries.d.ts +25 -0
  47. package/utils/transformCmsContentEntriesToRecordEntries.js +50 -0
  48. package/utils/transformCmsContentEntriesToRecordEntries.js.map +1 -0
  49. package/views/Logs/Filters/FilterByAction.d.ts +2 -0
  50. package/views/Logs/Filters/FilterByAction.js +62 -0
  51. package/views/Logs/Filters/FilterByAction.js.map +1 -0
  52. package/views/Logs/Filters/FilterByApp.d.ts +2 -0
  53. package/views/Logs/Filters/FilterByApp.js +46 -0
  54. package/views/Logs/Filters/FilterByApp.js.map +1 -0
  55. package/views/Logs/Filters/FilterByEntity.d.ts +2 -0
  56. package/views/Logs/Filters/FilterByEntity.js +60 -0
  57. package/views/Logs/Filters/FilterByEntity.js.map +1 -0
  58. package/views/Logs/Filters/FilterByInitiator.d.ts +2 -0
  59. package/views/Logs/Filters/FilterByInitiator.js +50 -0
  60. package/views/Logs/Filters/FilterByInitiator.js.map +1 -0
  61. package/views/Logs/Filters/FilterByTimestamp.d.ts +2 -0
  62. package/views/Logs/Filters/FilterByTimestamp.js +48 -0
  63. package/views/Logs/Filters/FilterByTimestamp.js.map +1 -0
  64. package/views/Logs/Filters/Filters.d.ts +8 -0
  65. package/views/Logs/Filters/Filters.js +43 -0
  66. package/views/Logs/Filters/Filters.js.map +1 -0
  67. package/views/Logs/Filters/index.d.ts +6 -0
  68. package/views/Logs/Filters/index.js +73 -0
  69. package/views/Logs/Filters/index.js.map +1 -0
  70. package/views/Logs/Filters/styled.d.ts +5 -0
  71. package/views/Logs/Filters/styled.js +15 -0
  72. package/views/Logs/Filters/styled.js.map +1 -0
  73. package/views/Logs/Header/ButtonFilters/ButtonFilters.d.ts +8 -0
  74. package/views/Logs/Header/ButtonFilters/ButtonFilters.js +44 -0
  75. package/views/Logs/Header/ButtonFilters/ButtonFilters.js.map +1 -0
  76. package/views/Logs/Header/ButtonFilters/index.d.ts +1 -0
  77. package/views/Logs/Header/ButtonFilters/index.js +18 -0
  78. package/views/Logs/Header/ButtonFilters/index.js.map +1 -0
  79. package/views/Logs/Header/Header.d.ts +11 -0
  80. package/views/Logs/Header/Header.js +55 -0
  81. package/views/Logs/Header/Header.js.map +1 -0
  82. package/views/Logs/Header/index.d.ts +1 -0
  83. package/views/Logs/Header/index.js +18 -0
  84. package/views/Logs/Header/index.js.map +1 -0
  85. package/views/Logs/LoadMoreButton/LoadMoreButton.d.ts +9 -0
  86. package/views/Logs/LoadMoreButton/LoadMoreButton.js +32 -0
  87. package/views/Logs/LoadMoreButton/LoadMoreButton.js.map +1 -0
  88. package/views/Logs/LoadMoreButton/index.d.ts +1 -0
  89. package/views/Logs/LoadMoreButton/index.js +18 -0
  90. package/views/Logs/LoadMoreButton/index.js.map +1 -0
  91. package/views/Logs/LoadMoreButton/styled.d.ts +5 -0
  92. package/views/Logs/LoadMoreButton/styled.js +15 -0
  93. package/views/Logs/LoadMoreButton/styled.js.map +1 -0
  94. package/views/Logs/LoadingMore/index.d.ts +2 -0
  95. package/views/Logs/LoadingMore/index.js +26 -0
  96. package/views/Logs/LoadingMore/index.js.map +1 -0
  97. package/views/Logs/LoadingMore/styled.d.ts +9 -0
  98. package/views/Logs/LoadingMore/styled.js +20 -0
  99. package/views/Logs/LoadingMore/styled.js.map +1 -0
  100. package/views/Logs/Logs.d.ts +3 -0
  101. package/views/Logs/Logs.js +107 -0
  102. package/views/Logs/Logs.js.map +1 -0
  103. package/views/Logs/LogsModule.d.ts +2 -0
  104. package/views/Logs/LogsModule.js +32 -0
  105. package/views/Logs/LogsModule.js.map +1 -0
  106. package/views/Logs/Preview/Preview.d.ts +9 -0
  107. package/views/Logs/Preview/Preview.js +97 -0
  108. package/views/Logs/Preview/Preview.js.map +1 -0
  109. package/views/Logs/Preview/index.d.ts +1 -0
  110. package/views/Logs/Preview/index.js +18 -0
  111. package/views/Logs/Preview/index.js.map +1 -0
  112. package/views/Logs/Preview/styled.d.ts +6 -0
  113. package/views/Logs/Preview/styled.js +18 -0
  114. package/views/Logs/Preview/styled.js.map +1 -0
  115. package/views/Logs/Table/Table.d.ts +18 -0
  116. package/views/Logs/Table/Table.js +145 -0
  117. package/views/Logs/Table/Table.js.map +1 -0
  118. package/views/Logs/Table/index.d.ts +1 -0
  119. package/views/Logs/Table/index.js +18 -0
  120. package/views/Logs/Table/index.js.map +1 -0
  121. package/views/Logs/Table/styled.d.ts +20 -0
  122. package/views/Logs/Table/styled.js +49 -0
  123. package/views/Logs/Table/styled.js.map +1 -0
  124. package/views/Logs/styled.d.ts +9 -0
  125. package/views/Logs/styled.js +20 -0
  126. package/views/Logs/styled.js.map +1 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LoadingMore = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _i18n = require("@webiny/app/i18n");
11
+ var _Typography = require("@webiny/ui/Typography");
12
+ var _Progress = require("@webiny/ui/Progress");
13
+ var _styled = require("./styled");
14
+ var _templateObject;
15
+ var t = _i18n.i18n.ns("app-audit-logs/components/table/loading-more");
16
+ var LoadingMore = function LoadingMore() {
17
+ return /*#__PURE__*/_react.default.createElement(_styled.Container, null, /*#__PURE__*/_react.default.createElement(_styled.LoaderContainer, null, /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
18
+ size: 20,
19
+ spinnerWidth: 2
20
+ })), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
21
+ use: "body2"
22
+ }, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Loading more records..."])))));
23
+ };
24
+ exports.LoadingMore = LoadingMore;
25
+
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_i18n","_Typography","_Progress","_styled","_templateObject","t","i18n","ns","LoadingMore","default","createElement","Container","LoaderContainer","CircularProgress","size","spinnerWidth","Typography","use","_taggedTemplateLiteral2","exports"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\n\nimport { Container, LoaderContainer } from \"./styled\";\n\nconst t = i18n.ns(\"app-audit-logs/components/table/loading-more\");\n\nexport const LoadingMore = () => {\n return (\n <Container>\n <LoaderContainer>\n <CircularProgress size={20} spinnerWidth={2} />\n </LoaderContainer>\n <Typography use={\"body2\"}>{t`Loading more records...`}</Typography>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAAsD,IAAAK,eAAA;AAEtD,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,8CAA8C,CAAC;AAE1D,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;EAC7B,oBACIX,MAAA,CAAAY,OAAA,CAAAC,aAAA,CAACP,OAAA,CAAAQ,SAAS,qBACNd,MAAA,CAAAY,OAAA,CAAAC,aAAA,CAACP,OAAA,CAAAS,eAAe,qBACZf,MAAA,CAAAY,OAAA,CAAAC,aAAA,CAACR,SAAA,CAAAW,gBAAgB;IAACC,IAAI,EAAE,EAAG;IAACC,YAAY,EAAE;EAAE,CAAE,CACjC,CAAC,eAClBlB,MAAA,CAAAY,OAAA,CAAAC,aAAA,CAACT,WAAA,CAAAe,UAAU;IAACC,GAAG,EAAE;EAAQ,GAAEZ,CAAC,CAAAD,eAAA,KAAAA,eAAA,OAAAc,uBAAA,CAAAT,OAAA,gCAAsC,CAC3D,CAAC;AAEpB,CAAC;AAACU,OAAA,CAAAX,WAAA,GAAAA,WAAA"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export declare const Container: import("@emotion/styled").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme | undefined;
4
+ as?: import("react").ElementType<any> | undefined;
5
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export declare const LoaderContainer: import("@emotion/styled").StyledComponent<{
7
+ theme?: import("@emotion/react").Theme | undefined;
8
+ as?: import("react").ElementType<any> | undefined;
9
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LoaderContainer = exports.Container = void 0;
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var Container = /*#__PURE__*/(0, _styled.default)("div", {
10
+ label: "Container",
11
+ target: "e1eq8x7r0"
12
+ })("position:absolute;bottom:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:40px;background-color:var(--mdc-theme-background);border-top:1px solid var(--mdc-theme-on-background);");
13
+ exports.Container = Container;
14
+ var LoaderContainer = /*#__PURE__*/(0, _styled.default)("div", {
15
+ label: "LoaderContainer",
16
+ target: "e1eq8x7r1"
17
+ })("display:flex;position:relative;width:50px;> div{background-color:var(--mdc-theme-background);}");
18
+ exports.LoaderContainer = LoaderContainer;
19
+
20
+ //# sourceMappingURL=styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_styled","_interopRequireDefault","require","Container","styled","label","target","exports","LoaderContainer"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const Container = styled(\"div\")`\n position: absolute;\n bottom: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 40px;\n background-color: var(--mdc-theme-background);\n border-top: 1px solid var(--mdc-theme-on-background);\n`;\n\nexport const LoaderContainer = styled(\"div\")`\n display: flex;\n position: relative;\n width: 50px;\n > div {\n background-color: var(--mdc-theme-background);\n }\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,IAAMC,SAAS,oBAAGC,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,uNAWpC;AAACC,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAEK,IAAMK,eAAe,oBAAGJ,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,oGAO1C;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const AuditLogsView: () => JSX.Element;
3
+ export default AuditLogsView;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
13
+ var _i18n = require("@webiny/app/i18n");
14
+ var _EmptyView = _interopRequireDefault(require("@webiny/app-admin/components/EmptyView"));
15
+ var _Scrollbar = require("@webiny/ui/Scrollbar");
16
+ var _appSecurity = require("@webiny/app-security");
17
+ var _LoadingMore = require("./LoadingMore");
18
+ var _LoadMoreButton = require("./LoadMoreButton");
19
+ var _Header = require("./Header");
20
+ var _Filters = require("./Filters");
21
+ var _Table = require("./Table");
22
+ var _Preview = require("./Preview");
23
+ var _hooks = require("../../hooks");
24
+ var _styled = require("./styled");
25
+ var _templateObject;
26
+ var t = _i18n.i18n.ns("app-audit-logs/views/logs");
27
+ var AuditLogsView = function AuditLogsView() {
28
+ var _useState = (0, _react.useState)(null),
29
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
30
+ selectedAuditLog = _useState2[0],
31
+ setSelectedAuditLog = _useState2[1];
32
+ var handleAuditLogSelect = (0, _react.useCallback)(function (auditLog) {
33
+ return setSelectedAuditLog(auditLog);
34
+ }, []);
35
+ var closePreviewModal = (0, _react.useCallback)(function () {
36
+ return setSelectedAuditLog(null);
37
+ }, []);
38
+ var _window = window,
39
+ windowHeight = _window.innerHeight;
40
+ var _useState3 = (0, _react.useState)(0),
41
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
42
+ tableHeight = _useState4[0],
43
+ setTableHeight = _useState4[1];
44
+ var tableRef = (0, _react.useRef)(null);
45
+ var _useSecurity = (0, _appSecurity.useSecurity)(),
46
+ getPermissions = _useSecurity.getPermissions;
47
+ var hasAccessToUsers = Boolean(getPermissions("adminUsers").length);
48
+ var list = (0, _hooks.useAuditLogsList)(hasAccessToUsers);
49
+ (0, _react.useEffect)(function () {
50
+ setTableHeight(tableRef?.current?.clientHeight || 0);
51
+ return function () {
52
+ setTableHeight(0);
53
+ };
54
+ });
55
+ var loadMoreOnScroll = (0, _debounce.default)(function (_ref) {
56
+ var scrollFrame = _ref.scrollFrame;
57
+ if (scrollFrame.top > 0.8) {
58
+ list.listMoreRecords();
59
+ }
60
+ }, 200);
61
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styled.MainContainer, null, /*#__PURE__*/_react.default.createElement(_Header.Header, {
62
+ title: "Audit Logs",
63
+ searchValue: list.search,
64
+ onSearchChange: list.setSearch,
65
+ showingFilters: list.showingFilters,
66
+ showFilters: list.showFilters,
67
+ hideFilters: list.hideFilters
68
+ }), /*#__PURE__*/_react.default.createElement(_styled.Wrapper, null, /*#__PURE__*/_react.default.createElement(_Filters.Filters, {
69
+ showingFilters: list.showingFilters,
70
+ setFilters: list.setFilters,
71
+ hasAccessToUsers: hasAccessToUsers
72
+ }), list.records.length === 0 && !list.isListLoading ? /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
73
+ title: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["No results found."]))),
74
+ action: null
75
+ }) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Preview.Preview, {
76
+ auditLog: selectedAuditLog,
77
+ onClose: function onClose() {
78
+ return closePreviewModal();
79
+ },
80
+ hasAccessToUsers: hasAccessToUsers
81
+ }), /*#__PURE__*/_react.default.createElement(_Scrollbar.Scrollbar, {
82
+ "data-testid": "default-data-list",
83
+ onScrollFrame: function onScrollFrame(scrollFrame) {
84
+ return loadMoreOnScroll({
85
+ scrollFrame: scrollFrame
86
+ });
87
+ }
88
+ }, /*#__PURE__*/_react.default.createElement(_Table.Table, {
89
+ ref: tableRef,
90
+ records: list.records,
91
+ loading: list.isListLoading,
92
+ handleRecordSelect: handleAuditLogSelect,
93
+ sorting: list.sorting,
94
+ onSortingChange: list.setSorting,
95
+ hasAccessToUsers: hasAccessToUsers
96
+ }), /*#__PURE__*/_react.default.createElement(_LoadMoreButton.LoadMoreButton, {
97
+ show: !list.isListLoading && list.meta.hasMoreItems,
98
+ disabled: list.isListLoadingMore,
99
+ windowHeight: windowHeight,
100
+ tableHeight: tableHeight,
101
+ onClick: list.listMoreRecords
102
+ })), list.isListLoadingMore && /*#__PURE__*/_react.default.createElement(_LoadingMore.LoadingMore, null)))));
103
+ };
104
+ var _default = AuditLogsView;
105
+ exports.default = _default;
106
+
107
+ //# sourceMappingURL=Logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_debounce","_interopRequireDefault","_i18n","_EmptyView","_Scrollbar","_appSecurity","_LoadingMore","_LoadMoreButton","_Header","_Filters","_Table","_Preview","_hooks","_styled","_templateObject","t","i18n","ns","AuditLogsView","_useState","useState","_useState2","_slicedToArray2","default","selectedAuditLog","setSelectedAuditLog","handleAuditLogSelect","useCallback","auditLog","closePreviewModal","_window","window","windowHeight","innerHeight","_useState3","_useState4","tableHeight","setTableHeight","tableRef","useRef","_useSecurity","useSecurity","getPermissions","hasAccessToUsers","Boolean","length","list","useAuditLogsList","useEffect","current","clientHeight","loadMoreOnScroll","debounce","_ref","scrollFrame","top","listMoreRecords","createElement","Fragment","MainContainer","Header","title","searchValue","search","onSearchChange","setSearch","showingFilters","showFilters","hideFilters","Wrapper","Filters","setFilters","records","isListLoading","_taggedTemplateLiteral2","action","Preview","onClose","Scrollbar","onScrollFrame","Table","ref","loading","handleRecordSelect","sorting","onSortingChange","setSorting","LoadMoreButton","show","meta","hasMoreItems","disabled","isListLoadingMore","onClick","LoadingMore","_default","exports"],"sources":["Logs.tsx"],"sourcesContent":["import React, { useCallback, useRef, useState, useEffect } from \"react\";\nimport debounce from \"lodash/debounce\";\n\nimport { i18n } from \"@webiny/app/i18n\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { useSecurity } from \"@webiny/app-security\";\n\nimport { LoadingMore } from \"~/views/Logs/LoadingMore\";\nimport { LoadMoreButton } from \"~/views/Logs/LoadMoreButton\";\nimport { Header } from \"~/views/Logs/Header\";\nimport { Filters } from \"~/views/Logs/Filters\";\nimport { Table } from \"~/views/Logs/Table\";\nimport { Preview } from \"~/views/Logs/Preview\";\nimport { useAuditLogsList } from \"~/hooks\";\nimport { Entry } from \"~/utils/transformCmsContentEntriesToRecordEntries\";\nimport { MainContainer, Wrapper } from \"./styled\";\n\nconst t = i18n.ns(\"app-audit-logs/views/logs\");\n\nconst AuditLogsView = () => {\n const [selectedAuditLog, setSelectedAuditLog] = useState<Entry | null>(null);\n const handleAuditLogSelect = useCallback(\n (auditLog: Entry) => 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\n const { getPermissions } = useSecurity();\n const hasAccessToUsers = Boolean(getPermissions(\"adminUsers\").length);\n\n const list = useAuditLogsList(hasAccessToUsers);\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) {\n list.listMoreRecords();\n }\n }, 200);\n\n return (\n <>\n <MainContainer>\n <Header\n title=\"Audit Logs\"\n searchValue={list.search}\n onSearchChange={list.setSearch}\n showingFilters={list.showingFilters}\n showFilters={list.showFilters}\n hideFilters={list.hideFilters}\n />\n <Wrapper>\n <Filters\n showingFilters={list.showingFilters}\n setFilters={list.setFilters}\n hasAccessToUsers={hasAccessToUsers}\n />\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}\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 </Wrapper>\n </MainContainer>\n </>\n );\n};\n\nexport default AuditLogsView;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const LogsModule: () => JSX.Element;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LogsModule = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _list = require("../../config/list");
10
+ var _Filters = require("./Filters");
11
+ var Browser = _list.AuditLogsListConfig.Browser;
12
+ var LogsModule = function LogsModule() {
13
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_list.AuditLogsListConfig, null, /*#__PURE__*/_react.default.createElement(Browser.Filter, {
14
+ name: "timestamp",
15
+ element: /*#__PURE__*/_react.default.createElement(_Filters.FilterByTimestamp, null)
16
+ }), /*#__PURE__*/_react.default.createElement(Browser.Filter, {
17
+ name: "initiator",
18
+ element: /*#__PURE__*/_react.default.createElement(_Filters.FilterByInitiator, null)
19
+ }), /*#__PURE__*/_react.default.createElement(Browser.Filter, {
20
+ name: "app",
21
+ element: /*#__PURE__*/_react.default.createElement(_Filters.FilterByApp, null)
22
+ }), /*#__PURE__*/_react.default.createElement(Browser.Filter, {
23
+ name: "entity",
24
+ element: /*#__PURE__*/_react.default.createElement(_Filters.FilterByEntity, null)
25
+ }), /*#__PURE__*/_react.default.createElement(Browser.Filter, {
26
+ name: "action",
27
+ element: /*#__PURE__*/_react.default.createElement(_Filters.FilterByAction, null)
28
+ })));
29
+ };
30
+ exports.LogsModule = LogsModule;
31
+
32
+ //# sourceMappingURL=LogsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_list","_Filters","Browser","AuditLogsListConfig","LogsModule","default","createElement","Fragment","Filter","name","element","FilterByTimestamp","FilterByInitiator","FilterByApp","FilterByEntity","FilterByAction","exports"],"sources":["LogsModule.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { AuditLogsListConfig } from \"~/config/list\";\nimport {\n FilterByTimestamp,\n FilterByInitiator,\n FilterByApp,\n FilterByEntity,\n FilterByAction\n} from \"~/views/Logs/Filters\";\n\nconst { Browser } = AuditLogsListConfig;\n\nexport const LogsModule = () => {\n return (\n <>\n <AuditLogsListConfig>\n <Browser.Filter name={\"timestamp\"} element={<FilterByTimestamp />} />\n <Browser.Filter name={\"initiator\"} element={<FilterByInitiator />} />\n <Browser.Filter name={\"app\"} element={<FilterByApp />} />\n <Browser.Filter name={\"entity\"} element={<FilterByEntity />} />\n <Browser.Filter name={\"action\"} element={<FilterByAction />} />\n </AuditLogsListConfig>\n </>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAQA,IAAQG,OAAO,GAAKC,yBAAmB,CAA/BD,OAAO;AAER,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC5B,oBACIP,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAAAT,MAAA,CAAAQ,OAAA,CAAAE,QAAA,qBACIV,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACN,KAAA,CAAAG,mBAAmB,qBAChBN,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACJ,OAAO,CAACM,MAAM;IAACC,IAAI,EAAE,WAAY;IAACC,OAAO,eAAEb,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACL,QAAA,CAAAU,iBAAiB,MAAE;EAAE,CAAE,CAAC,eACrEd,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACJ,OAAO,CAACM,MAAM;IAACC,IAAI,EAAE,WAAY;IAACC,OAAO,eAAEb,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACL,QAAA,CAAAW,iBAAiB,MAAE;EAAE,CAAE,CAAC,eACrEf,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACJ,OAAO,CAACM,MAAM;IAACC,IAAI,EAAE,KAAM;IAACC,OAAO,eAAEb,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACL,QAAA,CAAAY,WAAW,MAAE;EAAE,CAAE,CAAC,eACzDhB,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACJ,OAAO,CAACM,MAAM;IAACC,IAAI,EAAE,QAAS;IAACC,OAAO,eAAEb,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACL,QAAA,CAAAa,cAAc,MAAE;EAAE,CAAE,CAAC,eAC/DjB,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACJ,OAAO,CAACM,MAAM;IAACC,IAAI,EAAE,QAAS;IAACC,OAAO,eAAEb,MAAA,CAAAQ,OAAA,CAAAC,aAAA,CAACL,QAAA,CAAAc,cAAc,MAAE;EAAE,CAAE,CAC7C,CACvB,CAAC;AAEX,CAAC;AAACC,OAAA,CAAAZ,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { Entry } from "../../../utils/transformCmsContentEntriesToRecordEntries";
3
+ declare type HeaderProps = {
4
+ auditLog: Entry | null;
5
+ onClose: () => void;
6
+ hasAccessToUsers: boolean;
7
+ };
8
+ export declare const Preview: ({ auditLog, onClose, hasAccessToUsers }: HeaderProps) => JSX.Element | null;
9
+ export {};
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Preview = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _dateFns = require("date-fns");
10
+ var _Grid = require("@webiny/ui/Grid");
11
+ var _Dialog = require("@webiny/ui/Dialog");
12
+ var _CodeEditor = require("@webiny/ui/CodeEditor");
13
+ var _Tooltip = require("@webiny/ui/Tooltip");
14
+ var _Table = require("../Table");
15
+ var _Text = require("../../../components/Text");
16
+ var _styled = require("./styled");
17
+ var Preview = function Preview(_ref) {
18
+ var auditLog = _ref.auditLog,
19
+ onClose = _ref.onClose,
20
+ hasAccessToUsers = _ref.hasAccessToUsers;
21
+ if (!auditLog) {
22
+ return null;
23
+ }
24
+ var date = new Date(auditLog.savedOn);
25
+ return /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
26
+ open: !!auditLog,
27
+ onClose: onClose,
28
+ className: _styled.previewDialog
29
+ }, /*#__PURE__*/_react.default.createElement(_Dialog.DialogTitle, null, auditLog.message, /*#__PURE__*/_react.default.createElement("div", {
30
+ className: "title-actions",
31
+ tabIndex: 0
32
+ })), /*#__PURE__*/_react.default.createElement(_Dialog.DialogContent, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
33
+ span: 6
34
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
35
+ use: "overline"
36
+ }, "Application"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Text.Text, {
37
+ use: "subtitle2"
38
+ }, auditLog.app)), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
39
+ span: 6
40
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
41
+ use: "overline"
42
+ }, "Date"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
43
+ placement: "right",
44
+ content: "UTC: ".concat((0, _dateFns.format)((0, _dateFns.addMinutes)(date, date.getTimezoneOffset()), "yyyy-MM-dd HH:mm:ss"))
45
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
46
+ use: "subtitle2"
47
+ }, (0, _dateFns.format)(date, "yyyy-MM-dd HH:mm:ss (O)")))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
48
+ span: 6
49
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
50
+ use: "overline"
51
+ }, "Entity"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Text.Text, {
52
+ use: "subtitle2"
53
+ }, auditLog.entity.label)), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
54
+ span: 6
55
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
56
+ use: "overline"
57
+ }, "Entity Id"), /*#__PURE__*/_react.default.createElement("br", null), auditLog.entity.link ? /*#__PURE__*/_react.default.createElement("a", {
58
+ href: auditLog.entity.link,
59
+ target: "blank"
60
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
61
+ use: "subtitle2"
62
+ }, auditLog.entityId)) : /*#__PURE__*/_react.default.createElement(_Text.Text, {
63
+ use: "subtitle2"
64
+ }, auditLog.entityId)), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
65
+ span: 6
66
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
67
+ use: "overline"
68
+ }, "Action"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Table.Action, {
69
+ label: auditLog.action.label,
70
+ value: auditLog.action.value
71
+ })), hasAccessToUsers && /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
72
+ span: 6
73
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
74
+ use: "overline"
75
+ }, "Initiator"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("a", {
76
+ href: "/admin-users?id=".concat(auditLog.initiator.id),
77
+ target: "blank"
78
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
79
+ use: "subtitle2"
80
+ }, auditLog.initiator.name)), /*#__PURE__*/_react.default.createElement(_Text.Text, {
81
+ use: "body2"
82
+ }, " (".concat(auditLog.initiator.role, ")"))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
83
+ span: 12
84
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
85
+ use: "overline"
86
+ }, "Payload"), /*#__PURE__*/_react.default.createElement(_styled.PayloadWrapper, null, /*#__PURE__*/_react.default.createElement(_CodeEditor.CodeEditor, {
87
+ mode: "json",
88
+ theme: "chrome",
89
+ value: JSON.stringify(JSON.parse(auditLog.data), null, 2),
90
+ readOnly: true
91
+ }))))), /*#__PURE__*/_react.default.createElement(_Dialog.DialogActions, null, /*#__PURE__*/_react.default.createElement(_Dialog.DialogCancel, {
92
+ onClick: onClose
93
+ }, "Close")));
94
+ };
95
+ exports.Preview = Preview;
96
+
97
+ //# sourceMappingURL=Preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_dateFns","_Grid","_Dialog","_CodeEditor","_Tooltip","_Table","_Text","_styled","Preview","_ref","auditLog","onClose","hasAccessToUsers","date","Date","savedOn","default","createElement","Dialog","open","className","previewDialog","DialogTitle","message","tabIndex","DialogContent","Grid","Cell","span","Text","use","app","Tooltip","placement","content","concat","format","addMinutes","getTimezoneOffset","entity","label","link","href","target","entityId","Action","action","value","initiator","id","name","role","PayloadWrapper","CodeEditor","mode","theme","JSON","stringify","parse","data","readOnly","DialogActions","DialogCancel","onClick","exports"],"sources":["Preview.tsx"],"sourcesContent":["import React from \"react\";\nimport { format, addMinutes } from \"date-fns\";\n\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Dialog, DialogContent, DialogTitle, DialogCancel, DialogActions } from \"@webiny/ui/Dialog\";\nimport { CodeEditor } from \"@webiny/ui/CodeEditor\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\n\nimport { Action } from \"~/views/Logs/Table\";\nimport { Text } from \"~/components/Text\";\nimport { Entry } from \"~/utils/transformCmsContentEntriesToRecordEntries\";\nimport { PayloadWrapper, previewDialog } from \"./styled\";\n\ntype HeaderProps = {\n auditLog: Entry | null;\n onClose: () => void;\n hasAccessToUsers: boolean;\n};\n\nexport const Preview = ({ auditLog, onClose, hasAccessToUsers }: HeaderProps) => {\n if (!auditLog) {\n return null;\n }\n\n const date = new Date(auditLog.savedOn);\n\n return (\n <Dialog open={!!auditLog} onClose={onClose} className={previewDialog}>\n <DialogTitle>\n {auditLog.message}\n <div className=\"title-actions\" tabIndex={0}></div>\n </DialogTitle>\n\n <DialogContent>\n <Grid>\n <Cell span={6}>\n <Text use=\"overline\">Application</Text>\n <br />\n <Text use=\"subtitle2\">{auditLog.app}</Text>\n </Cell>\n <Cell span={6}>\n <Text use=\"overline\">Date</Text>\n <br />\n <Tooltip\n placement=\"right\"\n content={`UTC: ${format(\n addMinutes(date, date.getTimezoneOffset()),\n \"yyyy-MM-dd HH:mm:ss\"\n )}`}\n >\n <Text use={\"subtitle2\"}>{format(date, \"yyyy-MM-dd HH:mm:ss (O)\")}</Text>\n </Tooltip>\n </Cell>\n <Cell span={6}>\n <Text use=\"overline\">Entity</Text>\n <br />\n <Text use=\"subtitle2\">{auditLog.entity.label}</Text>\n </Cell>\n <Cell span={6}>\n <Text use=\"overline\">Entity Id</Text>\n <br />\n {auditLog.entity.link ? (\n <a href={auditLog.entity.link} target={\"blank\"}>\n <Text use=\"subtitle2\">{auditLog.entityId}</Text>\n </a>\n ) : (\n <Text use=\"subtitle2\">{auditLog.entityId}</Text>\n )}\n </Cell>\n <Cell span={6}>\n <Text use=\"overline\">Action</Text>\n <br />\n <Action label={auditLog.action.label} value={auditLog.action.value} />\n </Cell>\n {hasAccessToUsers && (\n <Cell span={6}>\n <Text use=\"overline\">Initiator</Text>\n <br />\n <a href={`/admin-users?id=${auditLog.initiator.id}`} target={\"blank\"}>\n <Text use={\"subtitle2\"}>{auditLog.initiator.name}</Text>\n </a>\n <Text use={\"body2\"}>{` (${auditLog.initiator.role})`}</Text>\n </Cell>\n )}\n <Cell span={12}>\n <Text use=\"overline\">Payload</Text>\n <PayloadWrapper>\n <CodeEditor\n mode=\"json\"\n theme=\"chrome\"\n value={JSON.stringify(JSON.parse(auditLog.data), null, 2)}\n readOnly\n />\n </PayloadWrapper>\n </Cell>\n </Grid>\n </DialogContent>\n <DialogActions>\n <DialogCancel onClick={onClose}>Close</DialogCancel>\n </DialogActions>\n </Dialog>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./Preview";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Preview = require("./Preview");
7
+ Object.keys(_Preview).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Preview[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _Preview[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Preview","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.tsx"],"sourcesContent":["export * from \"./Preview\";\n"],"mappings":";;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,QAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,QAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,QAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const PayloadWrapper: import("@emotion/styled").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme | undefined;
4
+ as?: import("react").ElementType<any> | undefined;
5
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export declare const previewDialog: string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.previewDialog = exports.PayloadWrapper = void 0;
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _emotion = require("emotion");
10
+ var PayloadWrapper = /*#__PURE__*/(0, _styled.default)("div", {
11
+ label: "PayloadWrapper",
12
+ target: "e1r0qp7f0"
13
+ })("#brace-editor{height:280px !important;}.ace_print-margin,.ace_active-line,.ace_gutter-active-line,.ace_cursor-layer{display:none;}.ace_line,.ace_gutter-cell{height:12px !important;}.ace_gutter-layer{width:47px !important;}");
14
+ exports.PayloadWrapper = PayloadWrapper;
15
+ var previewDialog = /*#__PURE__*/(0, _emotion.css)("& .mdc-dialog__surface{width:800px;min-width:800px;}label:previewDialog;");
16
+ exports.previewDialog = previewDialog;
17
+
18
+ //# sourceMappingURL=styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_styled","_interopRequireDefault","require","_emotion","PayloadWrapper","styled","label","target","exports","previewDialog","css"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\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"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,IAAME,cAAc,oBAAGC,eAAM,EAAC,KAAK;EAAAC,KAAA;EAAAC,MAAA;AAAA,oOAoBzC;AAACC,OAAA,CAAAJ,cAAA,GAAAA,cAAA;AAEK,IAAMK,aAAa,oBAAGC,YAAG,6EAK/B;AAACF,OAAA,CAAAC,aAAA,GAAAA,aAAA"}
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import { OnSortingChange, Sorting } from "@webiny/ui/DataTable";
3
+ import { Entry } from "../../../utils/transformCmsContentEntriesToRecordEntries";
4
+ declare type ActionProps = {
5
+ label: string;
6
+ value: string;
7
+ };
8
+ export declare const Action: ({ label, value }: ActionProps) => JSX.Element;
9
+ export interface TableProps {
10
+ records: Entry[];
11
+ loading?: boolean;
12
+ handleRecordSelect: (auditLog: Entry) => void;
13
+ sorting: Sorting;
14
+ onSortingChange: OnSortingChange;
15
+ hasAccessToUsers: boolean;
16
+ }
17
+ export declare const Table: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLDivElement>>;
18
+ export {};
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Table = exports.Action = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _dateFns = require("date-fns");
12
+ var _visibility = require("@material-design-icons/svg/outlined/visibility.svg");
13
+ var _DataTable = require("@webiny/ui/DataTable");
14
+ var _Button = require("@webiny/ui/Button");
15
+ var _Tooltip = require("@webiny/ui/Tooltip");
16
+ var _Text = require("../../../components/Text");
17
+ var _styled = require("./styled");
18
+ var Action = function Action(_ref) {
19
+ var label = _ref.label,
20
+ value = _ref.value;
21
+ return /*#__PURE__*/_react.default.createElement(_styled.ActionWrapper, {
22
+ value: value
23
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
24
+ use: "subtitle1"
25
+ }, label));
26
+ };
27
+ exports.Action = Action;
28
+ var Table = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
29
+ var records = props.records,
30
+ loading = props.loading,
31
+ handleRecordSelect = props.handleRecordSelect,
32
+ sorting = props.sorting,
33
+ onSortingChange = props.onSortingChange,
34
+ hasAccessToUsers = props.hasAccessToUsers;
35
+ var columns = (0, _objectSpread2.default)((0, _objectSpread2.default)({
36
+ savedOn: {
37
+ header: "Timestamp",
38
+ cell: function cell(_ref2) {
39
+ var savedOn = _ref2.savedOn;
40
+ var date = new Date(savedOn);
41
+ return /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
42
+ placement: "right",
43
+ content: "UTC: ".concat((0, _dateFns.format)((0, _dateFns.addMinutes)(date, date.getTimezoneOffset()), "yyyy-MM-dd HH:mm:ss"))
44
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
45
+ use: "subtitle1"
46
+ }, (0, _dateFns.format)(date, "yyyy-MM-dd HH:mm:ss")), /*#__PURE__*/_react.default.createElement(_styled.TimezoneText, {
47
+ use: "body2"
48
+ }, (0, _dateFns.format)(date, "(O)")));
49
+ },
50
+ enableSorting: true
51
+ },
52
+ app: {
53
+ header: "App/Entity",
54
+ cell: function cell(_ref3) {
55
+ var app = _ref3.app,
56
+ entity = _ref3.entity,
57
+ entityId = _ref3.entityId;
58
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Text.Text, {
59
+ use: "subtitle1"
60
+ }, app), entity && /*#__PURE__*/_react.default.createElement(_styled.TextGray, {
61
+ use: "body2"
62
+ }, " [Entity: ".concat(entity.label, "]")), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_styled.TextGray, {
63
+ use: "body2"
64
+ }, "ID: "), entity.link ? /*#__PURE__*/_react.default.createElement("a", {
65
+ href: entity.link,
66
+ target: "blank"
67
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
68
+ use: "body2"
69
+ }, entityId)) : /*#__PURE__*/_react.default.createElement(_Text.Text, {
70
+ use: "body2"
71
+ }, entityId));
72
+ },
73
+ className: _styled.appColumn
74
+ },
75
+ action: {
76
+ header: "Action",
77
+ cell: function cell(_ref4) {
78
+ var action = _ref4.action;
79
+ return /*#__PURE__*/_react.default.createElement(Action, {
80
+ label: action.label,
81
+ value: action.value
82
+ });
83
+ }
84
+ },
85
+ message: {
86
+ header: "Message",
87
+ cell: function cell(_ref5) {
88
+ var message = _ref5.message;
89
+ return /*#__PURE__*/_react.default.createElement(_Text.Text, {
90
+ use: "subtitle1"
91
+ }, message);
92
+ },
93
+ className: _styled.wideColumn
94
+ }
95
+ }, hasAccessToUsers && {
96
+ initiator: {
97
+ header: "Initiator",
98
+ cell: function cell(_ref6) {
99
+ var initiator = _ref6.initiator;
100
+ return /*#__PURE__*/_react.default.createElement("a", {
101
+ href: "/admin-users?id=".concat(initiator.id),
102
+ target: "blank"
103
+ }, /*#__PURE__*/_react.default.createElement(_Text.Text, {
104
+ use: "subtitle1"
105
+ }, initiator.name));
106
+ }
107
+ }
108
+ }), {}, {
109
+ preview: {
110
+ header: "",
111
+ cell: function cell(auditLog) {
112
+ return /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
113
+ onClick: function onClick() {
114
+ return handleRecordSelect(auditLog);
115
+ },
116
+ icon: /*#__PURE__*/_react.default.createElement(_visibility.ReactComponent, null)
117
+ });
118
+ },
119
+ className: _styled.previewColumn
120
+ }
121
+ });
122
+ var tableSorting = (0, _react.useMemo)(function () {
123
+ if (!Array.isArray(sorting) || sorting.length === 0) {
124
+ return [{
125
+ id: "savedOn",
126
+ desc: true
127
+ }];
128
+ }
129
+ return sorting;
130
+ }, [sorting]);
131
+ return /*#__PURE__*/_react.default.createElement("div", {
132
+ ref: ref
133
+ }, /*#__PURE__*/_react.default.createElement(_DataTable.DataTable, {
134
+ columns: columns,
135
+ data: records,
136
+ loadingInitial: loading,
137
+ stickyRows: 1,
138
+ sorting: tableSorting,
139
+ onSortingChange: onSortingChange
140
+ }));
141
+ });
142
+ exports.Table = Table;
143
+ Table.displayName = "Table";
144
+
145
+ //# sourceMappingURL=Table.js.map