@arcblock/ux 2.9.67 → 2.9.68
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/Button/wrap.js +1 -1
- package/es/Colors/themes/temp.js +2 -1
- package/es/Dialog/types.d.ts +3 -0
- package/es/Dialog/use-confirm.js +18 -4
- package/es/Layout/dashboard/index.js +0 -2
- package/es/SessionUser/components/session-user-item.js +14 -4
- package/es/Tabs/index.js +1 -1
- package/es/Util/constant.js +26 -0
- package/es/Util/federated.js +12 -0
- package/es/WalletOSIcon/index.js +5 -3
- package/lib/Button/wrap.js +1 -1
- package/lib/Colors/themes/temp.js +2 -1
- package/lib/Dialog/types.d.ts +3 -0
- package/lib/Dialog/use-confirm.js +22 -4
- package/lib/Layout/dashboard/index.js +1 -1
- package/lib/SessionUser/components/session-user-item.js +13 -3
- package/lib/Tabs/index.js +1 -1
- package/lib/Util/constant.js +27 -1
- package/lib/Util/federated.js +13 -0
- package/lib/WalletOSIcon/index.js +6 -3
- package/package.json +5 -5
- package/src/Button/wrap.js +1 -1
- package/src/Colors/themes/temp.js +2 -0
- package/src/Dialog/types.d.ts +3 -0
- package/src/Dialog/use-confirm.jsx +16 -2
- package/src/Layout/dashboard/index.js +0 -2
- package/src/SessionUser/components/session-user-item.jsx +19 -2
- package/src/Tabs/index.jsx +1 -1
- package/src/Util/constant.js +28 -0
- package/src/Util/federated.js +13 -0
- package/src/WalletOSIcon/index.jsx +5 -3
- /package/src/ErrorBoundary/{fallback.js → fallback.jsx} +0 -0
- /package/src/ErrorBoundary/{index.js → index.jsx} +0 -0
package/es/Button/wrap.js
CHANGED
|
@@ -34,7 +34,7 @@ const extendedColors = {
|
|
|
34
34
|
* @typedef {{
|
|
35
35
|
* rounded?: boolean,
|
|
36
36
|
* loading?: boolean,
|
|
37
|
-
* forwardedRef
|
|
37
|
+
* forwardedRef?: import('react').ForwardedRef<any>,
|
|
38
38
|
* color?: 'default' | 'inherit' | 'primary' | 'secondary' | 'danger' | 'warning' | 'reverse' | 'did'
|
|
39
39
|
* } & import('@mui/material').ButtonProps} ButtonProps
|
|
40
40
|
*/
|
package/es/Colors/themes/temp.js
CHANGED
|
@@ -35,6 +35,7 @@ const colors = {
|
|
|
35
35
|
buttonsButtonNeutralHover: 'rgba(243, 244, 246, 1)',
|
|
36
36
|
buttonsButtonInverted: 'rgba(3, 7, 18, 1)',
|
|
37
37
|
buttonsButtonInvertedHover: 'rgba(17, 24, 39, 1)',
|
|
38
|
-
buttonsButtonDanger: 'rgba(225, 29, 72, 1)'
|
|
38
|
+
buttonsButtonDanger: 'rgba(225, 29, 72, 1)',
|
|
39
|
+
red: '#FF6369'
|
|
39
40
|
};
|
|
40
41
|
export default colors;
|
package/es/Dialog/types.d.ts
CHANGED
|
@@ -10,5 +10,8 @@ export type OpenConfirmProps = {
|
|
|
10
10
|
cancelButtonText: string;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
export type UpdateConfirmProps = Partial<Pick<OpenConfirmProps, 'title' | 'content'>>;
|
|
14
|
+
|
|
13
15
|
export type OpenConfirm = (params: OpenConfirmProps) => void;
|
|
14
16
|
export type CloseConfirm = () => void;
|
|
17
|
+
export type UpdateConfirm = (params: UpdateConfirmProps) => void;
|
package/es/Dialog/use-confirm.js
CHANGED
|
@@ -44,6 +44,10 @@ const ConfirmHolder = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
44
44
|
reset();
|
|
45
45
|
}, 300);
|
|
46
46
|
});
|
|
47
|
+
const update = useMemoizedFn(params => {
|
|
48
|
+
if (params.title) setTitle(params.title);
|
|
49
|
+
if (params.content) setContent(params.content);
|
|
50
|
+
});
|
|
47
51
|
const onCancel = useMemoizedFn((e, reason) => {
|
|
48
52
|
close();
|
|
49
53
|
state?.onCancel(e, reason);
|
|
@@ -59,9 +63,10 @@ const ConfirmHolder = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
59
63
|
useImperativeHandle(ref, () => {
|
|
60
64
|
return {
|
|
61
65
|
open,
|
|
62
|
-
close
|
|
66
|
+
close,
|
|
67
|
+
update
|
|
63
68
|
};
|
|
64
|
-
}, [open, close]);
|
|
69
|
+
}, [open, close, update]);
|
|
65
70
|
return /*#__PURE__*/_jsx(Confirm, {
|
|
66
71
|
...props,
|
|
67
72
|
open: state.show,
|
|
@@ -99,15 +104,24 @@ export default function useConfirm(props = {}) {
|
|
|
99
104
|
confirmRef.current?.open(...args);
|
|
100
105
|
});
|
|
101
106
|
/**
|
|
102
|
-
*
|
|
107
|
+
* 关闭一个弹窗
|
|
103
108
|
* @type {import('./types').CloseConfirm}
|
|
104
109
|
*/
|
|
105
110
|
const close = useMemoizedFn((...args) => {
|
|
106
111
|
confirmRef.current?.close(...args);
|
|
107
112
|
});
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* 更新弹窗的 title 和 content
|
|
116
|
+
* @type {import('./types').UpdateConfirm}
|
|
117
|
+
*/
|
|
118
|
+
const update = useMemoizedFn((...args) => {
|
|
119
|
+
confirmRef.current?.update(...args);
|
|
120
|
+
});
|
|
108
121
|
const confirmApi = {
|
|
109
122
|
open,
|
|
110
|
-
close
|
|
123
|
+
close,
|
|
124
|
+
update
|
|
111
125
|
};
|
|
112
126
|
return {
|
|
113
127
|
confirmHolder: /*#__PURE__*/_jsx(ConfirmHolder, {
|
|
@@ -240,8 +240,6 @@ const Wrapper = styled('div', {
|
|
|
240
240
|
.header-logo {
|
|
241
241
|
display: flex;
|
|
242
242
|
justify-content: center;
|
|
243
|
-
/* logo 与 sidebar 中的 icon 垂直对齐, sidebarWidth - 24 * 2 */
|
|
244
|
-
min-width: ${props => props.sidebarWidth - 24 * 2}px;
|
|
245
243
|
}
|
|
246
244
|
&.dashboard-dense {
|
|
247
245
|
.header-logo {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
import { Box, IconButton, Typography } from '@mui/material';
|
|
3
|
+
import { Box, IconButton, Tooltip, Typography } from '@mui/material';
|
|
4
4
|
import { Icon } from '@iconify/react';
|
|
5
5
|
import LensIcon from '@iconify-icons/material-symbols/lens';
|
|
6
6
|
import WalletOSIcon from '../../WalletOSIcon';
|
|
@@ -34,6 +34,7 @@ const SessionUserItem = /*#__PURE__*/forwardRef(({
|
|
|
34
34
|
display: 'flex',
|
|
35
35
|
alignItems: 'center',
|
|
36
36
|
gap: 0.5,
|
|
37
|
+
overflow: 'hidden',
|
|
37
38
|
'& .did-address-avatar': {
|
|
38
39
|
display: 'none !important'
|
|
39
40
|
},
|
|
@@ -63,11 +64,20 @@ const SessionUserItem = /*#__PURE__*/forwardRef(({
|
|
|
63
64
|
sx: {
|
|
64
65
|
lineHeight: 1
|
|
65
66
|
}
|
|
66
|
-
}) : sessionItem.user.email && /*#__PURE__*/_jsx(
|
|
67
|
+
}) : sessionItem.user.email && /*#__PURE__*/_jsx(Tooltip, {
|
|
68
|
+
title: sessionItem.user.email,
|
|
67
69
|
sx: {
|
|
68
|
-
|
|
70
|
+
zIndex: 1600
|
|
69
71
|
},
|
|
70
|
-
|
|
72
|
+
placement: "top",
|
|
73
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
|
74
|
+
sx: {
|
|
75
|
+
fontSize: 14,
|
|
76
|
+
overflow: 'hidden',
|
|
77
|
+
textOverflow: 'ellipsis'
|
|
78
|
+
},
|
|
79
|
+
children: sessionItem.user.email
|
|
80
|
+
})
|
|
71
81
|
})]
|
|
72
82
|
}), statusContent || active && /*#__PURE__*/_jsx(IconButton, {
|
|
73
83
|
size: "small",
|
package/es/Tabs/index.js
CHANGED
package/es/Util/constant.js
CHANGED
|
@@ -12,4 +12,30 @@ export const DID_PREFIX = 'did:abt:';
|
|
|
12
12
|
export const PASSPORT_STATUS = {
|
|
13
13
|
VALID: 'valid',
|
|
14
14
|
REVOKED: 'revoked'
|
|
15
|
+
};
|
|
16
|
+
export const LOGIN_PROVIDER = {
|
|
17
|
+
// EMAIL: 'Email',
|
|
18
|
+
AUTH0: 'auth0',
|
|
19
|
+
APPLE: 'apple',
|
|
20
|
+
GITHUB: 'github',
|
|
21
|
+
GOOGLE: 'google',
|
|
22
|
+
WALLET: 'wallet',
|
|
23
|
+
NFT: 'nft'
|
|
24
|
+
};
|
|
25
|
+
export const LOGIN_PROVIDER_NAME = {
|
|
26
|
+
// [LOGIN_PROVIDER.EMAIL]: 'Email',
|
|
27
|
+
[LOGIN_PROVIDER.AUTH0]: 'Email',
|
|
28
|
+
[LOGIN_PROVIDER.APPLE]: 'Apple',
|
|
29
|
+
[LOGIN_PROVIDER.GITHUB]: 'Github',
|
|
30
|
+
[LOGIN_PROVIDER.GOOGLE]: 'Google',
|
|
31
|
+
[LOGIN_PROVIDER.WALLET]: 'DID Wallet',
|
|
32
|
+
[LOGIN_PROVIDER.NFT]: 'NFT'
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// HACK: 目前这里的键值不能使用 [LOGIN_PROVIDER.AUTH0] 形式,否则会影响 ts 的 keyof typeof OAUTH_PROVIDER 来获取键值作为类型的判断
|
|
36
|
+
export const OAUTH_PROVIDER = {
|
|
37
|
+
auth0: 'Email',
|
|
38
|
+
apple: 'Apple',
|
|
39
|
+
github: 'Github',
|
|
40
|
+
google: 'Google'
|
|
15
41
|
};
|
package/es/Util/federated.js
CHANGED
|
@@ -76,4 +76,16 @@ export function getApps(blocklet) {
|
|
|
76
76
|
}
|
|
77
77
|
// NOTICE: masterApp 应该排在前面
|
|
78
78
|
return appList.reverse();
|
|
79
|
+
}
|
|
80
|
+
export async function getBlockletData(appUrl) {
|
|
81
|
+
try {
|
|
82
|
+
const url = new URL('__blocklet__.js', appUrl);
|
|
83
|
+
url.searchParams.set('type', 'json');
|
|
84
|
+
const res = await fetch(url.href);
|
|
85
|
+
const jsonData = await res.json();
|
|
86
|
+
return jsonData;
|
|
87
|
+
} catch (err) {
|
|
88
|
+
console.error(`Failed to get blocklet data: ${appUrl}`, err);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
79
91
|
}
|
package/es/WalletOSIcon/index.js
CHANGED
|
@@ -5,7 +5,9 @@ import IOSRoundedIcon from '@iconify-icons/material-symbols/ios-rounded';
|
|
|
5
5
|
import LanguageIcon from '@iconify-icons/material-symbols/language';
|
|
6
6
|
import AndroidIcon from '@iconify-icons/material-symbols/android';
|
|
7
7
|
import QuestionMarkRoundedIcon from '@iconify-icons/material-symbols/question-mark-rounded';
|
|
8
|
-
import Auth0Icon from '@iconify-icons/logos/auth0-icon';
|
|
8
|
+
// import Auth0Icon from '@iconify-icons/logos/auth0-icon';
|
|
9
|
+
import MailOutlineRoundedIcon from '@iconify-icons/material-symbols/mail-outline-rounded';
|
|
10
|
+
import { LOGIN_PROVIDER } from '../../es/Util/constant';
|
|
9
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
12
|
export default function WalletOSIcon({
|
|
11
13
|
loading,
|
|
@@ -21,9 +23,9 @@ export default function WalletOSIcon({
|
|
|
21
23
|
}
|
|
22
24
|
});
|
|
23
25
|
}
|
|
24
|
-
if (provider ===
|
|
26
|
+
if (provider === LOGIN_PROVIDER.AUTH0) {
|
|
25
27
|
return /*#__PURE__*/_jsx(Icon, {
|
|
26
|
-
icon:
|
|
28
|
+
icon: MailOutlineRoundedIcon,
|
|
27
29
|
style: {
|
|
28
30
|
color,
|
|
29
31
|
transform: 'scale(0.85)'
|
package/lib/Button/wrap.js
CHANGED
|
@@ -48,7 +48,7 @@ const extendedColors = {
|
|
|
48
48
|
* @typedef {{
|
|
49
49
|
* rounded?: boolean,
|
|
50
50
|
* loading?: boolean,
|
|
51
|
-
* forwardedRef
|
|
51
|
+
* forwardedRef?: import('react').ForwardedRef<any>,
|
|
52
52
|
* color?: 'default' | 'inherit' | 'primary' | 'secondary' | 'danger' | 'warning' | 'reverse' | 'did'
|
|
53
53
|
* } & import('@mui/material').ButtonProps} ButtonProps
|
|
54
54
|
*/
|
|
@@ -41,6 +41,7 @@ const colors = {
|
|
|
41
41
|
buttonsButtonNeutralHover: 'rgba(243, 244, 246, 1)',
|
|
42
42
|
buttonsButtonInverted: 'rgba(3, 7, 18, 1)',
|
|
43
43
|
buttonsButtonInvertedHover: 'rgba(17, 24, 39, 1)',
|
|
44
|
-
buttonsButtonDanger: 'rgba(225, 29, 72, 1)'
|
|
44
|
+
buttonsButtonDanger: 'rgba(225, 29, 72, 1)',
|
|
45
|
+
red: '#FF6369'
|
|
45
46
|
};
|
|
46
47
|
var _default = exports.default = colors;
|
package/lib/Dialog/types.d.ts
CHANGED
|
@@ -10,5 +10,8 @@ export type OpenConfirmProps = {
|
|
|
10
10
|
cancelButtonText: string;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
export type UpdateConfirmProps = Partial<Pick<OpenConfirmProps, 'title' | 'content'>>;
|
|
14
|
+
|
|
13
15
|
export type OpenConfirm = (params: OpenConfirmProps) => void;
|
|
14
16
|
export type CloseConfirm = () => void;
|
|
17
|
+
export type UpdateConfirm = (params: UpdateConfirmProps) => void;
|
|
@@ -58,6 +58,10 @@ const ConfirmHolder = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
58
58
|
reset();
|
|
59
59
|
}, 300);
|
|
60
60
|
});
|
|
61
|
+
const update = (0, _ahooks.useMemoizedFn)(params => {
|
|
62
|
+
if (params.title) setTitle(params.title);
|
|
63
|
+
if (params.content) setContent(params.content);
|
|
64
|
+
});
|
|
61
65
|
const onCancel = (0, _ahooks.useMemoizedFn)((e, reason) => {
|
|
62
66
|
close();
|
|
63
67
|
state === null || state === void 0 ? void 0 : state.onCancel(e, reason);
|
|
@@ -73,9 +77,10 @@ const ConfirmHolder = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
73
77
|
(0, _react.useImperativeHandle)(ref, () => {
|
|
74
78
|
return {
|
|
75
79
|
open,
|
|
76
|
-
close
|
|
80
|
+
close,
|
|
81
|
+
update
|
|
77
82
|
};
|
|
78
|
-
}, [open, close]);
|
|
83
|
+
}, [open, close, update]);
|
|
79
84
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, _objectSpread(_objectSpread({}, props), {}, {
|
|
80
85
|
open: state.show,
|
|
81
86
|
title: title,
|
|
@@ -117,7 +122,7 @@ function useConfirm() {
|
|
|
117
122
|
(_confirmRef$current = confirmRef.current) === null || _confirmRef$current === void 0 ? void 0 : _confirmRef$current.open(...args);
|
|
118
123
|
});
|
|
119
124
|
/**
|
|
120
|
-
*
|
|
125
|
+
* 关闭一个弹窗
|
|
121
126
|
* @type {import('./types').CloseConfirm}
|
|
122
127
|
*/
|
|
123
128
|
const close = (0, _ahooks.useMemoizedFn)(function () {
|
|
@@ -127,9 +132,22 @@ function useConfirm() {
|
|
|
127
132
|
}
|
|
128
133
|
(_confirmRef$current2 = confirmRef.current) === null || _confirmRef$current2 === void 0 ? void 0 : _confirmRef$current2.close(...args);
|
|
129
134
|
});
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* 更新弹窗的 title 和 content
|
|
138
|
+
* @type {import('./types').UpdateConfirm}
|
|
139
|
+
*/
|
|
140
|
+
const update = (0, _ahooks.useMemoizedFn)(function () {
|
|
141
|
+
var _confirmRef$current3;
|
|
142
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
143
|
+
args[_key3] = arguments[_key3];
|
|
144
|
+
}
|
|
145
|
+
(_confirmRef$current3 = confirmRef.current) === null || _confirmRef$current3 === void 0 ? void 0 : _confirmRef$current3.update(...args);
|
|
146
|
+
});
|
|
130
147
|
const confirmApi = {
|
|
131
148
|
open,
|
|
132
|
-
close
|
|
149
|
+
close,
|
|
150
|
+
update
|
|
133
151
|
};
|
|
134
152
|
return {
|
|
135
153
|
confirmHolder: /*#__PURE__*/(0, _jsxRuntime.jsx)(ConfirmHolder, _objectSpread(_objectSpread({}, props), {}, {
|
|
@@ -212,7 +212,7 @@ Dashboard.defaultProps = {
|
|
|
212
212
|
};
|
|
213
213
|
const Wrapper = (0, _Theme.styled)('div', {
|
|
214
214
|
shouldForwardProp: prop => prop !== 'sidebarWidth'
|
|
215
|
-
})(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &.dashboard {\n display: flex;\n flex-direction: column;\n height: 100vh;\n }\n .dashboard-body {\n overflow: hidden;\n flex: 1;\n }\n .dashboard-sidebar {\n box-sizing: border-box;\n flex: 0 0 auto;\n width: ", "px;\n overflow: hidden;\n &:hover {\n overflow-y: auto;\n }\n }\n .dashboard-sidebar-container {\n width: ", "px;\n }\n .dashboard-main {\n display: flex;\n flex-direction: column;\n overflow: auto;\n flex: 1;\n position: relative;\n }\n .dashboard-content {\n flex: 1;\n }\n &.dashboard-dense {\n .dashboard-header {\n border-bottom: 1px solid #eee;\n }\n .dashboard-sidebar {\n width: 256px;\n border-right: 1px solid #eee;\n }\n }\n ", " {\n .header-logo {\n display: flex;\n justify-content: center;\n
|
|
215
|
+
})(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &.dashboard {\n display: flex;\n flex-direction: column;\n height: 100vh;\n }\n .dashboard-body {\n overflow: hidden;\n flex: 1;\n }\n .dashboard-sidebar {\n box-sizing: border-box;\n flex: 0 0 auto;\n width: ", "px;\n overflow: hidden;\n &:hover {\n overflow-y: auto;\n }\n }\n .dashboard-sidebar-container {\n width: ", "px;\n }\n .dashboard-main {\n display: flex;\n flex-direction: column;\n overflow: auto;\n flex: 1;\n position: relative;\n }\n .dashboard-content {\n flex: 1;\n }\n &.dashboard-dense {\n .dashboard-header {\n border-bottom: 1px solid #eee;\n }\n .dashboard-sidebar {\n width: 256px;\n border-right: 1px solid #eee;\n }\n }\n ", " {\n .header-logo {\n display: flex;\n justify-content: center;\n }\n &.dashboard-dense {\n .header-logo {\n /* dense = true \u65F6 logo \u4E0E sidenav icons \u4E0D\u9700\u8981\u5BF9\u9F50 */\n width: auto;\n }\n }\n }\n"])), props => props.sidebarWidth, props => props.sidebarWidth, props => props.theme.breakpoints.up('md'));
|
|
216
216
|
const StyledUxHeader = (0, _Theme.styled)(_Header.ResponsiveHeader)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n .header-container {\n max-width: 100%;\n }\n"])));
|
|
217
217
|
|
|
218
218
|
// 兼容旧版 dashboard
|
|
@@ -48,6 +48,7 @@ const SessionUserItem = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
48
48
|
display: 'flex',
|
|
49
49
|
alignItems: 'center',
|
|
50
50
|
gap: 0.5,
|
|
51
|
+
overflow: 'hidden',
|
|
51
52
|
'& .did-address-avatar': {
|
|
52
53
|
display: 'none !important'
|
|
53
54
|
},
|
|
@@ -77,11 +78,20 @@ const SessionUserItem = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
77
78
|
sx: {
|
|
78
79
|
lineHeight: 1
|
|
79
80
|
}
|
|
80
|
-
}) : sessionItem.user.email && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.
|
|
81
|
+
}) : sessionItem.user.email && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Tooltip, {
|
|
82
|
+
title: sessionItem.user.email,
|
|
81
83
|
sx: {
|
|
82
|
-
|
|
84
|
+
zIndex: 1600
|
|
83
85
|
},
|
|
84
|
-
|
|
86
|
+
placement: "top",
|
|
87
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
88
|
+
sx: {
|
|
89
|
+
fontSize: 14,
|
|
90
|
+
overflow: 'hidden',
|
|
91
|
+
textOverflow: 'ellipsis'
|
|
92
|
+
},
|
|
93
|
+
children: sessionItem.user.email
|
|
94
|
+
})
|
|
85
95
|
})]
|
|
86
96
|
}), statusContent || active && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
|
|
87
97
|
size: "small",
|
package/lib/Tabs/index.js
CHANGED
package/lib/Util/constant.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SESSION_TOKEN_STORAGE_KEY = exports.RELAY_SOCKET_PREFIX = exports.REFRESH_TOKEN_STORAGE_KEY = exports.PROFILE_URL = exports.PASSPORT_STATUS = exports.NAVIGATION_URL = exports.DID_PREFIX = exports.DEFAULT_WINDOW_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.DASHBOARD_URL = exports.AUTH_SERVICE_PREFIX = exports.API_DID_PREFIX = void 0;
|
|
6
|
+
exports.SESSION_TOKEN_STORAGE_KEY = exports.RELAY_SOCKET_PREFIX = exports.REFRESH_TOKEN_STORAGE_KEY = exports.PROFILE_URL = exports.PASSPORT_STATUS = exports.OAUTH_PROVIDER = exports.NAVIGATION_URL = exports.LOGIN_PROVIDER_NAME = exports.LOGIN_PROVIDER = exports.DID_PREFIX = exports.DEFAULT_WINDOW_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.DASHBOARD_URL = exports.AUTH_SERVICE_PREFIX = exports.API_DID_PREFIX = void 0;
|
|
7
7
|
const DEFAULT_TIMEOUT = exports.DEFAULT_TIMEOUT = 5 * 60;
|
|
8
8
|
const DEFAULT_WINDOW_TIMEOUT = exports.DEFAULT_WINDOW_TIMEOUT = 30 * 60;
|
|
9
9
|
const AUTH_SERVICE_PREFIX = exports.AUTH_SERVICE_PREFIX = '/.well-known/service';
|
|
@@ -18,4 +18,30 @@ const DID_PREFIX = exports.DID_PREFIX = 'did:abt:';
|
|
|
18
18
|
const PASSPORT_STATUS = exports.PASSPORT_STATUS = {
|
|
19
19
|
VALID: 'valid',
|
|
20
20
|
REVOKED: 'revoked'
|
|
21
|
+
};
|
|
22
|
+
const LOGIN_PROVIDER = exports.LOGIN_PROVIDER = {
|
|
23
|
+
// EMAIL: 'Email',
|
|
24
|
+
AUTH0: 'auth0',
|
|
25
|
+
APPLE: 'apple',
|
|
26
|
+
GITHUB: 'github',
|
|
27
|
+
GOOGLE: 'google',
|
|
28
|
+
WALLET: 'wallet',
|
|
29
|
+
NFT: 'nft'
|
|
30
|
+
};
|
|
31
|
+
const LOGIN_PROVIDER_NAME = exports.LOGIN_PROVIDER_NAME = {
|
|
32
|
+
// [LOGIN_PROVIDER.EMAIL]: 'Email',
|
|
33
|
+
[LOGIN_PROVIDER.AUTH0]: 'Email',
|
|
34
|
+
[LOGIN_PROVIDER.APPLE]: 'Apple',
|
|
35
|
+
[LOGIN_PROVIDER.GITHUB]: 'Github',
|
|
36
|
+
[LOGIN_PROVIDER.GOOGLE]: 'Google',
|
|
37
|
+
[LOGIN_PROVIDER.WALLET]: 'DID Wallet',
|
|
38
|
+
[LOGIN_PROVIDER.NFT]: 'NFT'
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// HACK: 目前这里的键值不能使用 [LOGIN_PROVIDER.AUTH0] 形式,否则会影响 ts 的 keyof typeof OAUTH_PROVIDER 来获取键值作为类型的判断
|
|
42
|
+
const OAUTH_PROVIDER = exports.OAUTH_PROVIDER = {
|
|
43
|
+
auth0: 'Email',
|
|
44
|
+
apple: 'Apple',
|
|
45
|
+
github: 'Github',
|
|
46
|
+
google: 'Google'
|
|
21
47
|
};
|
package/lib/Util/federated.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getApps = getApps;
|
|
7
|
+
exports.getBlockletData = getBlockletData;
|
|
7
8
|
exports.getConfig = getConfig;
|
|
8
9
|
exports.getCurrentApp = getCurrentApp;
|
|
9
10
|
exports.getFederatedApp = getFederatedApp;
|
|
@@ -97,4 +98,16 @@ function getApps(blocklet) {
|
|
|
97
98
|
}
|
|
98
99
|
// NOTICE: masterApp 应该排在前面
|
|
99
100
|
return appList.reverse();
|
|
101
|
+
}
|
|
102
|
+
async function getBlockletData(appUrl) {
|
|
103
|
+
try {
|
|
104
|
+
const url = new URL('__blocklet__.js', appUrl);
|
|
105
|
+
url.searchParams.set('type', 'json');
|
|
106
|
+
const res = await fetch(url.href);
|
|
107
|
+
const jsonData = await res.json();
|
|
108
|
+
return jsonData;
|
|
109
|
+
} catch (err) {
|
|
110
|
+
console.error("Failed to get blocklet data: ".concat(appUrl), err);
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
100
113
|
}
|
|
@@ -11,9 +11,12 @@ var _iosRounded = _interopRequireDefault(require("@iconify-icons/material-symbol
|
|
|
11
11
|
var _language = _interopRequireDefault(require("@iconify-icons/material-symbols/language"));
|
|
12
12
|
var _android = _interopRequireDefault(require("@iconify-icons/material-symbols/android"));
|
|
13
13
|
var _questionMarkRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/question-mark-rounded"));
|
|
14
|
-
var
|
|
14
|
+
var _mailOutlineRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/mail-outline-rounded"));
|
|
15
|
+
var _constant = require("../../es/Util/constant");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
// import Auth0Icon from '@iconify-icons/logos/auth0-icon';
|
|
19
|
+
|
|
17
20
|
function WalletOSIcon(_ref) {
|
|
18
21
|
let {
|
|
19
22
|
loading,
|
|
@@ -29,9 +32,9 @@ function WalletOSIcon(_ref) {
|
|
|
29
32
|
}
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
|
-
if (provider ===
|
|
35
|
+
if (provider === _constant.LOGIN_PROVIDER.AUTH0) {
|
|
33
36
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Icon, {
|
|
34
|
-
icon:
|
|
37
|
+
icon: _mailOutlineRounded.default,
|
|
35
38
|
style: {
|
|
36
39
|
color,
|
|
37
40
|
transform: 'scale(0.85)'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcblock/ux",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.68",
|
|
4
4
|
"description": "Common used react components for arcblock products",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -358,12 +358,12 @@
|
|
|
358
358
|
"@mui/material": "^5.15.0",
|
|
359
359
|
"react": ">=18.2.0"
|
|
360
360
|
},
|
|
361
|
-
"gitHead": "
|
|
361
|
+
"gitHead": "854f02504df5792faf8f9683fc6292a357559ee5",
|
|
362
362
|
"dependencies": {
|
|
363
363
|
"@arcblock/did-motif": "^1.1.13",
|
|
364
|
-
"@arcblock/icons": "^2.9.
|
|
365
|
-
"@arcblock/nft-display": "^2.9.
|
|
366
|
-
"@arcblock/react-hooks": "^2.9.
|
|
364
|
+
"@arcblock/icons": "^2.9.68",
|
|
365
|
+
"@arcblock/nft-display": "^2.9.68",
|
|
366
|
+
"@arcblock/react-hooks": "^2.9.68",
|
|
367
367
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
368
368
|
"@emotion/react": "^11.10.4",
|
|
369
369
|
"@emotion/styled": "^11.10.4",
|
package/src/Button/wrap.js
CHANGED
|
@@ -22,7 +22,7 @@ const extendedColors = {
|
|
|
22
22
|
* @typedef {{
|
|
23
23
|
* rounded?: boolean,
|
|
24
24
|
* loading?: boolean,
|
|
25
|
-
* forwardedRef
|
|
25
|
+
* forwardedRef?: import('react').ForwardedRef<any>,
|
|
26
26
|
* color?: 'default' | 'inherit' | 'primary' | 'secondary' | 'danger' | 'warning' | 'reverse' | 'did'
|
|
27
27
|
* } & import('@mui/material').ButtonProps} ButtonProps
|
|
28
28
|
*/
|
package/src/Dialog/types.d.ts
CHANGED
|
@@ -10,5 +10,8 @@ export type OpenConfirmProps = {
|
|
|
10
10
|
cancelButtonText: string;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
export type UpdateConfirmProps = Partial<Pick<OpenConfirmProps, 'title' | 'content'>>;
|
|
14
|
+
|
|
13
15
|
export type OpenConfirm = (params: OpenConfirmProps) => void;
|
|
14
16
|
export type CloseConfirm = () => void;
|
|
17
|
+
export type UpdateConfirm = (params: UpdateConfirmProps) => void;
|
|
@@ -46,6 +46,10 @@ const ConfirmHolder = forwardRef((props, ref) => {
|
|
|
46
46
|
reset();
|
|
47
47
|
}, 300);
|
|
48
48
|
});
|
|
49
|
+
const update = useMemoizedFn((params) => {
|
|
50
|
+
if (params.title) setTitle(params.title);
|
|
51
|
+
if (params.content) setContent(params.content);
|
|
52
|
+
});
|
|
49
53
|
const onCancel = useMemoizedFn((e, reason) => {
|
|
50
54
|
close();
|
|
51
55
|
state?.onCancel(e, reason);
|
|
@@ -64,9 +68,10 @@ const ConfirmHolder = forwardRef((props, ref) => {
|
|
|
64
68
|
return {
|
|
65
69
|
open,
|
|
66
70
|
close,
|
|
71
|
+
update,
|
|
67
72
|
};
|
|
68
73
|
},
|
|
69
|
-
[open, close]
|
|
74
|
+
[open, close, update]
|
|
70
75
|
);
|
|
71
76
|
|
|
72
77
|
return (
|
|
@@ -109,15 +114,24 @@ export default function useConfirm(props = {}) {
|
|
|
109
114
|
confirmRef.current?.open(...args);
|
|
110
115
|
});
|
|
111
116
|
/**
|
|
112
|
-
*
|
|
117
|
+
* 关闭一个弹窗
|
|
113
118
|
* @type {import('./types').CloseConfirm}
|
|
114
119
|
*/
|
|
115
120
|
const close = useMemoizedFn((...args) => {
|
|
116
121
|
confirmRef.current?.close(...args);
|
|
117
122
|
});
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* 更新弹窗的 title 和 content
|
|
126
|
+
* @type {import('./types').UpdateConfirm}
|
|
127
|
+
*/
|
|
128
|
+
const update = useMemoizedFn((...args) => {
|
|
129
|
+
confirmRef.current?.update(...args);
|
|
130
|
+
});
|
|
118
131
|
const confirmApi = {
|
|
119
132
|
open,
|
|
120
133
|
close,
|
|
134
|
+
update,
|
|
121
135
|
};
|
|
122
136
|
|
|
123
137
|
return {
|
|
@@ -207,8 +207,6 @@ const Wrapper = styled('div', {
|
|
|
207
207
|
.header-logo {
|
|
208
208
|
display: flex;
|
|
209
209
|
justify-content: center;
|
|
210
|
-
/* logo 与 sidebar 中的 icon 垂直对齐, sidebarWidth - 24 * 2 */
|
|
211
|
-
min-width: ${(props) => props.sidebarWidth - 24 * 2}px;
|
|
212
210
|
}
|
|
213
211
|
&.dashboard-dense {
|
|
214
212
|
.header-logo {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
import { Box, IconButton, Typography } from '@mui/material';
|
|
3
|
+
import { Box, IconButton, Tooltip, Typography } from '@mui/material';
|
|
4
4
|
import { Icon } from '@iconify/react';
|
|
5
5
|
import LensIcon from '@iconify-icons/material-symbols/lens';
|
|
6
6
|
|
|
@@ -31,6 +31,7 @@ const SessionUserItem = forwardRef(({ sessionItem, statusContent, active, ...res
|
|
|
31
31
|
display: 'flex',
|
|
32
32
|
alignItems: 'center',
|
|
33
33
|
gap: 0.5,
|
|
34
|
+
overflow: 'hidden',
|
|
34
35
|
'& .did-address-avatar': {
|
|
35
36
|
display: 'none !important',
|
|
36
37
|
},
|
|
@@ -49,7 +50,23 @@ const SessionUserItem = forwardRef(({ sessionItem, statusContent, active, ...res
|
|
|
49
50
|
{isRawWalletAccount ? (
|
|
50
51
|
<DID did={sessionItem.userDid} copyable={false} size={14} responsive={false} compact sx={{ lineHeight: 1 }} />
|
|
51
52
|
) : (
|
|
52
|
-
sessionItem.user.email &&
|
|
53
|
+
sessionItem.user.email && (
|
|
54
|
+
<Tooltip
|
|
55
|
+
title={sessionItem.user.email}
|
|
56
|
+
sx={{
|
|
57
|
+
zIndex: 1600,
|
|
58
|
+
}}
|
|
59
|
+
placement="top">
|
|
60
|
+
<Typography
|
|
61
|
+
sx={{
|
|
62
|
+
fontSize: 14,
|
|
63
|
+
overflow: 'hidden',
|
|
64
|
+
textOverflow: 'ellipsis',
|
|
65
|
+
}}>
|
|
66
|
+
{sessionItem.user.email}
|
|
67
|
+
</Typography>
|
|
68
|
+
</Tooltip>
|
|
69
|
+
)
|
|
53
70
|
)}
|
|
54
71
|
</Box>
|
|
55
72
|
{statusContent ||
|
package/src/Tabs/index.jsx
CHANGED
package/src/Util/constant.js
CHANGED
|
@@ -17,3 +17,31 @@ export const PASSPORT_STATUS = {
|
|
|
17
17
|
VALID: 'valid',
|
|
18
18
|
REVOKED: 'revoked',
|
|
19
19
|
};
|
|
20
|
+
|
|
21
|
+
export const LOGIN_PROVIDER = {
|
|
22
|
+
// EMAIL: 'Email',
|
|
23
|
+
AUTH0: 'auth0',
|
|
24
|
+
APPLE: 'apple',
|
|
25
|
+
GITHUB: 'github',
|
|
26
|
+
GOOGLE: 'google',
|
|
27
|
+
WALLET: 'wallet',
|
|
28
|
+
NFT: 'nft',
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const LOGIN_PROVIDER_NAME = {
|
|
32
|
+
// [LOGIN_PROVIDER.EMAIL]: 'Email',
|
|
33
|
+
[LOGIN_PROVIDER.AUTH0]: 'Email',
|
|
34
|
+
[LOGIN_PROVIDER.APPLE]: 'Apple',
|
|
35
|
+
[LOGIN_PROVIDER.GITHUB]: 'Github',
|
|
36
|
+
[LOGIN_PROVIDER.GOOGLE]: 'Google',
|
|
37
|
+
[LOGIN_PROVIDER.WALLET]: 'DID Wallet',
|
|
38
|
+
[LOGIN_PROVIDER.NFT]: 'NFT',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// HACK: 目前这里的键值不能使用 [LOGIN_PROVIDER.AUTH0] 形式,否则会影响 ts 的 keyof typeof OAUTH_PROVIDER 来获取键值作为类型的判断
|
|
42
|
+
export const OAUTH_PROVIDER = {
|
|
43
|
+
auth0: 'Email',
|
|
44
|
+
apple: 'Apple',
|
|
45
|
+
github: 'Github',
|
|
46
|
+
google: 'Google',
|
|
47
|
+
};
|
package/src/Util/federated.js
CHANGED
|
@@ -88,3 +88,16 @@ export function getApps(blocklet) {
|
|
|
88
88
|
// NOTICE: masterApp 应该排在前面
|
|
89
89
|
return appList.reverse();
|
|
90
90
|
}
|
|
91
|
+
|
|
92
|
+
export async function getBlockletData(appUrl) {
|
|
93
|
+
try {
|
|
94
|
+
const url = new URL('__blocklet__.js', appUrl);
|
|
95
|
+
url.searchParams.set('type', 'json');
|
|
96
|
+
const res = await fetch(url.href);
|
|
97
|
+
const jsonData = await res.json();
|
|
98
|
+
return jsonData;
|
|
99
|
+
} catch (err) {
|
|
100
|
+
console.error(`Failed to get blocklet data: ${appUrl}`, err);
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -5,15 +5,17 @@ import IOSRoundedIcon from '@iconify-icons/material-symbols/ios-rounded';
|
|
|
5
5
|
import LanguageIcon from '@iconify-icons/material-symbols/language';
|
|
6
6
|
import AndroidIcon from '@iconify-icons/material-symbols/android';
|
|
7
7
|
import QuestionMarkRoundedIcon from '@iconify-icons/material-symbols/question-mark-rounded';
|
|
8
|
-
import Auth0Icon from '@iconify-icons/logos/auth0-icon';
|
|
8
|
+
// import Auth0Icon from '@iconify-icons/logos/auth0-icon';
|
|
9
|
+
import MailOutlineRoundedIcon from '@iconify-icons/material-symbols/mail-outline-rounded';
|
|
10
|
+
import { LOGIN_PROVIDER } from '../../es/Util/constant';
|
|
9
11
|
|
|
10
12
|
export default function WalletOSIcon({ loading, walletOS, provider, color }) {
|
|
11
13
|
if (loading) {
|
|
12
14
|
return <Icon icon={QuestionMarkRoundedIcon} style={{ color: 'transparent' }} />;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
|
-
if (provider ===
|
|
16
|
-
return <Icon icon={
|
|
17
|
+
if (provider === LOGIN_PROVIDER.AUTH0) {
|
|
18
|
+
return <Icon icon={MailOutlineRoundedIcon} style={{ color, transform: 'scale(0.85)' }} />;
|
|
17
19
|
}
|
|
18
20
|
if (walletOS === 'ios') {
|
|
19
21
|
return <Icon icon={IOSRoundedIcon} style={{ color, transform: 'scale(1.1)' }} />;
|
|
File without changes
|
|
File without changes
|