@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,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ManageBlocklet;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _ahooks = require("ahooks");
9
+ var _react = require("@iconify/react");
10
+ var _apps = _interopRequireDefault(require("@iconify-icons/mdi/apps"));
11
+ var _material = require("@mui/material");
12
+ var _menuAccordion = _interopRequireDefault(require("./menu-accordion"));
13
+ var _util = require("../Locale/util");
14
+ var _translation = require("./translation");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ const _excluded = ["svgIcon"];
17
+ /* eslint-disable react/no-array-index-key */
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ 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; }
20
+ 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; }
21
+ 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; }
22
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
23
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
24
+ 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; }
25
+ 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; }
26
+ function ManageBlocklet(_ref) {
27
+ let {
28
+ menu,
29
+ menuRender,
30
+ locale
31
+ } = _ref;
32
+ const t = (0, _ahooks.useMemoizedFn)(function (key) {
33
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
34
+ return (0, _util.translate)(_translation.translations, key, locale, 'en', data);
35
+ });
36
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_menuAccordion.default, {
37
+ locale: locale,
38
+ title: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
39
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
40
+ icon: _apps.default,
41
+ width: 24,
42
+ height: 24,
43
+ className: "session-manager-menu-icon"
44
+ }), t('manageBlocklet')]
45
+ }),
46
+ children: [Array.isArray(menu) && menu.map((menuItem, index) => {
47
+ const {
48
+ svgIcon
49
+ } = menuItem,
50
+ menuProps = _objectWithoutProperties(menuItem, _excluded);
51
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, _objectSpread(_objectSpread({
52
+ className: "session-manager-menu-item"
53
+ }, _objectSpread(_objectSpread({}, menuProps), {}, {
54
+ icon: undefined,
55
+ label: undefined
56
+ })), {}, {
57
+ children: [svgIcon ? svgIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.SvgIcon, {
58
+ component: svgIcon,
59
+ className: "session-manager-menu-icon"
60
+ }) : menuItem.icon, menuItem.label]
61
+ }), index);
62
+ }), menuRender({
63
+ classes: {
64
+ menuItem: 'session-manager-menu-item',
65
+ menuIcon: 'session-manager-menu-icon'
66
+ }
67
+ })]
68
+ });
69
+ }
70
+ ManageBlocklet.propTypes = {
71
+ menu: _propTypes.default.array,
72
+ menuRender: _propTypes.default.func,
73
+ locale: _propTypes.default.string.isRequired
74
+ };
75
+ ManageBlocklet.defaultProps = {
76
+ menu: [],
77
+ menuRender: () => {}
78
+ };
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = MenuAccordion;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _material = require("@mui/material");
9
+ var _expandMore = _interopRequireDefault(require("@iconify-icons/mdi/expand-more"));
10
+ var _react = require("@iconify/react");
11
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
12
+ var _isNil = _interopRequireDefault(require("lodash/isNil"));
13
+ var _ahooks = require("ahooks");
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 isEmptyNode(node) {
19
+ if ((0, _isNil.default)(node)) {
20
+ return true;
21
+ }
22
+ if ((0, _isEmpty.default)(node)) {
23
+ return true;
24
+ }
25
+ if (Array.isArray(node)) {
26
+ return node.every(item => isEmptyNode(item));
27
+ }
28
+ return false;
29
+ }
30
+ function MenuAccordion(_ref) {
31
+ let {
32
+ title,
33
+ children,
34
+ locale
35
+ } = _ref;
36
+ const isEmptyChildren = (0, _ahooks.useCreation)(() => isEmptyNode(children), [children]);
37
+ const t = (0, _ahooks.useMemoizedFn)(function (key) {
38
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
39
+ return (0, _util.translate)(_translation.translations, key, locale, 'en', data);
40
+ });
41
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Accordion, {
42
+ defaultExpanded: true,
43
+ disableGutters: true,
44
+ elevation: 0,
45
+ sx: {
46
+ '&.MuiAccordion-root:before': {
47
+ content: 'unset'
48
+ },
49
+ '.MuiAccordionSummary-root': {
50
+ minHeight: 'auto',
51
+ width: '100%'
52
+ },
53
+ '.MuiAccordionSummary-content': {
54
+ margin: 0
55
+ },
56
+ '.MuiAccordionDetails-root': {
57
+ padding: 0,
58
+ paddingLeft: '30px',
59
+ '.session-manager-menu-item': {
60
+ fontSize: '15px',
61
+ padding: '12px 20px',
62
+ whiteSpace: 'normal'
63
+ },
64
+ '.session-manager-menu-icon': {
65
+ height: '21px',
66
+ widht: '21px'
67
+ }
68
+ }
69
+ },
70
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
71
+ sx: {
72
+ padding: 0,
73
+ width: '100%'
74
+ },
75
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.AccordionSummary, {
76
+ className: "session-manager-menu-item",
77
+ expandIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
78
+ icon: _expandMore.default,
79
+ width: 24,
80
+ height: 24
81
+ }),
82
+ children: title
83
+ })
84
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.AccordionDetails, {
85
+ children: isEmptyChildren ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
86
+ disabled: true,
87
+ className: "session-manager-menu-item",
88
+ sx: {
89
+ justifyContent: 'center'
90
+ },
91
+ children: t('noneMenu')
92
+ }, "empty") : children
93
+ })]
94
+ });
95
+ }
96
+ MenuAccordion.propTypes = {
97
+ title: _propTypes.default.any.isRequired,
98
+ children: _propTypes.default.any.isRequired,
99
+ locale: _propTypes.default.string
100
+ };
101
+ MenuAccordion.defaultProps = {
102
+ locale: 'en'
103
+ };
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.translations = void 0;
7
+ /* eslint-disable import/prefer-default-export */
8
+ const translations = {
9
+ en: {
10
+ edit: 'Edit',
11
+ account: 'account',
12
+ switchDid: 'Switch DID',
13
+ switchTo: 'Switch to',
14
+ switchProfile: 'Switch Profile',
15
+ switchPassport: 'Switch Passport',
16
+ disconnect: 'Disconnect',
17
+ connect: 'Connect',
18
+ openInWallet: 'Open DID Wallet',
19
+ alreadyBindOAuth: 'Already bind Auth0',
20
+ bind: 'Bind ',
21
+ thirdParty: 'Third Party Login',
22
+ connectedWith: 'Connected with',
23
+ manageAccounts: 'Manage Accounts',
24
+ manageBlocklet: 'Manage Blocklet',
25
+ from: 'From',
26
+ addAnotherAccount: 'Add another account',
27
+ deleteAccountTitle: 'Remove this account ?',
28
+ deleteAccountContent: 'After delete account, you can add it agian',
29
+ confirm: 'Confirm',
30
+ cancel: 'Cancel',
31
+ noneMenu: 'Empty menu, maybe you should switch to another role'
32
+ },
33
+ zh: {
34
+ edit: '编辑',
35
+ account: '账号',
36
+ switchDid: '切换账户',
37
+ switchTo: '切换至',
38
+ switchProfile: '切换用户信息',
39
+ switchPassport: '切换通行证',
40
+ disconnect: '退出',
41
+ connect: '登录',
42
+ openInWallet: '打开 DID 钱包',
43
+ // NOTE: 目前只有 Auth0,展示出具体的第三方名字会更好
44
+ alreadyBindOAuth: '已绑定 Auth0 账号',
45
+ bind: '绑定',
46
+ thirdParty: '第三方登录',
47
+ connectedWith: '连接至',
48
+ manageAccounts: '管理账户',
49
+ manageBlocklet: '管理应用',
50
+ from: '连接至',
51
+ addAnotherAccount: '添加一个账号',
52
+ deleteAccountTitle: '是否删除账户?',
53
+ deleteAccountContent: '账户删除后,可再次添加',
54
+ confirm: '确认',
55
+ cancel: '取消',
56
+ noneMenu: '无操作项,请尝试切换角色'
57
+ }
58
+ };
59
+ exports.translations = translations;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useAccounts;
7
+ var _ahooks = require("ahooks");
8
+ function useAccounts() {
9
+ const [accounts, setAccounts] = (0, _ahooks.useLocalStorageState)('blocklet:sessionManager:accounts', {
10
+ defaultValue: []
11
+ });
12
+ const connectAccount = (0, _ahooks.useMemoizedFn)(account => {
13
+ const accountIndex = accounts.findIndex(x => x.did === account.did);
14
+ if (accountIndex >= 0) {
15
+ accounts.splice(accountIndex, 1);
16
+ }
17
+ accounts.unshift(account);
18
+ setAccounts(accounts);
19
+ });
20
+ return {
21
+ accounts,
22
+ setAccounts,
23
+ connectAccount
24
+ };
25
+ }
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = UserInfo;
7
+ var _material = require("@mui/material");
8
+ var _shieldCheck = _interopRequireDefault(require("@iconify-icons/mdi/shield-check"));
9
+ var _expandMore = _interopRequireDefault(require("@iconify-icons/mdi/expand-more"));
10
+ var _react = require("@iconify/react");
11
+ var _ahooks = require("ahooks");
12
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
13
+ var _Address = _interopRequireDefault(require("../Address"));
14
+ var _DID = _interopRequireDefault(require("../DID"));
15
+ var _Util = require("../Util");
16
+ var _util = require("../Locale/util");
17
+ var _translation = require("./translation");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ /* eslint-disable react/jsx-no-bind */
21
+ /* eslint-disable react/prop-types */
22
+
23
+ function UserInfo(_ref) {
24
+ var _session$user, _session$user$avatar, _session$user3, _session$user4, _session$user6;
25
+ let {
26
+ session,
27
+ locale,
28
+ onEditUser,
29
+ onSwitchPassport,
30
+ switchProfile,
31
+ hasBindWallet
32
+ } = _ref;
33
+ const t = function t(key) {
34
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35
+ return (0, _util.t)(_translation.translations, key, locale, 'en', data);
36
+ };
37
+ const avatar = (0, _Util.getUserAvatar)((_session$user = session.user) === null || _session$user === void 0 ? void 0 : (_session$user$avatar = _session$user.avatar) === null || _session$user$avatar === void 0 ? void 0 : _session$user$avatar.replace(/\s/g, encodeURIComponent(' ')));
38
+ const {
39
+ walletDid
40
+ } = session.useDid({
41
+ session
42
+ });
43
+ const currentRole = (0, _ahooks.useCreation)(() => {
44
+ var _session$user2, _session$user2$passpo;
45
+ 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);
46
+ }, [session === null || session === void 0 ? void 0 : (_session$user3 = session.user) === null || _session$user3 === void 0 ? void 0 : _session$user3.passports, session === null || session === void 0 ? void 0 : (_session$user4 = session.user) === null || _session$user4 === void 0 ? void 0 : _session$user4.role]);
47
+ const userEmail = (0, _ahooks.useCreation)(() => {
48
+ var _session$user5;
49
+ return ((_session$user5 = session.user) === null || _session$user5 === void 0 ? void 0 : _session$user5.email) || 'lancelot_lewis@163.com';
50
+ }, [session === null || session === void 0 ? void 0 : session.user]);
51
+ const canEdit = (0, _ahooks.useCreation)(() => {
52
+ if (onEditUser instanceof Function) {
53
+ if (switchProfile && hasBindWallet && session.provider !== 'federated') {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }, [onEditUser, switchProfile, hasBindWallet, session.provider]);
59
+ const _onEditUser = (0, _ahooks.useMemoizedFn)(() => {
60
+ if (canEdit) {
61
+ onEditUser();
62
+ }
63
+ });
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
65
+ sx: {
66
+ display: 'flex',
67
+ alignItems: 'center',
68
+ gap: '16px',
69
+ padding: '15px 20px'
70
+ },
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
72
+ onClick: _onEditUser,
73
+ "data-cy": "sessionManager-switch-profile-trigger",
74
+ sx: {
75
+ cursor: canEdit ? 'pointer' : 'default',
76
+ position: 'relative',
77
+ borderRadius: '100%',
78
+ overflow: 'hidden',
79
+ fontSize: 0,
80
+ '&:hover': canEdit ? {
81
+ '&::after': {
82
+ content: "\"".concat(t('edit'), "\""),
83
+ position: 'absolute',
84
+ bottom: 0,
85
+ background: 'rgba(0, 0, 0, 0.2)',
86
+ left: 0,
87
+ right: 0,
88
+ height: '2.2em',
89
+ color: 'white',
90
+ textAlign: 'center',
91
+ fontSize: '12px',
92
+ lineHeight: '2em'
93
+ }
94
+ } : {}
95
+ },
96
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
97
+ variant: "circle",
98
+ did: session.user.did,
99
+ src: avatar,
100
+ size: 64,
101
+ shape: "circle"
102
+ })
103
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
104
+ sx: {
105
+ flex: 1,
106
+ position: 'static',
107
+ overflow: 'hidden',
108
+ fontSize: '14px'
109
+ },
110
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
111
+ variant: "h5",
112
+ fontWeight: "bold",
113
+ mb: 1,
114
+ children: session.user.fullName
115
+ }), session.provider === 'auth0' ? walletDid ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_DID.default, {
116
+ responsive: false,
117
+ compact: true,
118
+ did: walletDid
119
+ }) : null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_DID.default, {
120
+ responsive: false,
121
+ compact: true,
122
+ did: session.user.did
123
+ }), userEmail ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
124
+ responsive: false,
125
+ children: userEmail
126
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
127
+ label: (currentRole === null || currentRole === void 0 ? void 0 : currentRole.title) || ((_session$user6 = session.user) === null || _session$user6 === void 0 ? void 0 : _session$user6.role.toUpperCase()),
128
+ size: "small",
129
+ variant: "outlined",
130
+ sx: {
131
+ height: 'auto',
132
+ marginRight: 0,
133
+ position: 'absolute',
134
+ top: 20,
135
+ right: 15,
136
+ fontWeight: 'bold',
137
+ fontSize: '12px'
138
+ },
139
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
140
+ icon: _shieldCheck.default,
141
+ height: "0.8em"
142
+ }),
143
+ deleteIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
144
+ icon: _expandMore.default,
145
+ height: "1em"
146
+ })
147
+ // HACK: 必须设置 onDelete 函数,deleteIcon 才能显示出来
148
+ ,
149
+ onDelete: onSwitchPassport,
150
+ onClick: onSwitchPassport,
151
+ "data-cy": "sessionManager-switch-passport-trigger"
152
+ })]
153
+ })]
154
+ });
155
+ }
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = UserPopper;
7
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
8
8
  var _material = require("@mui/material");
