@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.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/components/Text.d.ts +3 -0
- package/components/Text.js +16 -0
- package/components/Text.js.map +1 -0
- package/config/list/AuditLogsListConfig.d.ts +25 -0
- package/config/list/AuditLogsListConfig.js +34 -0
- package/config/list/AuditLogsListConfig.js.map +1 -0
- package/config/list/Browser/Filter.d.ts +20 -0
- package/config/list/Browser/Filter.js +54 -0
- package/config/list/Browser/Filter.js.map +1 -0
- package/config/list/Browser/FiltersToWhere.d.ts +7 -0
- package/config/list/Browser/FiltersToWhere.js +23 -0
- package/config/list/Browser/FiltersToWhere.js.map +1 -0
- package/config/list/Browser/index.d.ts +20 -0
- package/config/list/Browser/index.js +15 -0
- package/config/list/Browser/index.js.map +1 -0
- package/config/list/index.d.ts +1 -0
- package/config/list/index.js +18 -0
- package/config/list/index.js.map +1 -0
- package/constants/index.d.ts +1 -0
- package/constants/index.js +10 -0
- package/constants/index.js.map +1 -0
- package/graphql.d.ts +1 -0
- package/graphql.js +15 -0
- package/graphql.js.map +1 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +18 -0
- package/hooks/index.js.map +1 -0
- package/hooks/useAuditLogsList.d.ts +21 -0
- package/hooks/useAuditLogsList.js +116 -0
- package/hooks/useAuditLogsList.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +53 -0
- package/index.js.map +1 -0
- package/package.json +59 -0
- package/plugins/permissionRenderer/AuditLogsPermissions.d.ts +8 -0
- package/plugins/permissionRenderer/AuditLogsPermissions.js +118 -0
- package/plugins/permissionRenderer/AuditLogsPermissions.js.map +1 -0
- package/plugins/permissionRenderer/index.d.ts +1 -0
- package/plugins/permissionRenderer/index.js +40 -0
- package/plugins/permissionRenderer/index.js.map +1 -0
- package/types.d.ts +19 -0
- package/types.js +7 -0
- package/types.js.map +1 -0
- package/utils/transformCmsContentEntriesToRecordEntries.d.ts +25 -0
- package/utils/transformCmsContentEntriesToRecordEntries.js +50 -0
- package/utils/transformCmsContentEntriesToRecordEntries.js.map +1 -0
- package/views/Logs/Filters/FilterByAction.d.ts +2 -0
- package/views/Logs/Filters/FilterByAction.js +62 -0
- package/views/Logs/Filters/FilterByAction.js.map +1 -0
- package/views/Logs/Filters/FilterByApp.d.ts +2 -0
- package/views/Logs/Filters/FilterByApp.js +46 -0
- package/views/Logs/Filters/FilterByApp.js.map +1 -0
- package/views/Logs/Filters/FilterByEntity.d.ts +2 -0
- package/views/Logs/Filters/FilterByEntity.js +60 -0
- package/views/Logs/Filters/FilterByEntity.js.map +1 -0
- package/views/Logs/Filters/FilterByInitiator.d.ts +2 -0
- package/views/Logs/Filters/FilterByInitiator.js +50 -0
- package/views/Logs/Filters/FilterByInitiator.js.map +1 -0
- package/views/Logs/Filters/FilterByTimestamp.d.ts +2 -0
- package/views/Logs/Filters/FilterByTimestamp.js +48 -0
- package/views/Logs/Filters/FilterByTimestamp.js.map +1 -0
- package/views/Logs/Filters/Filters.d.ts +8 -0
- package/views/Logs/Filters/Filters.js +43 -0
- package/views/Logs/Filters/Filters.js.map +1 -0
- package/views/Logs/Filters/index.d.ts +6 -0
- package/views/Logs/Filters/index.js +73 -0
- package/views/Logs/Filters/index.js.map +1 -0
- package/views/Logs/Filters/styled.d.ts +5 -0
- package/views/Logs/Filters/styled.js +15 -0
- package/views/Logs/Filters/styled.js.map +1 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.d.ts +8 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.js +44 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.js.map +1 -0
- package/views/Logs/Header/ButtonFilters/index.d.ts +1 -0
- package/views/Logs/Header/ButtonFilters/index.js +18 -0
- package/views/Logs/Header/ButtonFilters/index.js.map +1 -0
- package/views/Logs/Header/Header.d.ts +11 -0
- package/views/Logs/Header/Header.js +55 -0
- package/views/Logs/Header/Header.js.map +1 -0
- package/views/Logs/Header/index.d.ts +1 -0
- package/views/Logs/Header/index.js +18 -0
- package/views/Logs/Header/index.js.map +1 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.d.ts +9 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.js +32 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.js.map +1 -0
- package/views/Logs/LoadMoreButton/index.d.ts +1 -0
- package/views/Logs/LoadMoreButton/index.js +18 -0
- package/views/Logs/LoadMoreButton/index.js.map +1 -0
- package/views/Logs/LoadMoreButton/styled.d.ts +5 -0
- package/views/Logs/LoadMoreButton/styled.js +15 -0
- package/views/Logs/LoadMoreButton/styled.js.map +1 -0
- package/views/Logs/LoadingMore/index.d.ts +2 -0
- package/views/Logs/LoadingMore/index.js +26 -0
- package/views/Logs/LoadingMore/index.js.map +1 -0
- package/views/Logs/LoadingMore/styled.d.ts +9 -0
- package/views/Logs/LoadingMore/styled.js +20 -0
- package/views/Logs/LoadingMore/styled.js.map +1 -0
- package/views/Logs/Logs.d.ts +3 -0
- package/views/Logs/Logs.js +107 -0
- package/views/Logs/Logs.js.map +1 -0
- package/views/Logs/LogsModule.d.ts +2 -0
- package/views/Logs/LogsModule.js +32 -0
- package/views/Logs/LogsModule.js.map +1 -0
- package/views/Logs/Preview/Preview.d.ts +9 -0
- package/views/Logs/Preview/Preview.js +97 -0
- package/views/Logs/Preview/Preview.js.map +1 -0
- package/views/Logs/Preview/index.d.ts +1 -0
- package/views/Logs/Preview/index.js +18 -0
- package/views/Logs/Preview/index.js.map +1 -0
- package/views/Logs/Preview/styled.d.ts +6 -0
- package/views/Logs/Preview/styled.js +18 -0
- package/views/Logs/Preview/styled.js.map +1 -0
- package/views/Logs/Table/Table.d.ts +18 -0
- package/views/Logs/Table/Table.js +145 -0
- package/views/Logs/Table/Table.js.map +1 -0
- package/views/Logs/Table/index.d.ts +1 -0
- package/views/Logs/Table/index.js +18 -0
- package/views/Logs/Table/index.js.map +1 -0
- package/views/Logs/Table/styled.d.ts +20 -0
- package/views/Logs/Table/styled.js +49 -0
- package/views/Logs/Table/styled.js.map +1 -0
- package/views/Logs/styled.d.ts +9 -0
- package/views/Logs/styled.js +20 -0
- 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,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,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
|