@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.
- package/es/Dialog/confirm.js +10 -8
- package/es/Img/index.js +7 -7
- package/es/Locale/selector.js +9 -9
- package/es/SessionManager/account-item.js +132 -0
- package/es/SessionManager/add-account-item.js +118 -0
- package/es/SessionManager/federated-login-detecter.js +15 -9
- package/es/SessionManager/index.js +122 -224
- package/es/SessionManager/manage-accounts.js +143 -0
- package/es/SessionManager/manage-blocklet.js +62 -0
- package/es/SessionManager/menu-accordion.js +95 -0
- package/es/SessionManager/translation.js +52 -0
- package/es/SessionManager/use-accounts.js +19 -0
- package/es/SessionManager/user-info.js +139 -0
- package/es/SessionManager/user-popper.js +13 -37
- package/es/SessionManager/utils.js +2 -0
- package/es/Util/index.js +7 -0
- package/lib/Dialog/confirm.js +9 -7
- package/lib/Img/index.js +7 -7
- package/lib/Locale/selector.js +16 -17
- package/lib/SessionManager/account-item.js +140 -0
- package/lib/SessionManager/add-account-item.js +126 -0
- package/lib/SessionManager/federated-login-detecter.js +15 -9
- package/lib/SessionManager/index.js +125 -237
- package/lib/SessionManager/manage-accounts.js +155 -0
- package/lib/SessionManager/manage-blocklet.js +78 -0
- package/lib/SessionManager/menu-accordion.js +103 -0
- package/lib/SessionManager/translation.js +59 -0
- package/lib/SessionManager/use-accounts.js +25 -0
- package/lib/SessionManager/user-info.js +155 -0
- package/lib/SessionManager/user-popper.js +8 -3
- package/lib/SessionManager/utils.js +16 -0
- package/lib/Util/index.js +11 -2
- package/package.json +8 -5
- package/src/Dialog/confirm.js +9 -6
- package/src/Img/index.js +5 -5
- package/src/Locale/{selector.js → selector.jsx} +9 -10
- package/src/SessionManager/account-item.jsx +111 -0
- package/src/SessionManager/add-account-item.jsx +115 -0
- package/src/SessionManager/federated-login-detecter.jsx +14 -12
- package/src/SessionManager/index.jsx +135 -214
- package/src/SessionManager/manage-accounts.jsx +143 -0
- package/src/SessionManager/manage-blocklet.jsx +64 -0
- package/src/SessionManager/menu-accordion.jsx +87 -0
- package/src/SessionManager/translation.js +52 -0
- package/src/SessionManager/use-accounts.js +18 -0
- package/src/SessionManager/user-info.jsx +116 -0
- package/src/SessionManager/user-popper.jsx +9 -37
- package/src/SessionManager/utils.js +3 -0
- package/src/Util/index.js +8 -0
- /package/src/Avatar/{did-motif.js → did-motif.jsx} +0 -0
- /package/src/Avatar/{index.js → index.jsx} +0 -0
- /package/src/Header/{auto-hidden.js → auto-hidden.jsx} +0 -0
- /package/src/Header/{header.js → header.jsx} +0 -0
- /package/src/Header/{responsive-header.js → responsive-header.jsx} +0 -0
- /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
|
13
|
-
var
|
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: ["
|
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:
|
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)(
|
145
|
-
|
146
|
-
|
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, {
|