@arcblock/ux 2.5.59 → 2.5.60

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.
@@ -8,8 +8,8 @@ var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
10
10
  var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
11
- var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
12
11
  var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
12
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
13
13
  var _Button = _interopRequireDefault(require("../Button"));
14
14
  var _Img = _interopRequireDefault(require("../Img"));
15
15
  var _Theme = require("../Theme");
@@ -10,7 +10,7 @@ var _Portal = _interopRequireDefault(require("@mui/material/Portal"));
10
10
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
11
11
  var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
12
12
  var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
13
- var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
13
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
14
14
  var _Icon = _interopRequireDefault(require("../Icon"));
15
15
  var _Button = _interopRequireDefault(require("../Button"));
16
16
  var _Img = _interopRequireDefault(require("../Img"));
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = FederatedLoginDetecter;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _react = require("react");
9
+ var _material = require("@mui/material");
10
+ var _ShieldCheck = _interopRequireDefault(require("mdi-material-ui/ShieldCheck"));
11
+ var _userPopper = _interopRequireDefault(require("./user-popper"));
12
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
13
+ var _Address = _interopRequireDefault(require("../Address"));
14
+ var _Button = _interopRequireDefault(require("../Button"));
15
+ var _Toast = _interopRequireDefault(require("../Toast"));
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ const translations = {
19
+ en: {
20
+ useToConnect(_ref) {
21
+ let {
22
+ master,
23
+ member
24
+ } = _ref;
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
26
+ children: ["Use ", master, " account to connect ", member]
27
+ });
28
+ },
29
+ connect: 'Connect Account',
30
+ loginFederatedFailed: 'Login federated account failed'
31
+ },
32
+ zh: {
33
+ useToConnect(_ref2) {
34
+ let {
35
+ master,
36
+ member
37
+ } = _ref2;
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
39
+ children: ["\u4F7F\u7528 ", master, " \u8D26\u53F7\u8FDE\u63A5 ", member]
40
+ });
41
+ },
42
+ connect: '连接账号',
43
+ loginFederatedFailed: '登录统一登录账号失败'
44
+ }
45
+ };
46
+ function FederatedLoginDetecter(_ref3) {
47
+ var _session$federatedMas, _session$federatedMas2, _userInfo$role, _userInfo$role2;
48
+ let {
49
+ session,
50
+ anchorEl,
51
+ dark,
52
+ locale: _locale
53
+ } = _ref3;
54
+ const [federatedLoginOpen, setFederatedLoginOpen] = (0, _react.useState)(true);
55
+ const siteInfo = (_session$federatedMas = session.federatedMaster) === null || _session$federatedMas === void 0 ? void 0 : _session$federatedMas.site;
56
+ const userInfo = (_session$federatedMas2 = session.federatedMaster) === null || _session$federatedMas2 === void 0 ? void 0 : _session$federatedMas2.user;
57
+ const localeList = Object.keys(translations);
58
+ const locale = localeList.includes(_locale) ? _locale : localeList[0];
59
+ const onLoginFederated = (0, _react.useCallback)(() => {
60
+ session === null || session === void 0 ? void 0 : session.loginFederated(err => {
61
+ if (err) {
62
+ _Toast.default.error(err || translations[_locale].loginFederatedFailed);
63
+ } else {
64
+ setFederatedLoginOpen(false);
65
+ }
66
+ }, {
67
+ mode: userInfo ? 'auto' : 'manual'
68
+ });
69
+ }, [session, userInfo, _locale]);
70
+ return siteInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_userPopper.default, {
71
+ open: federatedLoginOpen,
72
+ anchorEl: anchorEl,
73
+ dark: dark,
74
+ onClose: () => setFederatedLoginOpen(false),
75
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
76
+ p: 2,
77
+ children: [siteInfo && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
78
+ display: "flex",
79
+ alignItems: "center",
80
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
81
+ component: "img",
82
+ mr: 2,
83
+ src: "".concat(siteInfo.appUrl).concat(siteInfo.appLogo),
84
+ alt: siteInfo.appName,
85
+ width: "30px",
86
+ height: "30px"
87
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
88
+ children: translations[locale].useToConnect({
89
+ master: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
90
+ component: "a",
91
+ href: siteInfo.appUrl,
92
+ target: "_blank",
93
+ sx: {
94
+ textDecoration: 'none',
95
+ fontWeight: 'bold',
96
+ color: 'primary.main',
97
+ fontSize: '1.2em'
98
+ },
99
+ children: siteInfo.appName
100
+ }),
101
+ member: window.blocklet.appName
102
+ })
103
+ })]
104
+ }), siteInfo && userInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {
105
+ style: {
106
+ margin: '15px 0 10px 0'
107
+ }
108
+ }), userInfo && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
109
+ display: "flex",
110
+ alignItems: "center",
111
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
112
+ variant: "circle",
113
+ did: userInfo.did,
114
+ src: userInfo.avatar,
115
+ size: 28,
116
+ shape: "circle"
117
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
118
+ ml: 2,
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
120
+ display: "flex",
121
+ justifyContent: "space-between",
122
+ alignItems: "center",
123
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
124
+ fontSize: 18,
125
+ children: userInfo.fullName
126
+ }), ((_userInfo$role = userInfo.role) === null || _userInfo$role === void 0 ? void 0 : _userInfo$role.toUpperCase()) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
127
+ label: (_userInfo$role2 = userInfo.role) === null || _userInfo$role2 === void 0 ? void 0 : _userInfo$role2.toUpperCase(),
128
+ size: "small",
129
+ variant: "outlined",
130
+ sx: {
131
+ height: 'auto',
132
+ marginRight: 0,
133
+ fontSize: 12
134
+ },
135
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
136
+ component: _ShieldCheck.default,
137
+ style: {
138
+ fontSize: '14px'
139
+ }
140
+ })
141
+ })]
142
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
143
+ responsive: false,
144
+ children: userInfo.did
145
+ })]
146
+ })]
147
+ }), siteInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
148
+ display: "flex",
149
+ justifyContent: "center",
150
+ mt: 2,
151
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
152
+ variant: "contained",
153
+ size: "small",
154
+ onClick: onLoginFederated,
155
+ children: translations[locale].connect
156
+ })
157
+ })]
158
+ })
159
+ });
160
+ }
161
+ FederatedLoginDetecter.propTypes = {
162
+ session: _propTypes.default.object.isRequired,
163
+ anchorEl: _propTypes.default.instanceOf(Element),
164
+ dark: _propTypes.default.bool,
165
+ locale: _propTypes.default.string
166
+ };
167
+ FederatedLoginDetecter.defaultProps = {
168
+ dark: false,
169
+ anchorEl: null,
170
+ locale: 'en'
171
+ };
@@ -16,19 +16,16 @@ var _PersonOutline = _interopRequireDefault(require("@mui/icons-material/PersonO
16
16
  var _Link = _interopRequireDefault(require("@mui/icons-material/Link"));
17
17
  var _VpnKeyOutlined = _interopRequireDefault(require("@mui/icons-material/VpnKeyOutlined"));
18
18
  var _useBrowser = _interopRequireDefault(require("@arcblock/react-hooks/lib/useBrowser"));
19
- var _OAuth = require("@arcblock/did-connect/lib/OAuth");
20
- var _User = require("@arcblock/did-connect/lib/User");
21
- var _Theme = require("../Theme");
22
19
  var _Avatar = _interopRequireDefault(require("../Avatar"));
23
20
  var _Address = _interopRequireDefault(require("../Address"));
21
+ var _federatedLoginDetecter = _interopRequireDefault(require("./federated-login-detecter"));
22
+ var _userPopper = _interopRequireDefault(require("./user-popper"));
24
23
  var _jsxRuntime = require("react/jsx-runtime");
25
- var _templateObject;
26
24
  const _excluded = ["session", "locale", "showText", "showRole", "switchDid", "switchProfile", "switchPassport", "disableLogout", "onLogin", "onLogout", "onSwitchDid", "onSwitchProfile", "onSwitchPassport", "onBindWallet", "menu", "menuRender", "dark", "size"],
27
25
  _excluded2 = ["svgIcon"];
28
26
  /* eslint-disable react/no-array-index-key */
29
27
  /* eslint-disable react/jsx-no-bind */
30
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
32
29
  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
30
  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
31
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -94,12 +91,13 @@ function SessionManager(_ref) {
94
91
  rest = _objectWithoutProperties(_ref, _excluded);
95
92
  const translation = translations[locale] || translations.en;
96
93
  const userAnchorRef = (0, _react.useRef)(null);
94
+ // eslint-disable-next-line react/prop-types
97
95
  const {
98
96
  logoutOAuth,
99
97
  bindOAuth,
100
98
  configs: oauthConfigs,
101
99
  switchOAuthPassport
102
- } = (0, _OAuth.useOAuth)();
100
+ } = session.useOAuth();
103
101
  const [userOpen, setUserOpen] = (0, _react.useState)(false);
104
102
 
105
103
  // base64 img maybe have some blank char, need encodeURIComponent to transform it
@@ -109,9 +107,10 @@ function SessionManager(_ref) {
109
107
  return (_session$user2 = session.user) === null || _session$user2 === void 0 ? void 0 : (_session$user2$passpo = _session$user2.passports) === null || _session$user2$passpo === void 0 ? void 0 : _session$user2$passpo.find(item => item.name === session.user.role);
110
108
  }, [session.user]);
111
109
  const browser = (0, _useBrowser.default)();
110
+ // eslint-disable-next-line react/prop-types
112
111
  const {
113
112
  walletDid
114
- } = (0, _User.useDid)({
113
+ } = session.useDid({
115
114
  session
116
115
  });
117
116
  const isRawWalletAccount = getSourceProvider(session.user) === 'wallet';
@@ -134,36 +133,46 @@ function SessionManager(_ref) {
134
133
  });
135
134
  }).filter(item => item.enabled);
