@arcblock/ux 2.7.14 → 2.7.16

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 (55) hide show
  1. package/es/Dialog/confirm.js +10 -8
  2. package/es/Img/index.js +7 -7
  3. package/es/Locale/selector.js +9 -9
  4. package/es/SessionManager/account-item.js +132 -0
  5. package/es/SessionManager/add-account-item.js +118 -0
  6. package/es/SessionManager/federated-login-detecter.js +15 -9
  7. package/es/SessionManager/index.js +122 -224
  8. package/es/SessionManager/manage-accounts.js +143 -0
  9. package/es/SessionManager/manage-blocklet.js +62 -0
  10. package/es/SessionManager/menu-accordion.js +95 -0
  11. package/es/SessionManager/translation.js +52 -0
  12. package/es/SessionManager/use-accounts.js +19 -0
  13. package/es/SessionManager/user-info.js +139 -0
  14. package/es/SessionManager/user-popper.js +13 -37
  15. package/es/SessionManager/utils.js +2 -0
  16. package/es/Util/index.js +7 -0
  17. package/lib/Dialog/confirm.js +9 -7
  18. package/lib/Img/index.js +7 -7
  19. package/lib/Locale/selector.js +16 -17
  20. package/lib/SessionManager/account-item.js +140 -0
  21. package/lib/SessionManager/add-account-item.js +126 -0
  22. package/lib/SessionManager/federated-login-detecter.js +15 -9
  23. package/lib/SessionManager/index.js +125 -237
  24. package/lib/SessionManager/manage-accounts.js +155 -0
  25. package/lib/SessionManager/manage-blocklet.js +78 -0
  26. package/lib/SessionManager/menu-accordion.js +103 -0
  27. package/lib/SessionManager/translation.js +59 -0
  28. package/lib/SessionManager/use-accounts.js +25 -0
  29. package/lib/SessionManager/user-info.js +155 -0
  30. package/lib/SessionManager/user-popper.js +8 -3
  31. package/lib/SessionManager/utils.js +16 -0
  32. package/lib/Util/index.js +11 -2
  33. package/package.json +8 -5
  34. package/src/Dialog/confirm.js +9 -6
  35. package/src/Img/index.js +5 -5
  36. package/src/Locale/{selector.js → selector.jsx} +9 -10
  37. package/src/SessionManager/account-item.jsx +111 -0
  38. package/src/SessionManager/add-account-item.jsx +115 -0
  39. package/src/SessionManager/federated-login-detecter.jsx +14 -12
  40. package/src/SessionManager/index.jsx +135 -214
  41. package/src/SessionManager/manage-accounts.jsx +143 -0
  42. package/src/SessionManager/manage-blocklet.jsx +64 -0
  43. package/src/SessionManager/menu-accordion.jsx +87 -0
  44. package/src/SessionManager/translation.js +52 -0
  45. package/src/SessionManager/use-accounts.js +18 -0
  46. package/src/SessionManager/user-info.jsx +116 -0
  47. package/src/SessionManager/user-popper.jsx +9 -37
  48. package/src/SessionManager/utils.js +3 -0
  49. package/src/Util/index.js +8 -0
  50. /package/src/Avatar/{did-motif.js → did-motif.jsx} +0 -0
  51. /package/src/Avatar/{index.js → index.jsx} +0 -0
  52. /package/src/Header/{auto-hidden.js → auto-hidden.jsx} +0 -0
  53. /package/src/Header/{header.js → header.jsx} +0 -0
  54. /package/src/Header/{responsive-header.js → responsive-header.jsx} +0 -0
  55. /package/src/Locale/{context.js → context.jsx} +0 -0
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AccountItem;
7
+ var _material = require("@mui/material");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _react = require("@iconify/react");
10
+ var _check = _interopRequireDefault(require("@iconify-icons/mdi/check"));
11
+ var _trashCanOutline = _interopRequireDefault(require("@iconify-icons/mdi/trash-can-outline"));
12
+ var _ahooks = require("ahooks");
13
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
14
+ var _DID = _interopRequireDefault(require("../DID"));
15
+ var _util = require("../Locale/util");
16
+ var _translation = require("./translation");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function AccountItem(_ref) {
20
+ let {
21
+ account,
22
+ active,
23
+ onDelete,
24
+ onChoose,
25
+ locale
26
+ } = _ref;
27
+ const t = (0, _ahooks.useMemoizedFn)(function (key) {
28
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29
+ return (0, _util.translate)(_translation.translations, key, locale, 'en', data);
30
+ });
31
+ const _onChoose = (0, _ahooks.useMemoizedFn)(() => onChoose(account, {
32
+ active
33
+ }));
34
+ const _onDelete = (0, _ahooks.useMemoizedFn)(e => {
35
+ e.preventDefault();
36
+ e.stopPropagation();
37
+ onDelete(account, {
38
+ active
39
+ });
40
+ });
41
+ if (!(account !== null && account !== void 0 && account.did) || !(account !== null && account !== void 0 && account.appName)) {
42
+ return null;
43
+ }
44
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
45
+ onClick: _onChoose,
46
+ sx: {
47
+ display: 'flex',
48
+ alignItems: 'center',
49
+ overflow: 'hidden',
50
+ gap: '8px',
51
+ position: 'relative',
52
+ '.account-item-actions': {
53
+ position: 'absolute',
54
+ right: 0,
55
+ top: 0,
56
+ bottom: 0,
57
+ marginRight: '12px',
58
+ display: 'flex',
59
+ alignItems: 'center'
60
+ },
61
+ '.account-item-action': {
62
+ alignItems: 'center',
63
+ display: 'none'
64
+ },
65
+ '&:hover .account-item-action': {
66
+ display: 'flex'
67
+ }
68
+ },
69
+ className: "session-manager-menu-item",
70
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
71
+ did: account.did
72
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
73
+ sx: {
74
+ flex: 1,
75
+ overflow: 'hidden',
76
+ fontSize: 0,
77
+ '.did-address-avatar': {
78
+ display: 'none !important'
79
+ }
80
+ },
81
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DID.default, {
82
+ did: account.did,
83
+ copyable: false,
84
+ size: 14,
85
+ responsive: false,
86
+ compact: true,
87
+ sx: {
88
+ lineHeight: 1
89
+ }
90
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
91
+ variant: "caption",
92
+ children: [t('from'), ' ', account.provider === 'federated' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Link, {
93
+ href: account.appUrl,
94
+ target: "_blank",
95
+ underline: "none",
96
+ children: account.appName
97
+ }) : account.appName]
98
+ })]
99
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
100
+ className: "account-item-actions",
101
+ children: active ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
102
+ className: "account-item-action",
103
+ style: {
104
+ display: 'flex'
105
+ },
106
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
107
+ color: "success",
108
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
109
+ icon: _check.default,
110
+ color: "success"
111
+ })
112
+ })
113
+ }, "CheckIcon") : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
114
+ className: "account-item-action",
115
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
116
+ color: "error",
117
+ onClick: _onDelete,
118
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
119
+ icon: _trashCanOutline.default,
120
+ color: "error"
121
+ })
122
+ })
123
+ }, "TrashCanOutlineIcon")
124
+ })]
125
+ });
126
+ }
127
+ AccountItem.propTypes = {
128
+ account: _propTypes.default.object,
129
+ active: _propTypes.default.bool,
130
+ locale: _propTypes.default.string,
131
+ onChoose: _propTypes.default.func,
132
+ onDelete: _propTypes.default.func
133
+ };
134
+ AccountItem.defaultProps = {
135
+ account: null,
136
+ active: false,
137
+ locale: 'en',
138
+ onChoose: () => {},
139
+ onDelete: () => {}
140
+ };
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AddAccountItem;
7
+ var _react = require("@iconify/react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _material = require("@mui/material");
10
+ var _iosAddCircleOutline = _interopRequireDefault(require("@iconify-icons/ion/ios-add-circle-outline"));
11
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
12
+ var _ahooks = require("ahooks");
13
+ var _react2 = require("react");
14
+ var _util = require("../Locale/util");
15
+ var _translation = require("./translation");
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function AddAccountItem(_ref) {
19
+ let {
20
+ onAdd,
21
+ locale
22
+ } = _ref;
23
+ const addRef = (0, _react2.useRef)(null);
24
+ const state = (0, _ahooks.useReactive)({
25
+ open: false
26
+ });
27
+ const t = (0, _ahooks.useMemoizedFn)(function (key) {
28
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29
+ return (0, _util.translate)(_translation.translations, key, locale, 'en', data);
30
+ });
31
+ const apps = (0, _ahooks.useCreation)(() => {
32
+ var _window, _blocklet$settings, _blocklet$settings$fe;
33
+ const appList = [];
34
+ if (typeof window === 'undefined') {
35
+ return appList;
36
+ }
37
+ const blocklet = (_window = window) === null || _window === void 0 ? void 0 : _window.blocklet;
38
+ if (!blocklet) {
39
+ return appList;
40
+ }
41
+ const currentApp = {
42
+ appId: blocklet.appId,
43
+ appName: blocklet.appName,
44
+ appDescription: blocklet.appDescription,
45
+ appLogo: blocklet.appLogo,
46
+ appPid: blocklet.appPid,
47
+ appUrl: blocklet.appUrl,
48
+ version: blocklet.version,
49
+ provider: 'wallet'
50
+ };
51
+ appList.push(currentApp);
52
+ const isFederatedMember = !(0, _isEmpty.default)((_blocklet$settings = blocklet.settings) === null || _blocklet$settings === void 0 ? void 0 : (_blocklet$settings$fe = _blocklet$settings.federated) === null || _blocklet$settings$fe === void 0 ? void 0 : _blocklet$settings$fe.master);
53
+ if (isFederatedMember) {
54
+ const federatedMaster = blocklet.settings.federated.master;
55
+ const masterApp = {
56
+ appId: federatedMaster.appId,
57
+ appName: federatedMaster.appName,
58
+ appDescription: federatedMaster.appDescription,
59
+ appLogo: federatedMaster.appLogo,
60
+ appPid: federatedMaster.appPid,
61
+ appUrl: federatedMaster.appUrl,
62
+ version: federatedMaster.version,
63
+ provider: 'federated'
64
+ };
65
+ return [masterApp, currentApp];
66
+ }
67
+ return appList;
68
+ }, [window.blocklet]);
69
+ const _onAdd = (0, _ahooks.useMemoizedFn)(() => {
70
+ if (apps.length <= 1) {
71
+ onAdd(apps[0]);
72
+ } else {
73
+ state.open = true;
74
+ }
75
+ });
76
+ const onClose = (0, _ahooks.useMemoizedFn)(() => {
77
+ state.open = false;
78
+ });
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
80
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
81
+ ref: addRef,
82
+ onClick: _onAdd,
83
+ className: "session-manager-menu-item",
84
+ sx: {
85
+ display: 'flex',
86
+ gap: '8px'
87
+ },
88
+ "data-cy": "sessionManager-switch-trigger",
89
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
90
+ icon: _iosAddCircleOutline.default,
91
+ width: 24,
92
+ height: 24
93
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
94
+ children: t('addAnotherAccount')
95
+ })]
96
+ }), addRef.current ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Menu, {
97
+ anchorEl: addRef.current,
98
+ open: state.open,
99
+ onClose: onClose,
100
+ elevation: 0,
101
+ PaperProps: {
102
+ variant: 'outlined'
103
+ },
104
+ anchorOrigin: {
105
+ vertical: 'top',
106
+ horizontal: 'left'
107
+ },
108
+ transformOrigin: {
109
+ vertical: 'top',
110
+ horizontal: 'left'
111
+ },
112
+ children: apps.map(app => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
113
+ onClick: () => onAdd(app),
114
+ children: ["Connect with ", app.appName, " account"]
115
+ }, app.appId))
116
+ }) : null]
117
+ });
118
+ }
119
+ AddAccountItem.propTypes = {
120
+ onAdd: _propTypes.default.func,
121
+ locale: _propTypes.default.string
122
+ };
123
+ AddAccountItem.defaultProps = {
124
+ onAdd: () => {},
125
+ locale: 'en'
126
+ };
@@ -9,8 +9,8 @@ var _react = require("react");
9
9
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
10
  var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
