@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,194 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = WrappedAuditLogs;
7
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _reactMarkdownPreview = _interopRequireDefault(require("@uiw/react-markdown-preview"));
10
+ var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
11
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
12
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
13
+ var _context = require("@arcblock/ux/lib/Locale/context");
14
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
15
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
16
+ var _Pagination = _interopRequireDefault(require("@mui/lab/Pagination"));
17
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
18
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
19
+ var _InputLabel = _interopRequireDefault(require("@mui/material/InputLabel"));
20
+ var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
21
+ var _auditLog = require("../contexts/audit-log");
22
+ var _node = require("../contexts/node");
23
+ var _relativeTime = _interopRequireDefault(require("../relative-time"));
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+ var _templateObject;
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
28
+ const getUserLink = _ref => {
29
+ let {
30
+ log,
31
+ info,
32
+ inService
33
+ } = _ref;
34
+ if (inService) {
35
+ // TODO
36
+ return "/members?did=".concat(log.actor.did);
37
+ }
38
+ if (log.scope === info.did) {
39
+ return "/team/members?did=".concat(log.actor.did);
40
+ }
41
+ return "/blocklets/".concat(log.scope, "/members?did=").concat(log.actor.did);
42
+ };
43
+ function AuditLog(_ref2) {
44
+ var _log$env$os, _log$env$browser;
45
+ let {
46
+ log
47
+ } = _ref2;
48
+ const {
49
+ inService,
50
+ info
51
+ } = (0, _node.useNodeContext)();
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
53
+ className: "log-entry",
54
+ "data-cy": "log-entry",
55
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
56
+ className: "log-author",
57
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
58
+ did: log.actor.did,
59
+ size: 36,
60
+ shape: "circle"
61
+ })
62
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
63
+ className: "log-body",
64
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
65
+ className: "log-header",
66
+ color: "textSecondary",
67
+ component: "p",
68
+ gutterBottom: true,
69
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactRouterDom.Link, {
70
+ to: getUserLink({
71
+ log,
72
+ inService,
73
+ info
74
+ }),
75
+ target: "_blank",
76
+ children: [log.actor.fullName, log.actor.role ? "(".concat(log.actor.role, ")") : '']
77
+ }), ' ', "- ", log.action]
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
79
+ className: "log-content",
80
+ color: "textPrimary",
81
+ component: "div",
82
+ "data-color-mode": "light",
83
+ gutterBottom: true,
84
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview.default, {
85
+ source: log.content,
86
+ linkTarget: "_blank"
87
+ })
88
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
89
+ className: "log-meta",
90
+ variant: "body2",
91
+ children: [!!log.ip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
92
+ component: "span",
93
+ color: "textSecondary",
94
+ children: "IP: ".concat(log.ip)
95
+ }), !!((_log$env$os = log.env.os) !== null && _log$env$os !== void 0 && _log$env$os.name) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
96
+ component: "span",
97
+ color: "textSecondary",
98
+ children: [log.env.os.name, "(", log.env.os.version, ")"]
99
+ }), !!((_log$env$browser = log.env.browser) !== null && _log$env$browser !== void 0 && _log$env$browser.name) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
100
+ component: "span",
101
+ color: "textSecondary",
102
+ children: [log.env.browser.name, "(", log.env.browser.version, ")"]
103
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
104
+ component: "span",
105
+ color: "textSecondary",
106
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_relativeTime.default, {
107
+ value: log.createdAt
108
+ })
109
+ })]
110
+ })]
111
+ })]
112
+ });
113
+ }
114
+ function AuditLogs() {
115
+ const {
116
+ t
117
+ } = (0, _context.useLocaleContext)();
118
+ const {
119
+ data,
120
+ loading,
121
+ paging,
122
+ filter,
123
+ categories,
124
+ setCategory,
125
+ fetch
126
+ } = (0, _auditLog.useAuditLogContext)();
127
+ if (loading) {
128
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
129
+ style: {
130
+ textAlign: 'center',
131
+ marginTop: '50px'
132
+ },
133
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {})
134
+ });
135
+ }
136
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
137
+ "data-cy": "audit-logs",
138
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
139
+ className: "log-controls",
140
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_FormControl.default, {
141
+ style: {
142
+ width: '240px'
143
+ },
144
+ variant: "outlined",
145
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_InputLabel.default, {
146
+ children: t('common.filter')
147
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
148
+ "data-cy": "filter-by-category-trigger",
149
+ value: filter.category,
150
+ onChange: e => setCategory(e.target.value),
151
+ fullWidth: true,
152
+ label: t('common.category'),
153
+ disabled: loading,
154
+ children: categories.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, {
155
+ value: x.value,
156
+ "data-cy": "filter-by-category-".concat(x.value),
157
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
158
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
159
+ children: x.label
160
+ })
161
+ })
162
+ }, x.label))
163
+ })]
164
+ })
165
+ }), data.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
166
+ children: t('common.empty')
167
+ }), data.length > 0 && data.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(AuditLog, {
168
+ log: x
169
+ }, x.id)), paging.pageCount > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
170
+ page: paging.page,
171
+ count: paging.pageCount,
172
+ onChange: (e, page) => fetch({
173
+ page
174
+ }),
175
+ showFirstButton: true,
176
+ showLastButton: true
177
+ })]
178
+ });
179
+ }
180
+ function WrappedAuditLogs(_ref3) {
181
+ let {
182
+ scope
183
+ } = _ref3;
184
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_auditLog.AuditLogProvider, {
185
+ scope: scope,
186
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(AuditLogs, {})
187
+ });
188
+ }
189
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .log-controls {\n display: flex;\n justify-content: space-between;\n }\n .log-entry {\n display: flex;\n margin: 16px 0;\n\n .log-author {\n margin-right: 8px;\n }\n\n .log-body {\n flex: 1;\n\n a {\n color: ", ";\n }\n\n .log-header {\n }\n\n .log-content {\n p {\n margin-bottom: 4px;\n }\n ul,\n ol {\n padding-left: 2rem;\n }\n li {\n list-style-type: disc;\n }\n }\n\n .log-meta {\n margin-top: 4px;\n\n span {\n font-size: 0.8rem;\n display: inline-block;\n margin-right: 8px;\n padding-right: 8px;\n border-right: 1px solid #ccc;\n\n &:last-of-type {\n border-right: none;\n }\n }\n }\n }\n }\n"])), _ref4 => {
190
+ let {
191
+ theme
192
+ } = _ref4;
193
+ return theme.palette.primary.main;
194
+ });
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletAvatar;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _urlJoin = _interopRequireDefault(require("url-join"));
9
+ var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
10
+ var _Avatar2 = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
11
+ var _constant = require("@abtnode/constant");
12
+ var _node = require("../contexts/node");
13
+ var _util = require("../util");
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ const _excluded = ["blocklet", "style", "size", "ancestors"];
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ 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; }
18
+ 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; }
19
+ 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; }
20
+ 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; }
21
+ 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; }
22
+ const getDeployedFrom = (blocklet, node) => {
23
+ let {
24
+ deployedFrom
25
+ } = blocklet || {};
26
+ if (!deployedFrom && blocklet.source === 'registry') {
27
+ deployedFrom = node.info.blockletRegistry;
28
+ }
29
+ return deployedFrom;
30
+ };
31
+ function BlockletAvatar(_ref) {
32
+ var _blocklet$meta;
33
+ let {
34
+ blocklet,
35
+ style,
36
+ size,
37
+ ancestors
38
+ } = _ref,
39
+ rest = _objectWithoutProperties(_ref, _excluded);
40
+ const node = (0, _node.useNodeContext)();
41
+ const {
42
+ inService
43
+ } = node;
44
+ let logoUrl = inService ? (0, _urlJoin.default)(_util.APP_PREFIX, _constant.WELLKNOWN_SERVICE_PATH_PREFIX, "/blocklet/logo?version=".concat(blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.version)) : (0, _urlJoin.default)(node.prefix, 'blocklet.png');
45
+ const {
46
+ variant
47
+ } = rest;
48
+ if (!inService) {
49
+ const deployedFrom = getDeployedFrom(blocklet, node);
50
+ if (blocklet.source === 'registry' && blocklet.meta.logo) {
51
+ logoUrl = (0, _urlJoin.default)(deployedFrom, (0, _util.formatRegistryLogoPath)(blocklet.meta.bundleDid, blocklet.meta.logo));
52
+ } else {
53
+ const prefix = window.env.apiPrefix || '/';
54
+ logoUrl = (0, _urlJoin.default)(prefix, "/blocklet/logo".concat(ancestors.map(x => "/".concat(x.meta.did)).join(''), "/").concat(blocklet.meta.did));
55
+ }
56
+ }
57
+ const setFallBackUrl = inService ? () => {} : ev => {
58
+ ev.target.src = "".concat(node.prefix, "/blocklet.png");
59
+ };
60
+ let imgEle = /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
61
+ src: logoUrl,
62
+ onError: setFallBackUrl,
63
+ alt: blocklet.meta.name,
64
+ style: {
65
+ width: size
66
+ }
67
+ });
68
+ if (!blocklet.meta.logo) {
69
+ imgEle = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar2.default, {
70
+ did: blocklet.meta.did || '',
71
+ responsive: true
72
+ });
73
+ }
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, _objectSpread(_objectSpread({
75
+ variant: variant || 'square',
76
+ style: Object.assign({
77
+ backgroundColor: 'transparent',
78
+ width: size,
79
+ height: size,
80
+ borderRadius: 10
81
+ }, style)
82
+ }, rest), {}, {
83
+ children: imgEle
84
+ }));
85
+ }
86
+ BlockletAvatar.propTypes = {
87
+ blocklet: _propTypes.default.object.isRequired,
88
+ style: _propTypes.default.object,
89
+ size: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
90
+ ancestors: _propTypes.default.array
91
+ };
92
+ BlockletAvatar.defaultProps = {
93
+ style: {},
94
+ size: 40,
95
+ ancestors: []
96
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletSource;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _urlJoin = _interopRequireDefault(require("url-join"));
10
+ var _toUpper = _interopRequireDefault(require("lodash/toUpper"));
11
+ var _Tag = _interopRequireDefault(require("@arcblock/ux/lib/Tag"));
12
+ var _context = require("@arcblock/ux/lib/Locale/context");
13
+ var _Link = _interopRequireDefault(require("@mui/material/Link"));
14
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function BlockletSource(_ref) {
18
+ var _blocklet$meta;
19
+ let {
20
+ sourceInfo,
21
+ blocklet
22
+ } = _ref;
23
+ const {
24
+ t
25
+ } = (0, _react.useContext)(_context.LocaleContext);
26
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
27
+ display: "flex",
28
+ alignItems: "center",
29
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tag.default, {
30
+ type: "success",
31
+ children: (0, _toUpper.default)(sourceInfo.source)
32
+ }, "source"), sourceInfo.source === 'registry' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Link.default, {
33
+ href: (0, _urlJoin.default)(sourceInfo.deployedFrom, 'blocklets', (blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.bundleDid) || ''),
34
+ target: "_blank",
35
+ className: "page-link",
36
+ underline: "hover",
37
+ style: {
38
+ display: 'flex',
39
+ alignItems: 'center',
40
+ marginLeft: 8
41
+ },
42
+ children: t('blocklet.overview.viewInStore')
43
+ })]
44
+ });
45
+ }
46
+ BlockletSource.propTypes = {
47
+ sourceInfo: _propTypes.default.shape({
48
+ source: _propTypes.default.string,
49
+ deployedFrom: _propTypes.default.string
50
+ }),
51
+ blocklet: _propTypes.default.object
52
+ };
53
+ BlockletSource.defaultProps = {
54
+ sourceInfo: {},
55
+ blocklet: {}
56
+ };
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ComponentConfiguration;
7
+ var _react = require("react");
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
11
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
13
+ var _util = require("@blocklet/meta/lib/util");
14
+ var _context = require("@arcblock/ux/lib/Locale/context");
15
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
16
+ var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
17
+ var _util2 = require("../../util");
18
+ var _environment = _interopRequireDefault(require("./environment"));
19
+ var _setting = _interopRequireDefault(require("./setting"));
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+ var _templateObject;
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
24
+ function ComponentConfiguration(_ref) {
25
+ let {
26
+ blocklet,
27
+ ancestors,
28
+ children
29
+ } = _ref;
30
+ const [showDialog, setShowDialog] = (0, _react.useState)('');
31
+ const {
32
+ t
33
+ } = (0, _react.useContext)(_context.LocaleContext);
34
+ const isRoot = !ancestors.map(x => x.meta.did)[0];
35
+ const isDynamic = blocklet.dynamic;
36
+ const [tab, setTab] = (0, _react.useState)('settings');
37
+ const name = ancestors.concat(blocklet).map(x => (0, _util.getDisplayName)(x, true)).join(' / ');
38
+ if ((0, _util2.isInstalling)(blocklet.status)) {
39
+ return null;
40
+ }
41
+ if (blocklet.status === 'unknown' && (0, _util2.isInstalling)(blocklet.status)) {
42
+ return null;
43
+ }
44
+ const onClose = () => {
45
+ setShowDialog(false);
46
+ };
47
+ const onOpen = e => {
48
+ e.stopPropagation();
49
+ // eslint-disable-next-line no-unused-expressions
50
+ setShowDialog(true);
51
+ };
52
+ const tabConfigs = {
53
+ settings: {
54
+ label: t('blocklet.component.setting'),
55
+ value: 'settings',
56
+ component: /*#__PURE__*/(0, _jsxRuntime.jsx)(_setting.default, {
57
+ blocklet: blocklet,
58
+ ancestors: ancestors
59
+ })
60
+ },
61
+ environments: {
62
+ label: t('common.environment'),
63
+ value: 'environments',
64
+ component: /*#__PURE__*/(0, _jsxRuntime.jsx)(_environment.default, {
65
+ blocklet: blocklet,
66
+ ancestors: ancestors
67
+ })
68
+ }
69
+ };
70
+ const tabs = Object.values(tabConfigs).map(_ref2 => {
71
+ let {
72
+ label,
73
+ value
74
+ } = _ref2;
75
+ return {
76
+ label,
77
+ value
78
+ };
79
+ });
80
+ const onTabChange = newTab => {
81
+ setTab(newTab);
82
+ };
83
+ const tabConfig = tabConfigs[tab] || tabConfigs.settings;
84
+ return [typeof children === 'function' ? children({
85
+ open: onOpen
86
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
87
+ onClick: onOpen,
88
+ "data-cy": "action-config-component",
89
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Edit.default, {})
90
+ }), showDialog && /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledDialog, {
91
+ open: true,
92
+ fullWidth: true,
93
+ maxWidth: "md",
94
+ title: name,
95
+ onClose: onClose,
96
+ PaperProps: {
97
+ style: {
98
+ minHeight: 'auto'
99
+ }
100
+ },
101
+ children: isRoot || !isDynamic ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_environment.default, {
102
+ blocklet: blocklet,
103
+ ancestors: ancestors
104
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
105
+ mt: 1,
106
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tabs.default, {
107
+ tabs: tabs,
108
+ current: tab,
109
+ onChange: onTabChange,
110
+ scrollButtons: "auto"
111
+ }), tabConfig.component]
112
+ })
113
+ })];
114
+ }
115
+ ComponentConfiguration.propTypes = {
116
+ blocklet: _propTypes.default.object.isRequired,
117
+ ancestors: _propTypes.default.array,
118
+ children: _propTypes.default.any
119
+ };
120
+ ComponentConfiguration.defaultProps = {
121
+ ancestors: [],
122
+ children: null
123
+ };
124
+ const StyledDialog = (0, _styled.default)(_Dialog.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .MuiDialogContent-root {\n padding-top: 0;\n margin-top: -32px;\n }\n .MuiToolbar-root {\n padding-right: 12px;\n }\n .ux-dialog_right {\n padding-right: 20px;\n }\n"])));
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = DeleteComponent;
7
+ var _react = require("react");
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
11
+ var _context = require("@arcblock/ux/lib/Locale/context");
12
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
13
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
14
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
15
+ var _Radio = _interopRequireDefault(require("@mui/material/Radio"));
16
+ var _RadioGroup = _interopRequireDefault(require("@mui/material/RadioGroup"));
17
+ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
18
+ var _confirm = _interopRequireDefault(require("../../confirm"));
19
+ var _jsxRuntime = require("react/jsx-runtime");
20
+ var _templateObject;
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
23
+ 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; }
24
+ 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; }
25
+ 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; }
26
+ function DeleteComponent(_ref) {
27
+ let {
28
+ component,
29
+ remove,
30
+ disabled,
31
+ tip
32
+ } = _ref;
33
+ const {
34
+ t
35
+ } = (0, _react.useContext)(_context.LocaleContext);
36
+ const [loading, setLoading] = (0, _react.useState)(false);
37
+ const [deleteSetting, setDeleteSetting] = (0, _react.useState)(null);
38
+ const deleteComponent = async param => {
39
+ setLoading(true);
40
+ await remove(param.component, param.removeType);
41
+ setLoading(false);
42
+ setDeleteSetting(null);
43
+ };
44
+ const componentDisabled = disabled || loading;
45
+ const btn = /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledButton, {
46
+ disabled: componentDisabled,
47
+ onClick: () => setDeleteSetting({
48
+ title: t('blocklet.component.delete'),
49
+ // eslint-disable-next-line react/no-unstable-nested-components
50
+ description: (params, setParams) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
51
+ component: "div",
52
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
53
+ gutterBottom: true,
54
+ children: t('blocklet.action.removeComponentDescription')
55
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_RadioGroup.default, {
56
+ name: "removeType",
57
+ value: params.removeType,
58
+ onChange: e => setParams(_objectSpread(_objectSpread({}, params), {}, {
59
+ removeType: e.target.value
60
+ })),
61
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
62
+ value: "keepData",
63
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Radio.default, {}),
64
+ label: t('blocklet.action.removeComponentKeepData')
65
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
66
+ value: "complete",
67
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Radio.default, {}),
68
+ label: t('blocklet.action.removeComponentComplete')
69
+ })]
70
+ })]
71
+ }),
72
+ confirm: t('common.confirm'),
73
+ cancel: t('common.cancel'),
74
+ params: {
75
+ component,
76
+ removeType: 'keepData'
77
+ },
78
+ onConfirm: deleteComponent,
79
+ onCancel: () => setDeleteSetting(null)
80
+ }),
81
+ "data-cy": "delete-component-btn",
82
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Delete.default, {
83
+ disabled: componentDisabled
84
+ })
85
+ });
86
+ const btnWithToolTip = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
87
+ title: tip || t('common.delete'),
88
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
89
+ children: btn
90
+ })
91
+ });
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
93
+ children: [btnWithToolTip, deleteSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
94
+ title: deleteSetting.title,
95
+ description: deleteSetting.description,
96
+ confirm: deleteSetting.confirm,
97
+ cancel: deleteSetting.cancel,
98
+ params: deleteSetting.params,
99
+ onConfirm: deleteSetting.onConfirm,
100
+ onCancel: deleteSetting.onCancel
101
+ })]
102
+ });
103
+ }
104
+ DeleteComponent.propTypes = {
105
+ component: _propTypes.default.object.isRequired,
106
+ remove: _propTypes.default.func,
107
+ disabled: _propTypes.default.bool,
108
+ tip: _propTypes.default.string
109
+ };
110
+ DeleteComponent.defaultProps = {
111
+ remove: async () => {},
112
+ disabled: false,
113
+ tip: ''
114
+ };
115
+ const StyledButton = (0, _styled.default)(_IconButton.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &.Mui-disabled {\n opacity: 0.5;\n }\n"])));