136
135
  if (!session.user) {
137
- return showText ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Button, _objectSpread(_objectSpread({
138
- sx: [{
139
- borderRadius: '100vw'
140
- }, dark && {
141
- color: '#fff',
142
- borderColor: '#fff'
143
- }],
144
- variant: "outlined",
145
- onClick: _onLogin,
146
- "aria-label": "login button"
147
- }, rest), {}, {
148
- "data-cy": "sessionManager-login",
149
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
150
- style: {
151
- lineHeight: '25px'
152
- },
153
- children: translation.connect
136
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
137
+ children: [showText ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Button, _objectSpread(_objectSpread({
138
+ ref: userAnchorRef,
139
+ sx: [{
140
+ borderRadius: '100vw'
141
+ }, dark && {
142
+ color: '#fff',
143
+ borderColor: '#fff'
144
+ }],
145
+ variant: "outlined",
146
+ onClick: _onLogin,
147
+ "aria-label": "login button"
148
+ }, rest), {}, {
149
+ "data-cy": "sessionManager-login",
150
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
151
+ style: {
152
+ lineHeight: '25px'
153
+ },
154
+ children: translation.connect
155
+ })]
156
+ })) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, _objectSpread(_objectSpread({
157
+ ref: userAnchorRef
158
+ }, rest), {}, {
159
+ onClick: _onLogin,
160
+ "data-cy": "sessionManager-login",
161
+ size: "medium",
162
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, {
163
+ style: {
164
+ width: size,
165
+ height: size,
166
+ color: dark ? '#fff' : ''
167
+ }
168
+ })
169
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedLoginDetecter.default, {
170
+ locale: locale,
171
+ dark: dark,
172
+ session: session,
173
+ anchorEl: userAnchorRef.current
154
174
  })]