9
- var _iconsMaterial = require("@mui/icons-material");
9
+ var _close = _interopRequireDefault(require("@iconify-icons/mdi/close"));
10
+ var _react = require("@iconify/react");
10
11
  var _Theme = require("../Theme");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  var _templateObject;
@@ -66,7 +67,11 @@ function UserPopper(_ref) {
66
67
  zIndex: 1
67
68
  },
68
69
  onClick: onClose,
69
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Close, {})
70
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
71
+ icon: _close.default,
72
+ width: 20,
73
+ height: 20
74
+ })
70
75
  }), children]
71
76
  })
72
77
  })
@@ -87,7 +92,7 @@ UserPopper.defaultProps = {
87
92
  onClose: () => {},
88
93
  autoClose: true
89
94
  };
90
- 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"])), _ref2 => {
95
+ const StyledPopper = (0, _Theme.styled)(_material.Popper)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n z-index: ", ";\n .MuiList-root {\n width: 320px;\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-menu-item {\n padding: 18px 20px;\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: 8px;\n }\n"])), _ref2 => {
91
96
  let {
92
97
  theme
93
98
  } = _ref2;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSourceProvider = exports.getConnectedAccounts = void 0;
7
+ const getSourceProvider = user => {
8
+ var _user$extraConfigs;
9
+ return (user === null || user === void 0 ? void 0 : user.sourceProvider) || (user === null || user === void 0 ? void 0 : (_user$extraConfigs = user.extraConfigs) === null || _user$extraConfigs === void 0 ? void 0 : _user$extraConfigs.sourceProvider) || 'wallet';
10
+ };
11
+ exports.getSourceProvider = getSourceProvider;
12
+ const getConnectedAccounts = user => {
13
+ var _user$extraConfigs2;
14
+ return (user === null || user === void 0 ? void 0 : user.connectedAccounts) || (user === null || user === void 0 ? void 0 : (_user$extraConfigs2 = user.extraConfigs) === null || _user$extraConfigs2 === void 0 ? void 0 : _user$extraConfigs2.connectedAccounts) || [];
15
+ };
16
+ exports.getConnectedAccounts = getConnectedAccounts;
package/lib/Util/index.js CHANGED
@@ -16,7 +16,7 @@ exports.mergeProps = mergeProps;
16
16
  exports.openWebWallet = openWebWallet;
17
17
  exports.parseQuery = parseQuery;
18
18
  exports.setDateTool = setDateTool;
19
- exports.str2color = void 0;
19
+ exports.str2color = exports.sleep = void 0;
20
20
  exports.stringifyQuery = stringifyQuery;
21
21
  var _padStart = _interopRequireDefault(require("lodash/padStart"));
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -339,4 +339,13 @@ const getUserAvatar = function getUserAvatar(avatar) {
339
339
  }
340
340
  return avatar;
341
341
  };
