@abtnode/ux 1.8.26 → 1.8.28
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/lib/actions.js +109 -0
- package/lib/blocklet/actions.js +437 -0
- package/lib/blocklet/audit-logs.js +194 -0
- package/lib/blocklet/avatar.js +96 -0
- package/lib/blocklet/blocklet-source.js +56 -0
- package/lib/blocklet/component/configuration.js +124 -0
- package/lib/blocklet/component/delete.js +115 -0
- package/lib/blocklet/component/environment.js +277 -0
- package/lib/blocklet/component/index.js +742 -0
- package/lib/blocklet/component/setting.js +135 -0
- package/lib/blocklet/configuration.js +463 -0
- package/lib/blocklet/disk-info.js +89 -0
- package/lib/blocklet/icons.js +26 -0
- package/lib/blocklet/log.js +55 -0
- package/lib/blocklet/mode.js +33 -0
- package/lib/blocklet/overview.js +184 -0
- package/lib/blocklet/runtime-info.js +85 -0
- package/lib/blocklet/status.js +103 -0
- package/lib/blocklet/util.js +119 -0
- package/lib/blocklet/version.js +178 -0
- package/lib/card-selector.js +9 -22
- package/lib/click-to-copy.js +36 -0
- package/lib/confirm.js +149 -0
- package/lib/contexts/audit-log.js +141 -0
- package/lib/contexts/deleting-blocklets.js +78 -0
- package/lib/contexts/node.js +28 -0
- package/lib/contexts/session.js +20 -0
- package/lib/contexts/team.js +19 -0
- package/lib/did-address.js +75 -0
- package/lib/dot.js +18 -0
- package/lib/form/form-text-input.js +12 -38
- package/lib/form/form-wrapper.js +0 -7
- package/lib/form/required.js +0 -6
- package/lib/hooks/mobile-width.js +19 -0
- package/lib/hooks/use-passport-id.js +0 -5
- package/lib/icons/long-arrow.svg +5 -0
- package/lib/index.js +0 -3
- package/lib/invitation/invitation-app.js +3 -21
- package/lib/invitation/invitation-passport.js +2 -16
- package/lib/invitation/invitation-receive.js +2 -19
- package/lib/invitation/invitation-user.js +0 -16
- package/lib/invitation/invitation.js +0 -23
- package/lib/issue-passport.js +2 -31
- package/lib/launch-blocklet/content-layout.js +3 -19
- package/lib/launch-blocklet/page-header.js +0 -9
- package/lib/layout/addon.js +0 -24
- package/lib/locales/en.js +1046 -38
- package/lib/locales/index.js +0 -3
- package/lib/locales/zh.js +1049 -36
- package/lib/logs/clock.js +19 -0
- package/lib/logs/log-terminal.js +172 -0
- package/lib/lost-passport.js +6 -51
- package/lib/nav-logo.js +12 -33
- package/lib/passport-tag.js +41 -0
- package/lib/permission.js +68 -0
- package/lib/relative-time.js +61 -0
- package/lib/schema-form/color-input.js +2 -15
- package/lib/schema-form/common-prop-types.js +0 -3
- package/lib/schema-form/index.js +8 -45
- package/lib/schema-form/passport-input.js +6 -24
- package/lib/schema-form/text-input.js +9 -26
- package/lib/table-icons.js +42 -0
- package/lib/table.js +13 -0
- package/lib/tag.js +35 -0
- package/lib/team/members/actions.js +99 -0
- package/lib/team/members/index.js +476 -0
- package/lib/team/members/invitations.js +196 -0
- package/lib/team/members/invite-member.js +212 -0
- package/lib/team/members/issue-passport.js +155 -0
- package/lib/team/members/member.js +294 -0
- package/lib/team/members/passport-issuances.js +154 -0
- package/lib/team/members/passports.js +329 -0
- package/lib/team/members/toggle-user-approval.js +128 -0
- package/lib/team/members/transfer-node.js +262 -0
- package/lib/team/members/util.js +20 -0
- package/lib/team/passports/detail.js +261 -0
- package/lib/team/passports/index.js +220 -0
- package/lib/team/passports/mutate-role.js +204 -0
- package/lib/team/passports/trusted-issuer.js +295 -0
- package/lib/team/passports/trusted-issuers.js +238 -0
- package/lib/team/search-input.js +36 -0
- package/lib/team/styles/dialog.js +13 -0
- package/lib/team/styles/list-header.js +13 -0
- package/lib/toast.js +4 -19
- package/lib/util/index.js +504 -38
- package/lib/who-can-access/config.js +0 -6
- package/lib/wrap-locale.js +0 -7
- package/package.json +43 -20
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = BlockletVersion;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
10
|
+
var _notistack = require("notistack");
|
|
11
|
+
var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
|
|
12
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
13
|
+
var _ArrowUpward = _interopRequireDefault(require("@mui/icons-material/ArrowUpward"));
|
|
14
|
+
var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
|
|
15
|
+
var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
16
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
17
|
+
var _constant = require("@blocklet/constant");
|
|
18
|
+
var _util = require("@blocklet/meta/lib/util");
|
|
19
|
+
var _tag = _interopRequireDefault(require("../tag"));
|
|
20
|
+
var _confirm = _interopRequireDefault(require("../confirm"));
|
|
21
|
+
var _node = require("../contexts/node");
|
|
22
|
+
var _util2 = require("../util");
|
|
23
|
+
var _permission = require("../permission");
|
|
24
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
25
|
+
const _excluded = ["blocklet", "checkUpgrade", "hasPermission"];
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
28
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
30
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
31
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
32
|
+
function Version(_ref) {
|
|
33
|
+
let {
|
|
34
|
+
blocklet,
|
|
35
|
+
checkUpgrade,
|
|
36
|
+
hasPermission
|
|
37
|
+
} = _ref,
|
|
38
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
39
|
+
const {
|
|
40
|
+
api
|
|
41
|
+
} = (0, _node.useNodeContext)();
|
|
42
|
+
const {
|
|
43
|
+
t
|
|
44
|
+
} = (0, _react.useContext)(_context.LocaleContext);
|
|
45
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
46
|
+
const [error, setError] = (0, _react.useState)('');
|
|
47
|
+
const [newVersionBlocklet, setNewVersionBlocklet] = (0, _react.useState)(null);
|
|
48
|
+
const [confirmSetting, setConfirmSetting] = (0, _react.useState)(null);
|
|
49
|
+
const {
|
|
50
|
+
enqueueSnackbar
|
|
51
|
+
} = (0, _notistack.useSnackbar)();
|
|
52
|
+
(0, _react.useEffect)(() => {
|
|
53
|
+
setNewVersionBlocklet(null);
|
|
54
|
+
if (checkUpgrade && blocklet.mode !== _constant.BLOCKLET_MODES.DEVELOPMENT) {
|
|
55
|
+
api.getLatestBlockletVersion({
|
|
56
|
+
input: {
|
|
57
|
+
did: blocklet.meta.did,
|
|
58
|
+
version: blocklet.meta.version
|
|
59
|
+
}
|
|
60
|
+
}).then(_ref2 => {
|
|
61
|
+
let {
|
|
62
|
+
data
|
|
63
|
+
} = _ref2;
|
|
64
|
+
if (data) {
|
|
65
|
+
const {
|
|
66
|
+
version,
|
|
67
|
+
registryUrl
|
|
68
|
+
} = data;
|
|
69
|
+
if (version && _semver.default.gt(version, blocklet.meta.version)) {
|
|
70
|
+
setNewVersionBlocklet({
|
|
71
|
+
version,
|
|
72
|
+
registryUrl
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
// eslint-disable-next-line max-len
|
|
78
|
+
.catch(err => console.error("Failed to fetch latest version: ".concat(blocklet.meta.name, ", error: ").concat((0, _util2.formatError)(err)))); // prettier-ignore
|
|
79
|
+
}
|
|
80
|
+
}, [blocklet, checkUpgrade]); // eslint-disable-line
|
|
81
|
+
|
|
82
|
+
const onCancel = () => {
|
|
83
|
+
setLoading(false);
|
|
84
|
+
setConfirmSetting(null);
|
|
85
|
+
};
|
|
86
|
+
const onConfirm = async () => {
|
|
87
|
+
setLoading(true);
|
|
88
|
+
try {
|
|
89
|
+
const input = {
|
|
90
|
+
did: blocklet.meta.did,
|
|
91
|
+
version: newVersionBlocklet.version,
|
|
92
|
+
registryUrl: newVersionBlocklet.registryUrl || ''
|
|
93
|
+
};
|
|
94
|
+
await (0, _util2.sleep)(2000);
|
|
95
|
+
await api.upgradeBlocklet({
|
|
96
|
+
input
|
|
97
|
+
});
|
|
98
|
+
} catch (err) {
|
|
99
|
+
enqueueSnackbar("Blocklet upgrade failed: ".concat((0, _util2.formatError)(err)), {
|
|
100
|
+
autoHideDuration: 5000,
|
|
101
|
+
variant: 'error'
|
|
102
|
+
});
|
|
103
|
+
} finally {
|
|
104
|
+
setLoading(false);
|
|
105
|
+
setConfirmSetting(null);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
const setting = {
|
|
109
|
+
title: "".concat(t('common.upgrade'), " ").concat(t('common.blocklet'), " ").concat((0, _util.getDisplayName)(blocklet)),
|
|
110
|
+
description: t('blocklet.action.upgradeDescription'),
|
|
111
|
+
confirm: t('blocklet.action.confirmUpgrade'),
|
|
112
|
+
cancel: t('common.cancel'),
|
|
113
|
+
onConfirm,
|
|
114
|
+
onCancel
|
|
115
|
+
};
|
|
116
|
+
if (hasPermission && newVersionBlocklet && !(0, _util2.isInProgress)(blocklet.status)) {
|
|
117
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
118
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, _objectSpread(_objectSpread({}, rest), {}, {
|
|
119
|
+
children: blocklet.meta.version
|
|
120
|
+
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
121
|
+
title: t('common.updateAvailable', {
|
|
122
|
+
version: newVersionBlocklet.version
|
|
123
|
+
}),
|
|
124
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
125
|
+
size: "small",
|
|
126
|
+
style: {
|
|
127
|
+
marginLeft: 8
|
|
128
|
+
},
|
|
129
|
+
disabled: loading,
|
|
130
|
+
onClick: () => setConfirmSetting(setting),
|
|
131
|
+
children: loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
|
|
132
|
+
size: [16, 10]
|
|
133
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowUpward.default, {
|
|
134
|
+
style: {
|
|
135
|
+
fontSize: 16,
|
|
136
|
+
color: 'red'
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
}), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toast.default, {
|
|
141
|
+
variant: "error",
|
|
142
|
+
message: error,
|
|
143
|
+
onClose: () => setError('')
|
|
144
|
+
}), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
|
|
145
|
+
title: confirmSetting.title,
|
|
146
|
+
description: confirmSetting.description,
|
|
147
|
+
confirm: confirmSetting.confirm,
|
|
148
|
+
cancel: confirmSetting.cancel,
|
|
149
|
+
params: confirmSetting.params,
|
|
150
|
+
onConfirm: confirmSetting.onConfirm,
|
|
151
|
+
onCancel: confirmSetting.onCancel
|
|
152
|
+
})]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, _objectSpread(_objectSpread({}, rest), {}, {
|
|
156
|
+
children: blocklet.meta.version
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
Version.propTypes = {
|
|
160
|
+
blocklet: _propTypes.default.object.isRequired,
|
|
161
|
+
checkUpgrade: _propTypes.default.bool,
|
|
162
|
+
hasPermission: _propTypes.default.bool
|
|
163
|
+
};
|
|
164
|
+
Version.defaultProps = {
|
|
165
|
+
checkUpgrade: true,
|
|
166
|
+
hasPermission: false
|
|
167
|
+
};
|
|
168
|
+
const BlockletVersionInDaemon = (0, _permission.withPermission)(Version, 'mutate_blocklet');
|
|
169
|
+
const BlockletVersionInService = (0, _permission.withPermission)(Version, '', _util2.BlockletAdminRoles);
|
|
170
|
+
function BlockletVersion(props) {
|
|
171
|
+
const {
|
|
172
|
+
inService
|
|
173
|
+
} = (0, _node.useNodeContext)();
|
|
174
|
+
if (inService) {
|
|
175
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletVersionInService, _objectSpread({}, props));
|
|
176
|
+
}
|
|
177
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletVersionInDaemon, _objectSpread({}, props));
|
|
178
|
+
}
|
package/lib/card-selector.js
CHANGED
|
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = CardSelector;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
11
|
-
|
|
12
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
|
|
14
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
-
|
|
16
11
|
var _templateObject;
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
21
|
-
|
|
22
14
|
function CardSelector(_ref) {
|
|
23
15
|
let {
|
|
24
16
|
list,
|
|
@@ -30,40 +22,36 @@ function CardSelector(_ref) {
|
|
|
30
22
|
} = _ref;
|
|
31
23
|
const [selectedId, setSelectedId] = (0, _react.useState)(0);
|
|
32
24
|
const [translateX, setTranslateX] = (0, _react.useState)(0);
|
|
33
|
-
const outterCon = (0, _react.useRef)(null);
|
|
25
|
+
const outterCon = (0, _react.useRef)(null);
|
|
34
26
|
|
|
27
|
+
// 选择卡片
|
|
35
28
|
const selectedItem = i => {
|
|
36
29
|
if (i < 0 || i > list.length - 1) {
|
|
37
30
|
return;
|
|
38
31
|
}
|
|
32
|
+
setSelectedId(i);
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
// 外部容器大小
|
|
42
35
|
const outerWidth = outterCon.current.clientWidth;
|
|
43
36
|
setTranslateX(i * (width + cardSpace) - (outerWidth - width) / 2 + cardSpace * 0.5);
|
|
44
37
|
onSelect(i);
|
|
45
38
|
};
|
|
46
|
-
|
|
47
39
|
(0, _react.useEffect)(() => {
|
|
48
40
|
selectedItem(defaultIndex);
|
|
49
|
-
|
|
50
41
|
const func = e => e.preventDefault();
|
|
51
|
-
|
|
52
42
|
outterCon.current.addEventListener('touchmove', func, {
|
|
53
43
|
passive: false
|
|
54
|
-
});
|
|
44
|
+
});
|
|
45
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55
46
|
}, []);
|
|
56
47
|
let startX;
|
|
57
|
-
|
|
58
48
|
const touchstart = e => {
|
|
59
49
|
const point = e.touches[0];
|
|
60
50
|
startX = point.clientX;
|
|
61
51
|
};
|
|
62
|
-
|
|
63
52
|
const touchend = e => {
|
|
64
53
|
const point = e.changedTouches[0];
|
|
65
54
|
const diffX = startX - point.clientX;
|
|
66
|
-
|
|
67
55
|
if (Math.abs(diffX) > 60) {
|
|
68
56
|
if (diffX > 0) {
|
|
69
57
|
selectedItem(selectedId + 1);
|
|
@@ -72,7 +60,6 @@ function CardSelector(_ref) {
|
|
|
72
60
|
}
|
|
73
61
|
}
|
|
74
62
|
};
|
|
75
|
-
|
|
76
63
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Contianer, {
|
|
77
64
|
ref: outterCon,
|
|
78
65
|
onTouchStart: touchstart,
|
|
@@ -89,8 +76,10 @@ function CardSelector(_ref) {
|
|
|
89
76
|
width,
|
|
90
77
|
height,
|
|
91
78
|
margin: cardSpace / 2
|
|
92
|
-
}
|
|
79
|
+
}
|
|
80
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
93
81
|
,
|
|
82
|
+
|
|
94
83
|
onClick: () => selectedItem(i),
|
|
95
84
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
96
85
|
src: e.src,
|
|
@@ -101,9 +90,7 @@ function CardSelector(_ref) {
|
|
|
101
90
|
})
|
|
102
91
|
});
|
|
103
92
|
}
|
|
104
|
-
|
|
105
93
|
const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n outline: #526ded solid 0;\n transition: all ease 0.2s;\n box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px;\n }\n &.selected {\n cursor: default;\n img {\n outline: #526ded solid 5px;\n }\n }\n }\n"])));
|
|
106
|
-
|
|
107
94
|
CardSelector.propTypes = {
|
|
108
95
|
list: _propTypes.default.array,
|
|
109
96
|
width: _propTypes.default.number,
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = ClickToCopy;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _ClickToCopy = _interopRequireDefault(require("@arcblock/ux/lib/ClickToCopy"));
|
|
10
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
const _excluded = ["children"];
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
18
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
19
|
+
function ClickToCopy(_ref) {
|
|
20
|
+
let {
|
|
21
|
+
children
|
|
22
|
+
} = _ref,
|
|
23
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
24
|
+
const {
|
|
25
|
+
t
|
|
26
|
+
} = (0, _react.useContext)(_context.LocaleContext);
|
|
27
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickToCopy.default, _objectSpread(_objectSpread({
|
|
28
|
+
tip: t('common.copyTip'),
|
|
29
|
+
copiedTip: t('common.copiedTip')
|
|
30
|
+
}, rest), {}, {
|
|
31
|
+
children: children
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
ClickToCopy.propTypes = {
|
|
35
|
+
children: _propTypes.default.any.isRequired
|
|
36
|
+
};
|
package/lib/confirm.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = ConfirmDialog;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
+
var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
|
|
11
|
+
var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
|
|
12
|
+
var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions"));
|
|
13
|
+
var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent"));
|
|
14
|
+
var _DialogContentText = _interopRequireDefault(require("@mui/material/DialogContentText"));
|
|
15
|
+
var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
|
|
16
|
+
var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
|
|
17
|
+
var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
|
|
18
|
+
var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
|
|
19
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
20
|
+
var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
21
|
+
var _util = require("./util");
|
|
22
|
+
var _mobileWidth = _interopRequireDefault(require("./hooks/mobile-width"));
|
|
23
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
|
+
var _templateObject;
|
|
25
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
27
|
+
function ConfirmDialog(_ref) {
|
|
28
|
+
let {
|
|
29
|
+
title,
|
|
30
|
+
description,
|
|
31
|
+
showCancel,
|
|
32
|
+
cancel,
|
|
33
|
+
confirm,
|
|
34
|
+
color,
|
|
35
|
+
params: initialParams,
|
|
36
|
+
onCancel,
|
|
37
|
+
onConfirm
|
|
38
|
+
} = _ref;
|
|
39
|
+
const [params, setParams] = (0, _react.useState)(initialParams);
|
|
40
|
+
const [open, setOpen] = (0, _react.useState)(true);
|
|
41
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
42
|
+
const [error, setError] = (0, _react.useState)('');
|
|
43
|
+
const {
|
|
44
|
+
t: changeLocale
|
|
45
|
+
} = (0, _context.useLocaleContext)();
|
|
46
|
+
const theme = (0, _useTheme.default)();
|
|
47
|
+
const onCallback = async cb => {
|
|
48
|
+
if (typeof cb === 'function') {
|
|
49
|
+
setLoading(true);
|
|
50
|
+
try {
|
|
51
|
+
await cb(params);
|
|
52
|
+
setOpen(false);
|
|
53
|
+
} catch (err) {
|
|
54
|
+
setError((0, _util.formatError)(err));
|
|
55
|
+
console.error(err);
|
|
56
|
+
} finally {
|
|
57
|
+
setLoading(false);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
setOpen(false);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const t = typeof title === 'function' ? title() : title;
|
|
64
|
+
const d = typeof description === 'function' ? description(params, setParams, setError) : description;
|
|
65
|
+
const isBreakpointsDownSm = (0, _useMediaQuery.default)(theme.breakpoints.down('md'));
|
|
66
|
+
const handleClick = e => {
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
};
|
|
69
|
+
const {
|
|
70
|
+
minWidth
|
|
71
|
+
} = (0, _mobileWidth.default)();
|
|
72
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledDialog, {
|
|
73
|
+
onClick: handleClick,
|
|
74
|
+
fullScreen: isBreakpointsDownSm,
|
|
75
|
+
open: open,
|
|
76
|
+
style: {
|
|
77
|
+
minWidth
|
|
78
|
+
},
|
|
79
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogTitle.default, {
|
|
80
|
+
children: t
|
|
81
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogContent.default, {
|
|
82
|
+
style: {
|
|
83
|
+
minWidth
|
|
84
|
+
},
|
|
85
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContentText.default, {
|
|
86
|
+
component: "div",
|
|
87
|
+
children: d
|
|
88
|
+
}), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
|
|
89
|
+
severity: "error",
|
|
90
|
+
style: {
|
|
91
|
+
width: '100%',
|
|
92
|
+
marginTop: 8
|
|
93
|
+
},
|
|
94
|
+
children: error
|
|
95
|
+
})]
|
|
96
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogActions.default, {
|
|
97
|
+
className: "delete-actions",
|
|
98
|
+
style: {
|
|
99
|
+
padding: '8px 24px 24px'
|
|
100
|
+
},
|
|
101
|
+
children: [showCancel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
102
|
+
onClick: e => {
|
|
103
|
+
e.stopPropagation();
|
|
104
|
+
onCallback(onCancel);
|
|
105
|
+
},
|
|
106
|
+
color: "inherit",
|
|
107
|
+
"data-cy": "cancel-confirm-dialog",
|
|
108
|
+
children: cancel || changeLocale('common.cancel')
|
|
109
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
|
|
110
|
+
onClick: e => {
|
|
111
|
+
e.stopPropagation();
|
|
112
|
+
onCallback(onConfirm);
|
|
113
|
+
},
|
|
114
|
+
color: color
|
|
115
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
116
|
+
,
|
|
117
|
+
disabled: params.__disableConfirm || loading,
|
|
118
|
+
variant: "contained",
|
|
119
|
+
"data-cy": "submit-confirm-dialog",
|
|
120
|
+
autoFocus: true,
|
|
121
|
+
children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
|
|
122
|
+
size: [16, 10]
|
|
123
|
+
}), confirm]
|
|
124
|
+
})]
|
|
125
|
+
})]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
ConfirmDialog.propTypes = {
|
|
129
|
+
title: _propTypes.default.any.isRequired,
|
|
130
|
+
description: _propTypes.default.any.isRequired,
|
|
131
|
+
// can be a function that renders different content based on params
|
|
132
|
+
showCancel: _propTypes.default.bool,
|
|
133
|
+
cancel: _propTypes.default.string,
|
|
134
|
+
color: _propTypes.default.string,
|
|
135
|
+
confirm: _propTypes.default.string,
|
|
136
|
+
params: _propTypes.default.object,
|
|
137
|
+
// This object holds states managed in the dialog
|
|
138
|
+
onCancel: _propTypes.default.func,
|
|
139
|
+
onConfirm: _propTypes.default.func.isRequired
|
|
140
|
+
};
|
|
141
|
+
ConfirmDialog.defaultProps = {
|
|
142
|
+
onCancel: () => {},
|
|
143
|
+
showCancel: true,
|
|
144
|
+
cancel: '',
|
|
145
|
+
confirm: 'Confirm',
|
|
146
|
+
color: 'error',
|
|
147
|
+
params: {}
|
|
148
|
+
};
|
|
149
|
+
const StyledDialog = (0, _styled.default)(_Dialog.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])));
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AuditLogContext = exports.AuditLogConsumer = void 0;
|
|
7
|
+
exports.AuditLogProvider = AuditLogProvider;
|
|
8
|
+
exports.useAuditLogContext = useAuditLogContext;
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
|
|
11
|
+
var _toast = _interopRequireDefault(require("../toast"));
|
|
12
|
+
var _node = require("./node");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
const AuditLogContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
16
|
+
exports.AuditLogContext = AuditLogContext;
|
|
17
|
+
const {
|
|
18
|
+
Provider,
|
|
19
|
+
Consumer
|
|
20
|
+
} = AuditLogContext;
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line react/prop-types
|
|
23
|
+
exports.AuditLogConsumer = Consumer;
|
|
24
|
+
function AuditLogProvider(_ref) {
|
|
25
|
+
let {
|
|
26
|
+
children,
|
|
27
|
+
scope = ''
|
|
28
|
+
} = _ref;
|
|
29
|
+
const {
|
|
30
|
+
api: client
|
|
31
|
+
} = (0, _node.useNodeContext)();
|
|
32
|
+
const [auditLogs, setAuditLogs] = (0, _react.useState)([]);
|
|
33
|
+
const [paging, setPaging] = (0, _react.useState)({
|
|
34
|
+
total: 0,
|
|
35
|
+
pageSize: 20,
|
|
36
|
+
pageCount: 0,
|
|
37
|
+
page: 1
|
|
38
|
+
});
|
|
39
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
40
|
+
const [category, setCategory] = (0, _useLocalStorage.default)("audit-log-category-".concat(scope), 'all');
|
|
41
|
+
const fetchLogs = async function fetchLogs() {
|
|
42
|
+
let {
|
|
43
|
+
page = 1,
|
|
44
|
+
silent = true
|
|
45
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
46
|
+
if (loading) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!silent) {
|
|
50
|
+
setLoading(true);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
// eslint-disable-next-line no-shadow
|
|
54
|
+
const res = await client.getAuditLogs({
|
|
55
|
+
input: {
|
|
56
|
+
paging: {
|
|
57
|
+
page
|
|
58
|
+
},
|
|
59
|
+
category: category === 'all' ? '' : category,
|
|
60
|
+
scope
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
setAuditLogs(res.list);
|
|
64
|
+
setPaging(res.paging);
|
|
65
|
+
setLoading(false);
|
|
66
|
+
} catch (err) {
|
|
67
|
+
_toast.default.error(err.message);
|
|
68
|
+
setLoading(false);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
(0, _react.useEffect)(() => {
|
|
72
|
+
fetchLogs({
|
|
73
|
+
page: 1,
|
|
74
|
+
silent: false
|
|
75
|
+
});
|
|
76
|
+
}, []); // eslint-disable-line
|
|
77
|
+
|
|
78
|
+
(0, _react.useEffect)(() => {
|
|
79
|
+
fetchLogs({
|
|
80
|
+
page: 1,
|
|
81
|
+
silent: false
|
|
82
|
+
});
|
|
83
|
+
}, [category]); // eslint-disable-line
|
|
84
|
+
|
|
85
|
+
const value = {
|
|
86
|
+
loading,
|
|
87
|
+
fetch: fetchLogs,
|
|
88
|
+
filter: {
|
|
89
|
+
category,
|
|
90
|
+
scope
|
|
91
|
+
},
|
|
92
|
+
categories: [{
|
|
93
|
+
value: 'all',
|
|
94
|
+
label: 'All',
|
|
95
|
+
description: ''
|
|
96
|
+
}, {
|
|
97
|
+
value: 'blocklet',
|
|
98
|
+
label: 'Blocklet Management',
|
|
99
|
+
description: ''
|
|
100
|
+
}, {
|
|
101
|
+
value: 'server',
|
|
102
|
+
label: 'Server Management',
|
|
103
|
+
description: ''
|
|
104
|
+
}, {
|
|
105
|
+
value: 'team',
|
|
106
|
+
label: 'Team Management',
|
|
107
|
+
description: ''
|
|
108
|
+
}, {
|
|
109
|
+
value: 'security',
|
|
110
|
+
label: 'Security',
|
|
111
|
+
description: ''
|
|
112
|
+
}, {
|
|
113
|
+
value: 'certificates',
|
|
114
|
+
label: 'Certificate Management',
|
|
115
|
+
description: ''
|
|
116
|
+
}, {
|
|
117
|
+
value: 'integrations',
|
|
118
|
+
label: 'Integration Management',
|
|
119
|
+
description: ''
|
|
120
|
+
}, {
|
|
121
|
+
value: 'gateway',
|
|
122
|
+
label: 'Gateway',
|
|
123
|
+
description: ''
|
|
124
|
+
}],
|
|
125
|
+
setCategory,
|
|
126
|
+
data: auditLogs,
|
|
127
|
+
paging
|
|
128
|
+
};
|
|
129
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
|
|
130
|
+
value: {
|
|
131
|
+
auditLogs: value
|
|
132
|
+
},
|
|
133
|
+
children: children
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function useAuditLogContext() {
|
|
137
|
+
const {
|
|
138
|
+
auditLogs
|
|
139
|
+
} = (0, _react.useContext)(AuditLogContext);
|
|
140
|
+
return auditLogs;
|
|
141
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DeletingBlockletProvider = DeletingBlockletProvider;
|
|
7
|
+
exports.useDeletingBlockletContext = useDeletingBlockletContext;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _xorWith = _interopRequireDefault(require("lodash/xorWith"));
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
const DeletingBlockletContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
14
|
+
function DeletingBlockletProvider(_ref) {
|
|
15
|
+
let {
|
|
16
|
+
children,
|
|
17
|
+
type
|
|
18
|
+
} = _ref;
|
|
19
|
+
const [deletingBlocklets, setDeletingBlocklets] = (0, _react.useState)([]);
|
|
20
|
+
const deletingBlockletsDid = (0, _react.useRef)([]); // use in onActionComplete
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 添加删除中的 blocklet did
|
|
24
|
+
* @param {String} did 删除中的did
|
|
25
|
+
*/
|
|
26
|
+
const addDeletingDid = did => {
|
|
27
|
+
if (!deletingBlockletsDid.current.includes(did)) {
|
|
28
|
+
const reDeleteings = [...deletingBlockletsDid.current, did];
|
|
29
|
+
setDeletingBlocklets(reDeleteings);
|
|
30
|
+
deletingBlockletsDid.current = reDeleteings;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 去除删除中的 blocklet did
|
|
36
|
+
* @param {String} did 删除中的did
|
|
37
|
+
*/
|
|
38
|
+
const removeDeletingDid = did => {
|
|
39
|
+
if (deletingBlockletsDid.current.includes(did)) {
|
|
40
|
+
const reDeleteings = deletingBlockletsDid.current.filter(d => {
|
|
41
|
+
return d !== did;
|
|
42
|
+
});
|
|
43
|
+
setDeletingBlocklets(reDeleteings);
|
|
44
|
+
deletingBlockletsDid.current = reDeleteings;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 将不在的 blocklet id 移出 deleting 数组
|
|
50
|
+
* @param {Array} existDids 已存在的 blocklet did 数组集
|
|
51
|
+
*/
|
|
52
|
+
const matchDeletingDid = existDids => {
|
|
53
|
+
const inDeleting = deletingBlocklets.filter(did => existDids.find(e => e === did));
|
|
54
|
+
const needMoveoutDeleting = (0, _xorWith.default)(inDeleting, deletingBlocklets);
|
|
55
|
+
needMoveoutDeleting.forEach(did => removeDeletingDid(did));
|
|
56
|
+
};
|
|
57
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DeletingBlockletContext.Provider, {
|
|
58
|
+
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
59
|
+
value: {
|
|
60
|
+
type,
|
|
61
|
+
deletingBlocklets,
|
|
62
|
+
addDeletingDid,
|
|
63
|
+
removeDeletingDid,
|
|
64
|
+
matchDeletingDid
|
|
65
|
+
},
|
|
66
|
+
children: children
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
DeletingBlockletProvider.propTypes = {
|
|
70
|
+
type: _propTypes.default.string,
|
|
71
|
+
children: _propTypes.default.node.isRequired
|
|
72
|
+
};
|
|
73
|
+
DeletingBlockletProvider.defaultProps = {
|
|
74
|
+
type: 'blocklets'
|
|
75
|
+
};
|
|
76
|
+
function useDeletingBlockletContext() {
|
|
77
|
+
return (0, _react.useContext)(DeletingBlockletContext);
|
|
78
|
+
}
|