155
- })) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, _objectSpread(_objectSpread({}, rest), {}, {
156
- onClick: _onLogin,
157
- "data-cy": "sessionManager-login",
158
- size: "medium",
159
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, {
160
- style: {
161
- width: size,
162
- height: size,
163
- color: dark ? '#fff' : ''
164
- }
165
- })
166
- }));
175
+ });
167
176
  }
168
177
  function onToggleUser() {
169
178
  setUserOpen(prevOpen => !prevOpen);
@@ -247,159 +256,131 @@ function SessionManager(_ref) {
247
256
  size: size,
248
257
  shape: "circle"
249
258
  })
250
- })), userAnchorRef.current && /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledPopper, {
259
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_userPopper.default, {
251
260
  open: userOpen,
252
- disablePortal: true,
261
+ onClose: onCloseUser,
253
262
  anchorEl: userAnchorRef.current,
254
- placement: "bottom-end",
255
- $dark: dark,
256
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Paper, {
257
- sx: [theme => ({
258
- borderColor: '#F0F0F0',
259
- boxShadow: '0px 8px 12px rgba(92, 92, 92, 0.04)',
260
- borderRadius: theme.spacing(2),
261
- overflow: 'hidden',
262
- maxWidth: 'calc(100vw - 10px)',
263
- '& .MuiChip-root .MuiChip-icon': {
264
- color: theme.palette.success.main
265
- }
266
- }), dark && {
267
- backgroundColor: '#27282c',
268
- color: '#fff',
269
- border: 0,
270
- '& .MuiChip-root': {
271
- borderColor: '#aaa'
272
- },
273
- '& .MuiListItem-root, & .MuiChip-label': {
274
- color: '#aaa'
275
- },
276
- '& .MuiListItem-root:hover': {
277
- backgroundColor: '#363434'
278
- }
279
- }],
280
- variant: "outlined",
281
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ClickAwayListener, {
282
- onClickAway: onCloseUser,
283
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuList, {
284
- sx: {
285
- p: 0
286
- },
287
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
288
- className: "session-manager-user",
289
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
290
- className: "session-manager-user-name",
291
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
292
- children: session.user.fullName
293
- }), !!showRole && ((currentRole === null || currentRole === void 0 ? void 0 : currentRole.title) || ((_session$user3 = session.user) === null || _session$user3 === void 0 ? void 0 : _session$user3.role.toUpperCase())) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
294
- label: (currentRole === null || currentRole === void 0 ? void 0 : currentRole.title) || ((_session$user4 = session.user) === null || _session$user4 === void 0 ? void 0 : _session$user4.role.toUpperCase()),
295
- size: "small",
296
- variant: "outlined",
297
- sx: {
298
- height: 'auto',
299
- marginRight: 0
300
- },
301
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
302
- component: _ShieldCheck.default,
303
- size: "small"
304
- })
305
- })]
306
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
307
- className: "session-manager-id-list",
308
- children: [walletDid && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
309
- className: "session-manager-id-item",
310
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
311
- responsive: false,
312
- children: walletDid
313
- })
314
- }), (session === null || session === void 0 ? void 0 : (_session$user5 = session.user) === null || _session$user5 === void 0 ? void 0 : _session$user5.email) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
315
- className: "session-manager-id-item",
316
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
317
- responsive: false,
318
- children: session.user.email
319
- })
320
- })]
321
- })]
322
- }), Array.isArray(menu) && menu.map((menuItem, index) => {
323
- const {
324
- svgIcon
325
- } = menuItem,
326
- menuProps = _objectWithoutProperties(menuItem, _excluded2);
327
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, _objectSpread(_objectSpread({
328
- className: "session-manager-menu-item"
329
- }, _objectSpread(_objectSpread({}, menuProps), {}, {
330
- icon: undefined,
331
- label: undefined
332
- })), {}, {
333
- children: [svgIcon ? svgIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
334
- component: svgIcon,
335
- className: "session-manager-menu-icon"
336
- }) : menuItem.icon, menuItem.label]
337
- }), index);
338
- }), menuRender({
339
- classes: {
340
- menuItem: 'session-manager-menu-item',
341
- menuIcon: 'session-manager-menu-icon'
342
- }
343
- }), !browser.wallet && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
344
- component: "a",
345
- className: "session-manager-menu-item",
346
- "data-cy": "sessionManager-openInWallet",
347
- href: "https://www.abtwallet.io/",
348
- target: "_blank",
349
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
350
- component: _OpenIn.default,
351
- className: "session-manager-menu-icon"
352
- }), translation.openInWallet]
353
- }), !!switchDid && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
354
- className: "session-manager-menu-item",
355
- onClick: _onSwitchDid,
356
- "data-cy": "sessionManager-switch-trigger",
357
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
358
- component: _Switch.default,
359
- className: "session-manager-menu-icon"
360
- }), translation.switchDid]
361
- }), !!switchProfile && hasBindWallet && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
362
- className: "session-manager-menu-item",
363
- onClick: _onSwitchProfile,
364
- "data-cy": "sessionManager-switch-profile-trigger",
365
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
366
- component: _PersonOutline.default,
367
- className: "session-manager-menu-icon"
368
- }), translation.switchProfile]
369
- }), !!switchPassport && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
370
- className: "session-manager-menu-item",
371
- onClick: _onSwitchPassport,
372
- "data-cy": "sessionManager-switch-passport-trigger",
373
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
374
- component: _VpnKeyOutlined.default,
375
- className: "session-manager-menu-icon"
376
- }), translation.switchPassport]
377
- }), oauthConfigList.length > 0 && !hasBindAccount && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
378
- className: "session-manager-menu-item",
379
- onClick: _onBindWallet,
380
- "data-cy": "sessionManager-bind-trigger",
381
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
382
- component: _Link.default,
383
- className: "session-manager-menu-icon"
384
- }), isRawWalletAccount ? "".concat(translation.bind).concat(translation.thirdParty) : "".concat(translation.bind, "DID Wallet")]
385
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
386
- className: "session-manager-menu-item",
387
- onClick: _onLogout,
388
- disabled: disableLogout,
389
- "data-cy": "sessionManager-logout-trigger",
390
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
391
- component: _Disconnect.default,
392
- className: "session-manager-menu-icon"
393
- }), translation.disconnect]
263
+ dark: dark,
264
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuList, {
265
+ sx: {
266
+ p: 0
267
+ },
268
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
269
+ className: "session-manager-user",
270
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
271
+ className: "session-manager-user-name",
272
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
273
+ children: session.user.fullName
274
+ }), !!showRole && ((currentRole === null || currentRole === void 0 ? void 0 : currentRole.title) || ((_session$user3 = session.user) === null || _session$user3 === void 0 ? void 0 : _session$user3.role.toUpperCase())) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
275
+ label: (currentRole === null || currentRole === void 0 ? void 0 : currentRole.title) || ((_session$user4 = session.user) === null || _session$user4 === void 0 ? void 0 : _session$user4.role.toUpperCase()),
276
+ size: "small",
277
+ variant: "outlined",
278
+ sx: {
279
+ height: 'auto',
280
+ marginRight: 0
281
+ },
282
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
283
+ component: _ShieldCheck.default,
284
+ size: "small"
285
+ })
394
286
  })]
