@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.
Files changed (88) hide show
  1. package/lib/actions.js +109 -0
  2. package/lib/blocklet/actions.js +437 -0
  3. package/lib/blocklet/audit-logs.js +194 -0
  4. package/lib/blocklet/avatar.js +96 -0
  5. package/lib/blocklet/blocklet-source.js +56 -0
  6. package/lib/blocklet/component/configuration.js +124 -0
  7. package/lib/blocklet/component/delete.js +115 -0
  8. package/lib/blocklet/component/environment.js +277 -0
  9. package/lib/blocklet/component/index.js +742 -0
  10. package/lib/blocklet/component/setting.js +135 -0
  11. package/lib/blocklet/configuration.js +463 -0
  12. package/lib/blocklet/disk-info.js +89 -0
  13. package/lib/blocklet/icons.js +26 -0
  14. package/lib/blocklet/log.js +55 -0
  15. package/lib/blocklet/mode.js +33 -0
  16. package/lib/blocklet/overview.js +184 -0
  17. package/lib/blocklet/runtime-info.js +85 -0
  18. package/lib/blocklet/status.js +103 -0
  19. package/lib/blocklet/util.js +119 -0
  20. package/lib/blocklet/version.js +178 -0
  21. package/lib/card-selector.js +9 -22
  22. package/lib/click-to-copy.js +36 -0
  23. package/lib/confirm.js +149 -0
  24. package/lib/contexts/audit-log.js +141 -0
  25. package/lib/contexts/deleting-blocklets.js +78 -0
  26. package/lib/contexts/node.js +28 -0
  27. package/lib/contexts/session.js +20 -0
  28. package/lib/contexts/team.js +19 -0
  29. package/lib/did-address.js +75 -0
  30. package/lib/dot.js +18 -0
  31. package/lib/form/form-text-input.js +12 -38
  32. package/lib/form/form-wrapper.js +0 -7
  33. package/lib/form/required.js +0 -6
  34. package/lib/hooks/mobile-width.js +19 -0
  35. package/lib/hooks/use-passport-id.js +0 -5
  36. package/lib/icons/long-arrow.svg +5 -0
  37. package/lib/index.js +0 -3
  38. package/lib/invitation/invitation-app.js +3 -21
  39. package/lib/invitation/invitation-passport.js +2 -16
  40. package/lib/invitation/invitation-receive.js +2 -19
  41. package/lib/invitation/invitation-user.js +0 -16
  42. package/lib/invitation/invitation.js +0 -23
  43. package/lib/issue-passport.js +2 -31
  44. package/lib/launch-blocklet/content-layout.js +3 -19
  45. package/lib/launch-blocklet/page-header.js +0 -9
  46. package/lib/layout/addon.js +0 -24
  47. package/lib/locales/en.js +1046 -38
  48. package/lib/locales/index.js +0 -3
  49. package/lib/locales/zh.js +1049 -36
  50. package/lib/logs/clock.js +19 -0
  51. package/lib/logs/log-terminal.js +172 -0
  52. package/lib/lost-passport.js +6 -51
  53. package/lib/nav-logo.js +12 -33
  54. package/lib/passport-tag.js +41 -0
  55. package/lib/permission.js +68 -0
  56. package/lib/relative-time.js +61 -0
  57. package/lib/schema-form/color-input.js +2 -15
  58. package/lib/schema-form/common-prop-types.js +0 -3
  59. package/lib/schema-form/index.js +8 -45
  60. package/lib/schema-form/passport-input.js +6 -24
  61. package/lib/schema-form/text-input.js +9 -26
  62. package/lib/table-icons.js +42 -0
  63. package/lib/table.js +13 -0
  64. package/lib/tag.js +35 -0
  65. package/lib/team/members/actions.js +99 -0
  66. package/lib/team/members/index.js +476 -0
  67. package/lib/team/members/invitations.js +196 -0
  68. package/lib/team/members/invite-member.js +212 -0
  69. package/lib/team/members/issue-passport.js +155 -0
  70. package/lib/team/members/member.js +294 -0
  71. package/lib/team/members/passport-issuances.js +154 -0
  72. package/lib/team/members/passports.js +329 -0
  73. package/lib/team/members/toggle-user-approval.js +128 -0
  74. package/lib/team/members/transfer-node.js +262 -0
  75. package/lib/team/members/util.js +20 -0
  76. package/lib/team/passports/detail.js +261 -0
  77. package/lib/team/passports/index.js +220 -0
  78. package/lib/team/passports/mutate-role.js +204 -0
  79. package/lib/team/passports/trusted-issuer.js +295 -0
  80. package/lib/team/passports/trusted-issuers.js +238 -0
  81. package/lib/team/search-input.js +36 -0
  82. package/lib/team/styles/dialog.js +13 -0
  83. package/lib/team/styles/list-header.js +13 -0
  84. package/lib/toast.js +4 -19
  85. package/lib/util/index.js +504 -38
  86. package/lib/who-can-access/config.js +0 -6
  87. package/lib/wrap-locale.js +0 -7
  88. package/package.json +43 -20
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TransferMember;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _useAsync = _interopRequireDefault(require("react-use/lib/useAsync"));
11
+ var _get = _interopRequireDefault(require("lodash/get"));
12
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
13
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
14
+ var _DialogContentText = _interopRequireDefault(require("@mui/material/DialogContentText"));
15
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
16
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
17
+ var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect"));
18
+ var _context = require("@arcblock/ux/lib/Locale/context");
19
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
20
+ var _Alert = _interopRequireDefault(require("@arcblock/ux/lib/Alert"));
21
+ var _clickToCopy = _interopRequireDefault(require("../../click-to-copy"));
22
+ var _node = require("../../contexts/node");
23
+ var _util = require("../../util");
24
+ var _session = require("../../contexts/session");
25
+ var _jsxRuntime = require("react/jsx-runtime");
26
+ var _templateObject;
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
29
+ function TransferMember(_ref) {
30
+ let {
31
+ teamDid,
32
+ onCancel,
33
+ onSuccess,
34
+ onError,
35
+ endpoint
36
+ } = _ref;
37
+ const {
38
+ api,
39
+ info
40
+ } = (0, _node.useNodeContext)();
41
+ const {
42
+ api: sessionAPI
43
+ } = (0, _react.useContext)(_session.SessionContext);
44
+ const [loading, setLoading] = (0, _react.useState)(false);
45
+ const {
46
+ locale
47
+ } = (0, _context.useLocaleContext)();
48
+ const [error, setError] = (0, _react.useState)('');
49
+ const {
50
+ t
51
+ } = (0, _context.useLocaleContext)();
52
+ const [openTransferNFTAuth, setOpenTransferNFTAuth] = (0, _react.useState)(false);
53
+ const [activeStep, setActiveStep] = (0, _react.useState)(0);
54
+ const [inviteInfo, setInviteInfo] = (0, _react.useState)('');
55
+ const [remark, setRemark] = (0, _react.useState)('');
56
+ const needTransferNFT = !!(0, _get.default)(info, 'ownerNft.did');
57
+ const delegationState = (0, _useAsync.default)(async () => {
58
+ if (needTransferNFT) {
59
+ const {
60
+ state
61
+ } = await api.getDelegationState();
62
+ return state;
63
+ }
64
+ return {
65
+ delegated: true
66
+ };
67
+ });
68
+ if (delegationState.loading) {
69
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.default, {
70
+ title: t('team.transferNode.inviteDialog.title'),
71
+ fullWidth: true,
72
+ open: true,
73
+ onClose: onCancel,
74
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
75
+ style: {
76
+ display: 'flex',
77
+ justifyContent: 'center'
78
+ },
79
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {})
80
+ })
81
+ });
82
+ }
83
+ if (delegationState.error) {
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.default, {
85
+ title: t('team.transferNode.inviteDialog.title'),
86
+ fullWidth: true,
87
+ open: true,
88
+ onClose: onCancel,
89
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
90
+ type: "error",
91
+ variant: "icon",
92
+ children: (0, _util.formatError)(delegationState.error)
93
+ })
94
+ });
95
+ }
96
+ const onCreate = async () => {
97
+ setError(null);
98
+ setLoading(true);
99
+ try {
100
+ const {
101
+ inviteInfo: tmpInviteInfo
102
+ } = await api.createTransferInvitation({
103
+ input: {
104
+ teamDid,
105
+ role: 'owner',
106
+ remark: remark.trim()
107
+ }
108
+ });
109
+ setInviteInfo(tmpInviteInfo);
110
+ setActiveStep(steps.length - 1); // 跳转到最后一步
111
+ } catch (err) {
112
+ const errMsg = (0, _util.formatError)(err);
113
+ setError(errMsg);
114
+ onError(err);
115
+ } finally {
116
+ setLoading(false);
117
+ }
118
+ };
119
+ const handleTransferNFT = () => {
120
+ setOpenTransferNFTAuth(true);
121
+ setActiveStep(1);
122
+ };
123
+ const handleCancelTransferNFT = () => {
124
+ setOpenTransferNFTAuth(false);
125
+ setActiveStep(0);
126
+ };
127
+ const steps = [{
128
+ body: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
129
+ component: "div",
130
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.default, {
131
+ type: "warning",
132
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
133
+ children: t('team.transferNode.inviteDialog.tips.progress')
134
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
135
+ children: t('team.transferNode.inviteDialog.tips.newOwnerPermissions')
136
+ })]
137
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
138
+ type: "warning",
139
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
140
+ children: t('team.transferNode.inviteDialog.tips.revoke')
141
+ })
142
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
143
+ style: {
144
+ marginTop: 20,
145
+ marginBottom: 10
146
+ }
147
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
148
+ label: t('common.remark'),
149
+ autoComplete: "off",
150
+ variant: "outlined",
151
+ fullWidth: true,
152
+ style: {
153
+ marginBottom: 8
154
+ },
155
+ value: remark,
156
+ onChange: e => {
157
+ setError(null);
158
+ setRemark(e.target.value);
159
+ },
160
+ disabled: loading,
161
+ "data-cy": "transfer-node-input-remark"
162
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
163
+ style: {
164
+ marginTop: 20,
165
+ marginBottom: 10
166
+ }
167
+ })]
168
+ }),
169
+ cancel: t('common.cancel'),
170
+ confirm: t('team.transferNode.inviteDialog.createInviteLink'),
171
+ onCancel,
172
+ onConfirm: needTransferNFT && !(0, _get.default)(delegationState, 'value.delegated') ? handleTransferNFT : onCreate
173
+ }, {
174
+ body: () => {
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
176
+ action: "delegate-transfer-nft",
177
+ open: openTransferNFTAuth,
178
+ locale: locale,
179
+ checkFn: sessionAPI.get,
180
+ onClose: handleCancelTransferNFT,
181
+ onSuccess: onCreate,
182
+ checkTimeout: 5 * 60 * 1000,
183
+ webWalletUrl: (0, _util.getWebWalletUrl)(info),
184
+ extraParams: {
185
+ targetDID: info.did
186
+ },
187
+ messages: {
188
+ title: t('team.transferNode.delegateDialog.title'),
189
+ scan: t('team.transferNode.delegateDialog.scan'),
190
+ confirm: t('team.transferNode.delegateDialog.confirm'),
191
+ success: t('team.transferNode.delegateDialog.success')
192
+ },
193
+ popup: true
194
+ });
195
+ }
196
+ }, {
197
+ body: () => {
198
+ const link = (0, _util.getInviteLink)({
199
+ inviteId: inviteInfo.inviteId,
200
+ endpoint
201
+ });
202
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
203
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
204
+ children: t('team.transferNode.inviteDialog.createSuccessTip', {
205
+ expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate)
206
+ })
207
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
208
+ style: {
209
+ marginTop: '40px'
210
+ }
211
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_clickToCopy.default, {
212
+ children: link
213
+ })]
214
+ });
215
+ },
216
+ confirm: t('common.confirm'),
217
+ onConfirm: onSuccess
218
+ }];
219
+ const step = steps[activeStep];
220
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog.default, {
221
+ title: t('team.transferNode.inviteDialog.title'),
222
+ fullWidth: true,
223
+ open: true,
224
+ showCloseButton: false,
225
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
226
+ children: [step.cancel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
227
+ onClick: step.onCancel,
228
+ color: "inherit",
229
+ children: step.cancel
230
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
231
+ onClick: step.onConfirm,
232
+ color: "primary",
233
+ disabled: loading,
234
+ variant: "contained",
235
+ autoFocus: true,
236
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
237
+ size: [16, 10]
238
+ }), step.confirm]
239
+ })]
240
+ }),
241
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContentText.default, {
242
+ component: "div",
243
+ children: typeof step.body === 'function' ? step.body() : step.body
244
+ }), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
245
+ type: "error",
246
+ variant: "icon",
247
+ children: error
248
+ })]
249
+ });
250
+ }
251
+ TransferMember.propTypes = {
252
+ teamDid: _propTypes.default.string.isRequired,
253
+ onCancel: _propTypes.default.func.isRequired,
254
+ onSuccess: _propTypes.default.func.isRequired,
255
+ onError: _propTypes.default.func,
256
+ endpoint: _propTypes.default.string
257
+ };
258
+ TransferMember.defaultProps = {
259
+ onError: () => {},
260
+ endpoint: ''
261
+ };
262
+ const Bold = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-size: 16px;\n font-weight: bold;\n"])));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseAvatar = parseAvatar;
7
+ var _urlJoin = _interopRequireDefault(require("url-join"));
8
+ var _constant = require("@abtnode/constant");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ // eslint-disable-next-line import/prefer-default-export
11
+ function parseAvatar(avatar, teamDid, inService) {
12
+ if (avatar && avatar.startsWith(_constant.USER_AVATAR_URL_PREFIX)) {
13
+ const prefix = window.env.apiPrefix || '/';
14
+ if (inService) {
15
+ return (0, _urlJoin.default)(prefix, _constant.USER_AVATAR_PATH_PREFIX, avatar.replace(_constant.USER_AVATAR_URL_PREFIX, ''));
16
+ }
17
+ return (0, _urlJoin.default)(prefix, _constant.USER_AVATAR_PATH_PREFIX, teamDid, avatar.replace(_constant.USER_AVATAR_URL_PREFIX, ''));
18
+ }
19
+ return avatar;
20
+ }
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PassportDetailWithPermission;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
11
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
12
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
13
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
14
+ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
15
+ var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
16
+ var _context = require("@arcblock/ux/lib/Locale/context");
17
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
18
+ var _EditIcon = _interopRequireDefault(require("@arcblock/icons/lib/EditIcon"));
19
+ var _DeleteIcon = _interopRequireDefault(require("@arcblock/icons/lib/DeleteIcon"));
20
+ var _toast = _interopRequireDefault(require("../../toast"));
21
+ var _node = require("../../contexts/node");
22
+ var _team = require("../../contexts/team");
23
+ var _util = require("../../util");
24
+ var _permission = require("../../permission");
25
+ var _confirm = _interopRequireDefault(require("../../confirm"));
26
+ var _mutateRole = _interopRequireDefault(require("./mutate-role"));
27
+ var _jsxRuntime = require("react/jsx-runtime");
28
+ var _templateObject, _templateObject2;
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
31
+ 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; }
32
+ 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; }
33
+ 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; }
34
+ function PassportDetail(_ref) {
35
+ let {
36
+ onCancel,
37
+ onSuccess,
38
+ onDelete,
39
+ roleName,
40
+ hasPermission
41
+ } = _ref;
42
+ const {
43
+ api
44
+ } = (0, _node.useNodeContext)();
45
+ const {
46
+ roles,
47
+ permissions,
48
+ teamDid,
49
+ refresh: refreshTeam,
50
+ isNodeTeam
51
+ } = (0, _team.useTeamContext)();
52
+ const {
53
+ t
54
+ } = (0, _context.useLocaleContext)();
55
+ const [binds, setBinds] = (0, _react.useState)([]);
56
+ const [updateForm, setUpdateForm] = (0, _react.useState)(false);
57
+ const [delConfirm, setDelConfirm] = (0, _react.useState)(null);
58
+ const [loading, setLoading] = (0, _react.useState)(false);
59
+ const role = (0, _cloneDeep.default)(roles.find(x => x.name === roleName));
60
+ const isProtected = (0, _util.isProtectedRole)(roleName);
61
+ const deletePassport = async name => {
62
+ if (loading) return;
63
+ try {
64
+ setLoading(true);
65
+ await api.deleteRole({
66
+ input: {
67
+ teamDid,
68
+ name
69
+ }
70
+ });
71
+ onDelete();
72
+ } catch (err) {
73
+ _toast.default.error(err.message);
74
+ } finally {
75
+ setLoading(false);
76
+ setDelConfirm(null);
77
+ }
78
+ };
79
+ const getData = async (team, name) => {
80
+ const res = await api.getPermissionsByRole({
81
+ input: {
82
+ teamDid: team,
83
+ role: {
84
+ name
85
+ }
86
+ }
87
+ });
88
+ const permissionList = res.permissions || [];
89
+ const bindList = permissions.map(x => _objectSpread(_objectSpread({}, x), {}, {
90
+ bind: permissionList.some(y => y.name === x.name)
91
+ }));
92
+ setBinds(bindList);
93
+ };
94
+ const onBind = async () => {
95
+ setLoading(true);
96
+ const grantNames = binds.filter(x => x.bind).map(x => x.name);
97
+ try {
98
+ await api.updatePermissionsForRole({
99
+ input: {
100
+ teamDid,
101
+ roleName: role.name,
102
+ grantNames
103
+ }
104
+ });
105
+ _toast.default.success(t('common.saveSuccess'));
106
+ onSuccess();
107
+ } catch (err) {
108
+ _toast.default.error((0, _util.formatError)(err));
109
+ } finally {
110
+ setLoading(false);
111
+ }
112
+ };
113
+ (0, _react.useEffect)(() => {
114
+ if (teamDid && roleName) {
115
+ getData(teamDid, roleName);
116
+ }
117
+ }, [teamDid, roleName]); // eslint-disable-line
118
+
119
+ const readPermissionsOnly = isNodeTeam || !hasPermission;
120
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog.default, {
121
+ title: t('common.passport'),
122
+ onClose: onCancel,
123
+ open: true,
124
+ fullWidth: true,
125
+ toolbar: hasPermission && !isProtected && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
126
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
127
+ onClick: () => setUpdateForm(role),
128
+ "data-cy": "edit-passport-".concat(role.name),
129
+ size: "large",
130
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditIcon.default, {
131
+ fill: "#bfbfbf"
132
+ })
133
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
134
+ onClick: () => setDelConfirm({
135
+ title: t('team.passport.delete.title'),
136
+ description: t('team.passport.delete.description', {
137
+ name: role.title
138
+ }),
139
+ confirm: t('common.delConfirm'),
140
+ cancel: t('common.cancel'),
141
+ onConfirm: () => {
142
+ deletePassport(role.name);
143
+ },
144
+ onCancel: () => {
145
+ setLoading(false);
146
+ setDelConfirm(null);
147
+ }
148
+ }),
149
+ "data-cy": "delete-passport-".concat(role.name),
150
+ size: "large",
151
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteIcon.default, {
152
+ fill: "#bfbfbf"
153
+ })
154
+ })]
155
+ }),
156
+ actions: !readPermissionsOnly && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
157
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
158
+ onClick: onCancel,
159
+ color: "inherit",
160
+ children: t('common.cancel')
161
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
162
+ onClick: onBind,
163
+ color: "primary",
164
+ disabled: loading || !role,
165
+ variant: "contained",
166
+ autoFocus: true,
167
+ "data-cy": "bind-permission-btn-confirm",
168
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
169
+ size: [16, 10]
170
+ }), t('common.save')]
171
+ })]
172
+ }),
173
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
174
+ children: [!role && /*#__PURE__*/(0, _jsxRuntime.jsx)(Center, {
175
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {})
176
+ }), role && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
177
+ className: "dialog-content",
178
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
179
+ className: "header",
180
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
181
+ className: "title",
182
+ children: role.title
183
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
184
+ className: "description",
185
+ children: role.description
186
+ })]
187
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
188
+ className: "bind",
189
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
190
+ className: "title",
191
+ children: t('common.permission')
192
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
193
+ className: "list",
194
+ children: binds
195
+ // if readonly, show obtained permissions only
196
+ .filter(x => readPermissionsOnly ? x.bind : true).map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
197
+ className: "item",
198
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
199
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, {
200
+ disabled: readPermissionsOnly,
201
+ checked: x.bind,
202
+ onChange: () => {
203
+ setBinds(state => state.map(y => {
204
+ if (y.name === x.name) {
205
+ y.bind = !y.bind;
206
+ }
207
+ return y;
208
+ }));
209
+ },
210
+ name: x.name
211
+ }),
212
+ label: x.description
213
+ })
214
+ }))
215
+ })]
216
+ })]
217
+ })]
218
+ }), updateForm && /*#__PURE__*/(0, _jsxRuntime.jsx)(_mutateRole.default, {
219
+ teamDid: teamDid,
220
+ onCancel: () => setUpdateForm(null),
221
+ onSuccess: () => {
222
+ setUpdateForm(null);
223
+ refreshTeam();
224
+ },
225
+ mode: "update",
226
+ roleName: updateForm.name,
227
+ item: updateForm
228
+ }), delConfirm && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
229
+ title: delConfirm.title,
230
+ description: delConfirm.description,
231
+ confirm: delConfirm.confirm,
232
+ cancel: delConfirm.cancel,
233
+ params: delConfirm.params,
234
+ onConfirm: delConfirm.onConfirm,
235
+ onCancel: delConfirm.onCancel
236
+ })]
237
+ });
238
+ }
239
+ const PassportDetailInDaemon = (0, _permission.withPermission)(PassportDetail, 'mutate_team');
240
+ const PassportDetailInService = (0, _permission.withPermission)(PassportDetail, '', _util.BlockletAdminRoles);
241
+ function PassportDetailWithPermission(props) {
242
+ const {
243
+ inService
244
+ } = (0, _node.useNodeContext)();
245
+ if (inService) {
246
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PassportDetailInService, _objectSpread({}, props));
247
+ }
248
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PassportDetailInDaemon, _objectSpread({}, props));
249
+ }
250
+ PassportDetail.propTypes = {
251
+ roleName: _propTypes.default.string.isRequired,
252
+ onCancel: _propTypes.default.func.isRequired,
253
+ onSuccess: _propTypes.default.func.isRequired,
254
+ onDelete: _propTypes.default.func.isRequired,
255
+ hasPermission: _propTypes.default.bool
256
+ };
257
+ PassportDetail.defaultProps = {
258
+ hasPermission: false
259
+ };
260
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .header {\n .title {\n font-weight: 400;\n font-size: 24px;\n line-height: 28px;\n color: #222222;\n }\n\n .description {\n margin-top: 16px;\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: #999999;\n }\n }\n\n .bind {\n margin-top: 24px;\n .title {\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: #666666;\n margin-bottom: 24px;\n }\n .item {\n margin-top: 24px;\n }\n\n .MuiFormControlLabel-label {\n font-weight: 400;\n font-size: 16px;\n line-height: 19px;\n color: #666;\n }\n\n .PrivateSwitchBase-root-45 {\n padding: 0;\n padding-right: 12px;\n }\n }\n"])));
261
+ const Center = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 200px;\n"])));