11
11
  var _Divider = _interopRequireDefault(require("@mui/material/Divider"));
12
- var _SvgIcon = _interopRequireDefault(require("@mui/material/SvgIcon"));
13
- var _ShieldCheck = _interopRequireDefault(require("mdi-material-ui/ShieldCheck"));
12
+ var _shieldCheck = _interopRequireDefault(require("@iconify-icons/mdi/shield-check"));
13
+ var _react2 = require("@iconify/react");
14
14
  var _userPopper = _interopRequireDefault(require("./user-popper"));
15
15
  var _Avatar = _interopRequireDefault(require("../Avatar"));
16
16
  var _Address = _interopRequireDefault(require("../Address"));
@@ -27,7 +27,7 @@ const translations = {
27
27
  member
28
28
  } = _ref;
29
29
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
30
- children: ["Use ", master, " account to connect ", member]
30
+ children: ["Connect ", member, " with ", master, " account"]
31
31
  });
32
32
  },
33
33
  connect: 'Connect Account',
@@ -72,6 +72,14 @@ function FederatedLoginDetecter(_ref3) {
72
72
  mode: userInfo ? 'auto' : 'manual'
73
73
  });
74
74
  }, [session, userInfo, _locale]);
75
+ let appLogoUrl;
76
+ if (siteInfo) {
77
+ appLogoUrl = new URL(siteInfo.appLogo, siteInfo.appUrl);
78
+ appLogoUrl.searchParams.set('imageFilter', 'resize');
79
+ // HACK: 保持跟其他地方使用的尺寸一致,可以复用同一资源的缓存,减少网络请求
80
+ appLogoUrl.searchParams.set('w', '80');
81
+ appLogoUrl.searchParams.set('h', '80');
82
+ }
75
83
  return siteInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_userPopper.default, {
76
84
  open: federatedLoginOpen,
77
85
  anchorEl: anchorEl,
@@ -86,7 +94,7 @@ function FederatedLoginDetecter(_ref3) {
86
94
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
87
95
  component: "img",
88
96
  mr: 2,
89
- src: "".concat(siteInfo.appUrl).concat(siteInfo.appLogo),
97
+ src: appLogoUrl.href,
90
98
  alt: siteInfo.appName,
91
99
  width: "30px",
92
100
  height: "30px"
@@ -141,11 +149,9 @@ function FederatedLoginDetecter(_ref3) {
141
149
  marginRight: 0,
142
150
  fontSize: 12
143
151
  },
144
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SvgIcon.default, {
145
- component: _ShieldCheck.default,
146
- style: {
147
- fontSize: '14px'
148
- }
152
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.Icon, {
153
+ icon: _shieldCheck.default,
154
+ fontSize: 14
149
155
  })
150
156
  })]
151
157
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {