@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,295 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TrustedIssuer;
7
+ var _react = _interopRequireWildcard(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 _Box = _interopRequireDefault(require("@mui/material/Box"));
14
+ var _ArrowBack = _interopRequireDefault(require("@mui/icons-material/ArrowBack"));
15
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
16
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
17
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
18
+ var _context = require("@arcblock/ux/lib/Locale/context");
19
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
20
+ var _DeleteIcon = _interopRequireDefault(require("@arcblock/icons/lib/DeleteIcon"));
21
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
22
+ var _constant = require("@abtnode/constant");
23
+ var _toast = _interopRequireDefault(require("../../toast"));
24
+ var _node = require("../../contexts/node");
25
+ var _team = require("../../contexts/team");
26
+ var _util = require("../../util");
27
+ var _jsxRuntime = require("react/jsx-runtime");
28
+ var _templateObject;
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
+ 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; }
33
+ 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; }
34
+ 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; }
35
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
36
+ var LongArrow = function LongArrow(props) {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", _objectSpread(_objectSpread({}, props), {}, {
38
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
39
+ d: "M64.707 8.707a1 1 0 0 0 0-1.414L58.343.929a1 1 0 1 0-1.414 1.414L62.586 8l-5.657 5.657a1 1 0 0 0 1.414 1.414l6.364-6.364zM0 9h64V7H0v2z",
40
+ fill: "#666"
41
+ })
42
+ }));
43
+ };
44
+ LongArrow.defaultProps = {
45
+ width: "65",
46
+ height: "16",
47
+ viewBox: "0 0 65 16",
48
+ fill: "none",
49
+ xmlns: "http://www.w3.org/2000/svg"
50
+ };
51
+ const canSave = (issuerDid, mappings) => {
52
+ if (!issuerDid) {
53
+ return false;
54
+ }
55
+ return !mappings.some(x => !x.from.passport || !x.to.role);
56
+ };
57
+ function TrustedIssuer(_ref) {
58
+ let {
59
+ onCancel,
60
+ onSuccess,
61
+ data,
62
+ trustedPassports
63
+ } = _ref;
64
+ const {
65
+ api
66
+ } = (0, _node.useNodeContext)();
67
+ const {
68
+ roles,
69
+ teamDid
70
+ } = (0, _team.useTeamContext)();
71
+ const {
72
+ t
73
+ } = (0, _context.useLocaleContext)();
74
+ const [loading, setLoading] = (0, _react.useState)(false);
75
+ const [issuerDid, setIssuerDid] = (0, _react.useState)(data.issuerDid || '');
76
+ const [remark, setRemark] = (0, _react.useState)(data.remark || '');
77
+ const [mappings, setMappings] = (0, _react.useState)((0, _cloneDeep.default)(data.mappings) || []);
78
+ const editIndex = trustedPassports.findIndex(x => x.issuerDid === data.issuerDid);
79
+ const configTrustedPassports = async () => {
80
+ if (loading) {
81
+ return;
82
+ }
83
+ const item = {
84
+ issuerDid,
85
+ remark,
86
+ mappings
87
+ };
88
+ const trustedList = [...trustedPassports];
89
+ if (editIndex === -1) {
90
+ trustedList.unshift(item);
91
+ } else {
92
+ trustedList[editIndex] = item;
93
+ }
94
+ try {
95
+ setLoading(true);
96
+ await api.configTrustedPassports({
97
+ input: {
98
+ teamDid,
99
+ trustedPassports: trustedList
100
+ }
101
+ });
102
+ await (0, _util.sleep)(800);
103
+ setLoading(false);
104
+ _toast.default.success(t('common.saveSuccess'));
105
+ onSuccess();
106
+ } catch (err) {
107
+ setLoading(false);
108
+ _toast.default.error(err.message);
109
+ }
110
+ };
111
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.default, {
112
+ title: t('team.passport.trustedIssuers'),
113
+ open: true,
114
+ showCloseButton: false,
115
+ PaperProps: {
116
+ style: {
117
+ minHeight: '80vh'
118
+ }
119
+ },
120
+ fullWidth: true,
121
+ prepend: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
122
+ onClick: onCancel,
123
+ "data-cy": "trusted-issuer-close",
124
+ size: "large",
125
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack.default, {})
126
+ }),
127
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
128
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
129
+ onClick: onCancel,
130
+ color: "inherit",
131
+ children: t('common.cancel')
132
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
133
+ onClick: () => configTrustedPassports(),
134
+ color: "primary",
135
+ disabled: !canSave(issuerDid, mappings) || loading,
136
+ variant: "contained",
137
+ autoFocus: true,
138
+ "data-cy": "save-mapping",
139
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
140
+ size: [16, 10]
141
+ }), t('common.save')]
142
+ })]
143
+ }),
144
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Div, {
145
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
146
+ className: "dialog-content",
147
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
148
+ fullWidth: true,
149
+ "data-cy": "input-issuer-did",
150
+ placeholder: t('team.passport.issuerDid'),
151
+ value: issuerDid,
152
+ onChange: event => {
153
+ setIssuerDid(event.target.value);
154
+ }
155
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
156
+ style: {
157
+ marginTop: 16
158
+ },
159
+ fullWidth: true,
160
+ "data-cy": "input-issuer-remark",
161
+ placeholder: t('common.remark'),
162
+ value: remark,
163
+ onChange: event => {
164
+ setRemark(event.target.value);
165
+ }
166
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
167
+ mt: "30px",
168
+ display: "flex",
169
+ justifyContent: "space-between",
170
+ alignItems: "center",
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
172
+ className: "dialog-h1",
173
+ children: t('team.passport.mappingRule')
174
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
175
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
176
+ variant: "outlined",
177
+ color: "primary",
178
+ "data-cy": "add-mapping",
179
+ onClick: () => {
180
+ setMappings(d => {
181
+ const res = [...d];
182
+ res.unshift({
183
+ from: {
184
+ passport: ''
185
+ },
186
+ to: {
187
+ role: _constant.ROLES.GUEST
188
+ }
189
+ });
190
+ return res;
191
+ });
192
+ },
193
+ children: t('team.add')
194
+ })
195
+ })]
196
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
197
+ className: "list",
198
+ mt: -0.5,
199
+ children: [mappings.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
200
+ display: "flex",
201
+ alignItems: "center",
202
+ justifyContent: "space-between",
203
+ my: 3,
204
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
205
+ display: "flex",
206
+ alignItems: "center",
207
+ flexGrow: 1,
208
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
209
+ flexGrow: 1,
210
+ flexBasis: 1,
211
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
212
+ fullWidth: true,
213
+ size: "small",
214
+ "data-cy": "input-".concat(index, "-from"),
215
+ placeholder: "Issuer\u2019s Passport Name/ID",
216
+ value: item.from.passport,
217
+ onChange: event => {
218
+ const {
219
+ value
220
+ } = event.target;
221
+ setMappings(d => {
222
+ const res = [...d];
223
+ res[index].from.passport = value;
224
+ return res;
225
+ });
226
+ }
227
+ })
228
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
229
+ flexShrink: 0,
230
+ mx: 4,
231
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(LongArrow, {})
232
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
233
+ flexGrow: 1,
234
+ flexBasis: 1,
235
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
236
+ fullWidth: true,
237
+ size: "small",
238
+ select: true,
239
+ value: item.to.role,
240
+ onChange: e => {
241
+ setMappings(d => {
242
+ const res = [...d];
243
+ res[index].to.role = e.target.value;
244
+ return res;
245
+ });
246
+ },
247
+ variant: "outlined",
248
+ children: roles.filter(d => d.name !== 'owner').map(r => /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, {
249
+ value: r.name,
250
+ "data-cy": "passport-mapping-select-option-".concat(r.name),
251
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
252
+ children: r.title || r.name
253
+ })
254
+ }, r.name))
255
+ })
256
+ })]
257
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
258
+ flexShrink: 0,
259
+ ml: 4,
260
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
261
+ onClick: () => {
262
+ setMappings(d => {
263
+ const res = [...d];
264
+ res.splice(index, 1);
265
+ return res;
266
+ });
267
+ },
268
+ size: "large",
269
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteIcon.default, {})
270
+ })
271
+ })]
272
+ })), !mappings.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
273
+ my: 2,
274
+ color: "text.secondary",
275
+ fontSize: "16px",
276
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
277
+ children: t('common.empty')
278
+ })
279
+ })]
280
+ })]
281
+ })
282
+ })
283
+ });
284
+ }
285
+ TrustedIssuer.propTypes = {
286
+ onCancel: _propTypes.default.func.isRequired,
287
+ onSuccess: _propTypes.default.func.isRequired,
288
+ trustedPassports: _propTypes.default.array,
289
+ data: _propTypes.default.object
290
+ };
291
+ TrustedIssuer.defaultProps = {
292
+ data: {},
293
+ trustedPassports: []
294
+ };
295
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .dialog-h1 {\n font-size: 18px;\n }\n\n .MuiOutlinedInput-root {\n border-radius: 36px;\n .MuiSelect-root.MuiOutlinedInput-input {\n padding-top: 8.5px;\n padding-bottom: 8.5px;\n }\n }\n\n .list {\n .MuiIconButton-root {\n svg {\n fill: #bfbfbf;\n }\n }\n }\n"])));
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TrustedIssuersWithPermission;
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 _Box = _interopRequireDefault(require("@mui/material/Box"));
13
+ var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
14
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
15
+ var _context = require("@arcblock/ux/lib/Locale/context");
16
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
17
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
18
+ var _Address = _interopRequireDefault(require("@arcblock/did-connect/lib/Address"));
19
+ var _EditIcon = _interopRequireDefault(require("@arcblock/icons/lib/EditIcon"));
20
+ var _DeleteIcon = _interopRequireDefault(require("@arcblock/icons/lib/DeleteIcon"));
21
+ var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
22
+ var _toast = _interopRequireDefault(require("../../toast"));
23
+ var _permission = require("../../permission");
24
+ var _node = require("../../contexts/node");
25
+ var _team = require("../../contexts/team");
26
+ var _util = require("../../util");
27
+ var _confirm = _interopRequireDefault(require("../../confirm"));
28
+ var _listHeader = _interopRequireDefault(require("../styles/list-header"));
29
+ var _searchInput = _interopRequireDefault(require("../search-input"));
30
+ var _trustedIssuer = _interopRequireDefault(require("./trusted-issuer"));
31
+ var _jsxRuntime = require("react/jsx-runtime");
32
+ var _templateObject;
33
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
35
+ 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; }
36
+ 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; }
37
+ 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; }
38
+ function TrustedIssuers(_ref) {
39
+ let {
40
+ onCancel,
41
+ hasPermission
42
+ } = _ref;
43
+ const {
44
+ api
45
+ } = (0, _node.useNodeContext)();
46
+ const {
47
+ teamDid,
48
+ trustedPassports
49
+ } = (0, _team.useTeamContext)();
50
+ const {
51
+ t
52
+ } = (0, _context.useLocaleContext)();
53
+ const [delConfirm, setDelConfirm] = (0, _react.useState)(null);
54
+ const [loading, setLoading] = (0, _react.useState)(false);
55
+ const [trustedIssuer, setTrustedIssuer] = (0, _react.useState)(false);
56
+ const [search, setSearch] = (0, _react.useState)('');
57
+ const deleteTrustedIssuer = async did => {
58
+ if (loading) {
59
+ return;
60
+ }
61
+ const index = trustedPassports.findIndex(x => x.issuerDid === did);
62
+ if (index === -1) {
63
+ // should not be here
64
+ _toast.default.error('Cannot find passports');
65
+ }
66
+ const trustedList = [...trustedPassports];
67
+ trustedList.splice(index, 1);
68
+ try {
69
+ setLoading(true);
70
+ await api.configTrustedPassports({
71
+ input: {
72
+ teamDid,
73
+ trustedPassports: trustedList
74
+ }
75
+ });
76
+ await (0, _util.sleep)(800);
77
+ setLoading(false);
78
+ _toast.default.success(t('common.saveSuccess'));
79
+ setDelConfirm(false);
80
+ } catch (err) {
81
+ setLoading(false);
82
+ _toast.default.error(err.message);
83
+ }
84
+ };
85
+ const filteredIssuers = trustedPassports.filter(x => !search || x.issuerDid.toLowerCase().includes(search.toLowerCase()));
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog.default, {
87
+ title: t('team.passport.trustedIssuers'),
88
+ open: true,
89
+ onClose: onCancel,
90
+ fullWidth: true,
91
+ PaperProps: {
92
+ style: {
93
+ minHeight: '80vh'
94
+ }
95
+ },
96
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Div, {
97
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
98
+ className: "dialog-content",
99
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
100
+ className: "dialog-h1",
101
+ children: t('team.passport.trustedPassportIssuers')
102
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
103
+ component: _listHeader.default,
104
+ mt: 3,
105
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
106
+ className: "left",
107
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_searchInput.default, {
108
+ placeholder: t('team.passport.searchIssuerDid'),
109
+ value: search,
110
+ onChange: e => setSearch(e.target.value)
111
+ })
112
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
113
+ className: "right",
114
+ children: hasPermission && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
115
+ variant: "contained",
116
+ color: "primary",
117
+ "data-cy": "add-trusted-issuer",
118
+ onClick: () => setTrustedIssuer({
119
+ mode: 'add'
120
+ }),
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Add.default, {
122
+ style: {
123
+ fontSize: 16,
124
+ marginRight: 4
125
+ }
126
+ }), t('team.add')]
127
+ })
128
+ })]
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
130
+ className: "list",
131
+ children: [filteredIssuers.map(x => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
132
+ display: "flex",
133
+ alignItems: "center",
134
+ justifyContent: "space-between",
135
+ mt: "20px",
136
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
137
+ flexShrink: 0,
138
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
139
+ copyable: false,
140
+ prepend: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
141
+ display: "flex",
142
+ alignItems: "center",
143
+ mr: 1,
144
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
145
+ did: x.issuerDid,
146
+ size: 20
147
+ })
148
+ }),
149
+ showDidLogo: false,
150
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
151
+ style: {
152
+ fontSize: 16
153
+ },
154
+ children: x.issuerDid
155
+ })
156
+ }), !!x.remark && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
157
+ pl: 3.5,
158
+ fontSize: 12,
159
+ maxWidth: "300px",
160
+ children: x.remark
161
+ })]
162
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
163
+ color: "gray",
164
+ ml: "28px",
165
+ flexGrow: 1,
166
+ children: x.mappings && x.mappings.length ? "".concat(x.mappings.length, " ").concat(t('team.passport.mappingRule')) : t('team.passport.defaultRule')
167
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
168
+ flexShrink: 0,
169
+ display: "flex",
170
+ alignItems: "center",
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
172
+ onClick: () => setTrustedIssuer({
173
+ mode: 'update',
174
+ data: (0, _cloneDeep.default)(x)
175
+ }),
176
+ "data-cy": "edit-mapping-rule",
177
+ size: "large",
178
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditIcon.default, {})
179
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
180
+ "data-cy": "delete-mapping-rule",
181
+ onClick: () => setDelConfirm({
182
+ title: t('common.delete'),
183
+ description: t('common.delConfirmDescription'),
184
+ confirm: t('common.delConfirm'),
185
+ cancel: t('common.cancel'),
186
+ onConfirm: () => deleteTrustedIssuer(x.issuerDid),
187
+ onCancel: () => {
188
+ setLoading(false);
189
+ setDelConfirm(null);
190
+ }
191
+ }),
192
+ size: "large",
193
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteIcon.default, {})
194
+ })]
195
+ })]
196
+ })), !trustedPassports.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
197
+ children: t('common.empty')
198
+ })]
199
+ })]
200
+ })
201
+ }), trustedIssuer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_trustedIssuer.default, {
202
+ mode: trustedIssuer.mode,
203
+ data: trustedIssuer.data,
204
+ trustedPassports: (0, _cloneDeep.default)(trustedPassports),
205
+ onCancel: () => setTrustedIssuer(null),
206
+ onSuccess: () => {
207
+ setTrustedIssuer(null);
208
+ }
209
+ }), delConfirm && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
210
+ title: delConfirm.title,
211
+ description: delConfirm.description,
212
+ confirm: delConfirm.confirm,
213
+ cancel: delConfirm.cancel,
214
+ params: delConfirm.params,
215
+ onConfirm: delConfirm.onConfirm,
216
+ onCancel: delConfirm.onCancel
217
+ })]
218
+ });
219
+ }
220
+ TrustedIssuers.propTypes = {
221
+ onCancel: _propTypes.default.func.isRequired,
222
+ hasPermission: _propTypes.default.bool
223
+ };
224
+ TrustedIssuers.defaultProps = {
225
+ hasPermission: false
226
+ };
227
+ const TrustedIssuersInDaemon = (0, _permission.withPermission)(TrustedIssuers, 'mutate_team');
228
+ const TrustedIssuersInService = (0, _permission.withPermission)(TrustedIssuers, '', _util.BlockletAdminRoles);
229
+ function TrustedIssuersWithPermission(props) {
230
+ const {
231
+ inService
232
+ } = (0, _node.useNodeContext)();
233
+ if (inService) {
234
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TrustedIssuersInService, _objectSpread({}, props));
235
+ }
236
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TrustedIssuersInDaemon, _objectSpread({}, props));
237
+ }
238
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .list {\n .MuiIconButton-root {\n svg {\n fill: #bfbfbf;\n }\n }\n }\n"])));
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
8
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
9
+ var _Search = _interopRequireDefault(require("@mui/icons-material/Search"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ const _excluded = ["children"];
12
+ var _templateObject;
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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
20
+ const SearchInput = (0, _styled.default)(_ref => {
21
+ let {
22
+ children
23
+ } = _ref,
24
+ props = _objectWithoutProperties(_ref, _excluded);
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, _objectSpread(_objectSpread({}, props), {}, {
26
+ id: "outlined-basic",
27
+ variant: "outlined",
28
+ InputProps: {
29
+ startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.default, {})
30
+ },
31
+ size: "small",
32
+ children: children
33
+ }));
34
+ })(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .MuiOutlinedInput-root {\n color: #999;\n &.MuiInputBase-adornedStart .MuiSvgIcon-root {\n color: #bfbfbf;\n }\n opacity: 1;\n border-radius: 36px;\n background: #f8f8f8;\n padding-left: 16px;\n input {\n padding-left: 8px;\n font-weight: bold;\n &::placeholder {\n opacity: 1;\n color: #bfbfbf;\n }\n padding-top: 8.5px;\n padding-bottom: 8.5px;\n }\n }\n\n .MuiOutlinedInput-notchedOutline,\n .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline,\n .Mui-focused .MuiOutlinedInput-notchedOutline {\n border-color: #eee;\n border-width: 1px;\n }\n"])));
35
+ var _default = SearchInput;
36
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
8
+ var _templateObject;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ const DialogStyle = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 632px;\n height: 90vh;\n overflow: auto;\n @media (max-width: ", "px) {\n width: 100%;\n height: 100%;\n }\n display: flex;\n flex-direction: column;\n\n .dialog-header {\n flex-shrink: 0;\n position: sticky;\n top: 0;\n background: #fff;\n z-index: 30;\n flex: 0;\n box-sizing: border-box;\n width: 100%;\n padding: 0 12px;\n min-height: 72px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #f8f8f8;\n .title {\n color: #222;\n font-size: 16px;\n }\n .left,\n .right {\n flex-shrink: 0;\n flex-basis: auto;\n width: 120px;\n }\n .right {\n text-align: right;\n svg {\n fill: #bfbfbf;\n }\n }\n }\n .dialog-content {\n flex-grow: 1;\n padding: 16px 24px;\n }\n .dialog-actions {\n flex-shrink: 0;\n border-top: 1px solid #f8f8f8;\n padding 24px;\n position: sticky;\n bottom: 0;\n z-index: 20;\n background: #fff;\n display: flex;\n justify-content: flex-end;\n .MuiButton-root {\n padding-left: 3em;\n padding-right: 3em;\n }\n }\n .dialog-h1 {\n font-style: normal;\n font-weight: 400;\n font-size: 24px;\n line-height: 28px;\n color: #222222;\n }\n"])), props => props.theme.breakpoints.values.md - 1);
12
+ var _default = DialogStyle;
13
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
8
+ var _templateObject;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ const ListHeader = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 14px;\n .left,\n .right {\n }\n .right {\n display: flex;\n align-items: center;\n }\n .tabs {\n .MuiButton-root {\n border: none;\n color: #999;\n &.active {\n color: #222;\n }\n }\n }\n\n @media (max-width: 600px) {\n display: block;\n .right {\n margin-top: 12px;\n }\n }\n"])));
12
+ var _default = ListHeader;
13
+ exports.default = _default;