395
- })
396
- })
287
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
288
+ className: "session-manager-id-list",
289
+ children: [walletDid && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
290
+ className: "session-manager-id-item",
291
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
292
+ responsive: false,
293
+ children: walletDid
294
+ })
295
+ }), (session === null || session === void 0 ? void 0 : (_session$user5 = session.user) === null || _session$user5 === void 0 ? void 0 : _session$user5.email) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
296
+ className: "session-manager-id-item",
297
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
298
+ responsive: false,
299
+ children: session.user.email
300
+ })
301
+ })]
302
+ })]
303
+ }), Array.isArray(menu) && menu.map((menuItem, index) => {
304
+ const {
305
+ svgIcon
306
+ } = menuItem,
307
+ menuProps = _objectWithoutProperties(menuItem, _excluded2);
308
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, _objectSpread(_objectSpread({
309
+ className: "session-manager-menu-item"
310
+ }, _objectSpread(_objectSpread({}, menuProps), {}, {
311
+ icon: undefined,
312
+ label: undefined
313
+ })), {}, {
314
+ children: [svgIcon ? svgIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
315
+ component: svgIcon,
316
+ className: "session-manager-menu-icon"
317
+ }) : menuItem.icon, menuItem.label]
318
+ }), index);
319
+ }), menuRender({
320
+ classes: {
321
+ menuItem: 'session-manager-menu-item',
322
+ menuIcon: 'session-manager-menu-icon'
323
+ }
324
+ }), !browser.wallet && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
325
+ component: "a",
326
+ className: "session-manager-menu-item",
327
+ "data-cy": "sessionManager-openInWallet",
328
+ href: "https://www.abtwallet.io/",
329
+ target: "_blank",
330
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
331
+ component: _OpenIn.default,
332
+ className: "session-manager-menu-icon"
333
+ }), translation.openInWallet]
334
+ }), !!switchDid && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
335
+ className: "session-manager-menu-item",
336
+ onClick: _onSwitchDid,
337
+ "data-cy": "sessionManager-switch-trigger",
338
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
339
+ component: _Switch.default,
340
+ className: "session-manager-menu-icon"
341
+ }), translation.switchDid]
342
+ }), !!switchProfile && hasBindWallet && session.provider !== 'federated' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
343
+ className: "session-manager-menu-item",
344
+ onClick: _onSwitchProfile,
345
+ "data-cy": "sessionManager-switch-profile-trigger",
346
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
347
+ component: _PersonOutline.default,
348
+ className: "session-manager-menu-icon"
349
+ }), translation.switchProfile]
350
+ }), !!switchPassport && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
351
+ className: "session-manager-menu-item",
352
+ onClick: _onSwitchPassport,
353
+ "data-cy": "sessionManager-switch-passport-trigger",
354
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
355
+ component: _VpnKeyOutlined.default,
356
+ className: "session-manager-menu-icon"
357
+ }), translation.switchPassport]
358
+ }), oauthConfigList.length > 0 && !hasBindAccount && session.provider !== 'federated' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
359
+ className: "session-manager-menu-item",
360
+ onClick: _onBindWallet,
361
+ "data-cy": "sessionManager-bind-trigger",
362
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
363
+ component: _Link.default,
364
+ className: "session-manager-menu-icon"
365
+ }), isRawWalletAccount ? "".concat(translation.bind).concat(translation.thirdParty) : "".concat(translation.bind, "DID Wallet")]
366
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
367
+ className: "session-manager-menu-item",
368
+ onClick: _onLogout,
369
+ disabled: disableLogout,
370
+ "data-cy": "sessionManager-logout-trigger",
371
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
372
+ component: _Disconnect.default,
373
+ className: "session-manager-menu-icon"
374
+ }), translation.disconnect]
375
+ })]
397
376
  })
398
377
  })]
399
378
  });
400
379
  }
401
380
  SessionManager.propTypes = {
402
381
  session: _propTypes.default.shape({
382
+ federatedMaster: _propTypes.default.object,
383
+ provider: _propTypes.default.oneOf(['wallet', 'federated', 'auth0']),
403
384
  user: _propTypes.default.shape({
404
385
  did: _propTypes.default.string.isRequired,
405
386
  role: _propTypes.default.string.isRequired,
@@ -465,16 +446,5 @@ SessionManager.defaultProps = {
465
446
  dark: false,
466
447
  size: 24
467
448
  };
468
- const StyledPopper = (0, _Theme.styled)(_material.Popper)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n z-index: ", ";\n .MuiList-root {\n /* HACK: \u9700\u8981288px \u624D\u80FD\u5C06 did \u5C55\u793A\u5B8C\u6574 */\n width: 290px;\n }\n .session-manager-user {\n font-size: 12px;\n flex-direction: column;\n align-items: flex-start;\n padding: 24px 24px 10px;\n }\n .session-manager-user-name {\n font-size: 20px;\n color: ", ";\n font-weight: bold;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n .session-manager-id-item {\n position: relative;\n padding-left: 8px;\n /* HACK: \u5F53\u524D\u5143\u7D20\u65E2\u662F\u7B2C\u4E00\u4E2A\uFF0C\u4E5F\u662F\u6700\u540E\u4E00\u4E2A\uFF0C\u5373\u53EA\u6709\u4E00\u4E2A\u540C\u7EA7\u5143\u7D20 */\n &:first-of-type:last-of-type {\n padding-left: 0;\n &:before,\n &:after {\n content: unset;\n }\n }\n &:before {\n position: absolute;\n content: '';\n left: 0px;\n top: 50%;\n width: 6px;\n height: 1px;\n background-color: #aeaeae;\n }\n &:not(:last-of-type):after {\n position: absolute;\n content: '';\n left: 0px;\n top: 50%;\n height: 100%;\n width: 1px;\n background-color: #aeaeae;\n }\n }\n .session-manager-menu-item {\n padding: 18.5px 24px;\n color: #777;\n font-size: 16px;\n &:hover {\n background-color: #fbfbfb;\n }\n }\n .session-manager-menu-icon {\n color: #999;\n margin-right: 16px;\n }\n"])), _ref3 => {
469
- let {
470
- theme
471
- } = _ref3;
472
- return theme.zIndex.tooltip;
473
- }, _ref4 => {
474
- let {
475
- $dark
476
- } = _ref4;
477
- return $dark ? '#aaa' : '#222';
478
- });
479
449
  var _default = SessionManager;
480
450
  exports.default = _default;