342
- exports.getUserAvatar = getUserAvatar;
342
+ exports.getUserAvatar = getUserAvatar;
343
+ const sleep = function sleep() {
344
+ let time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
345
+ return new Promise(resolve => {
346
+ setTimeout(() => {
347
+ resolve();
348
+ }, time);
349
+ });
350
+ };
351
+ exports.sleep = sleep;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.7.14",
3
+ "version": "2.7.16",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -318,16 +318,19 @@
318
318
  "peerDependencies": {
319
319
  "react": ">=18.1.0"
320
320
  },
321
- "gitHead": "bdb3657628085f18d46bca6769f62074d06f54d3",
321
+ "gitHead": "8adb844a1067ecca748cd70c5978c9f7497e3658",
322
322
  "dependencies": {
323
323
  "@arcblock/did-motif": "^1.1.13",
324
- "@arcblock/icons": "^2.7.14",
325
- "@arcblock/react-hooks": "^2.7.14",
324
+ "@arcblock/icons": "^2.7.16",
325
+ "@arcblock/react-hooks": "^2.7.16",
326
326
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
327
327
  "@emotion/react": "^11.10.4",
328
328
  "@emotion/styled": "^11.10.4",
329
329
  "@fontsource/lato": "^4.5.10",
330
330
  "@fontsource/ubuntu-mono": "^4.5.11",
331
+ "@iconify-icons/ion": "^1.2.10",
332
+ "@iconify-icons/mdi": "^1.2.47",
333
+ "@iconify/react": "^4.1.1",
331
334
  "@mui/icons-material": "^5.10.6",
332
335
  "@mui/material": "^5.10.8",
333
336
  "@solana/qr-code-styling": "^1.6.0-beta.0",
@@ -341,10 +344,10 @@
341
344
  "dayjs": "^1.11.5",
342
345
  "devices.css": "^0.1.15",
343
346
  "highlight.js": "^11.6.0",
347
+ "iconify-icon": "^1.0.8",
344
348
  "is-svg": "^4.3.2",
345
349
  "js-cookie": "^2.2.1",
346
350
  "lodash": "^4.17.21",
347
- "mdi-material-ui": "^7.5.0",
348
351
  "mui-datatables": "^4.2.2",
349
352
  "notistack": "^2.0.5",
350
353
  "pako": "^2.1.0",
@@ -1,9 +1,8 @@
1
1
  import PropTypes from 'prop-types';
2
- import { useContext, forwardRef, useRef, useImperativeHandle } from 'react';
2
+ import { forwardRef, useRef, useImperativeHandle } from 'react';
3
3
  import { useMemoizedFn, useReactive } from 'ahooks';
4
4
  import noop from 'lodash/noop';
5
5
 
6
- import { LocaleContext } from '../Locale/context';
7
6
  import Button from '../Button';
8
7
  import Dialog from './dialog';
9
8
 
@@ -98,8 +97,6 @@ Confirm.defaultProps = {
98
97
  };
99
98
 
100
99
  const ConfirmHolder = forwardRef((props, ref) => {
101
- const { t } = useContext(LocaleContext);
102
-
103
100
  const state = useReactive({
104
101
  show: false,
105
102
  title: '',
@@ -107,6 +104,8 @@ const ConfirmHolder = forwardRef((props, ref) => {
107
104
  onConfirm: noop,
108
105
  onCancel: noop,
109
106
  loading: false,
107
+ confirmButtonText: 'Confirm',
108
+ cancelButtonText: 'Cancel',
110
109
  });
111
110
  const open = useMemoizedFn((params = {}) => {
112
111
  state.show = true;
@@ -114,6 +113,8 @@ const ConfirmHolder = forwardRef((props, ref) => {
114
113
  state.content = params.content;
115
114
  state.onConfirm = params.onConfirm || noop;
116
115
  state.onCancel = params.onCancel || noop;
116
+ if (params.confirmButtonText) state.confirmButtonText = params.confirmButtonText;
117
+ if (params.cancelButtonText) state.cancelButtonText = params.cancelButtonText;
117
118
  state.loading = false;
118
119
  });
119
120
  const reset = useMemoizedFn(() => {
@@ -121,6 +122,8 @@ const ConfirmHolder = forwardRef((props, ref) => {
121
122
  state.content = '';
122
123
  state.onConfirm = noop;
123
124
  state.onCancel = noop;
125
+ state.confirmButtonText = 'Confirm';
126
+ state.cancelButtonText = 'Cancel';
124
127
  });
125
128
  const close = useMemoizedFn(() => {
126
129
  state.show = false;
@@ -158,7 +161,7 @@ const ConfirmHolder = forwardRef((props, ref) => {
158
161
  onConfirm={onConfirm}
159
162
  onCancel={onCancel}
160
163
  confirmButton={{
161
- text: t('common.confirm'),
164
+ text: state.confirmButtonText,
162
165
  props: {
163
166
  variant: 'contained',
164
167
  color: 'primary',
@@ -166,7 +169,7 @@ const ConfirmHolder = forwardRef((props, ref) => {
166
169
  },
167
170
  }}
168
171
  cancelButton={{
169
- text: t('common.cancel'),
172
+ text: state.cancelButtonText,
170
173
  props: {
171
174
  variant: 'outlined',
172
175
  color: 'primary',
package/src/Img/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { useEffect, useMemo, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import SvgIcon from '@mui/material/SvgIcon';
4
3
  import { useInView } from 'react-intersection-observer';
5
- import Alert from 'mdi-material-ui/Alert';
6
- import ImageIcon from 'mdi-material-ui/Image';
4
+ import AlertIcon from '@iconify-icons/mdi/alert';
5
+ import ImageIcon from '@iconify-icons/mdi/image';
6
+ import { Icon } from '@iconify/react';
7
7
  import { styled } from '../Theme';
8
8
 
9
9
  /**
@@ -160,12 +160,12 @@ function Img({
160
160
  <div className={`image ${className} ${classes.root}`} style={mergedStyle}>
161
161
  {!fallback && imgState === 'error' && (
162
162
  <div className="image--state" title="loading image">
163
- <SvgIcon component={Alert} className="image--icon" />
163
+ <Icon icon={AlertIcon} className="image--icon" />
164
164
  </div>
165
165
  )}
166
166
  {!placeholder && imgState === 'loading' && (
167
167
  <div className="image--state" title="Image load error">
168
- <SvgIcon component={ImageIcon} className="image--icon" />
168
+ <Icon icon={ImageIcon} className="image--icon" />
169
169
  </div>
170
170
  )}
171
171
  {imgState === 'loaded' && <img className="image--img" src={src} alt={alt} />}