@blocklet/ui-react 2.9.13 → 2.9.15
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/build.config.ts +29 -0
- package/es/@types/index.d.ts +63 -0
- package/es/@types/index.js +0 -0
- package/es/@types/shims.d.ts +12 -0
- package/es/Dashboard/index.d.ts +41 -0
- package/es/Dashboard/index.js +63 -97
- package/es/Footer/brand.d.ts +22 -0
- package/es/Footer/brand.js +20 -37
- package/es/Footer/copyright.d.ts +18 -0
- package/es/Footer/copyright.js +14 -16
- package/es/Footer/index.d.ts +6 -0
- package/es/Footer/index.js +31 -57
- package/es/Footer/internal-footer.d.ts +29 -0
- package/es/Footer/internal-footer.js +67 -94
- package/es/Footer/layout/plain.d.ts +15 -0
- package/es/Footer/layout/plain.js +19 -37
- package/es/Footer/layout/row.d.ts +18 -0
- package/es/Footer/layout/row.js +9 -19
- package/es/Footer/layout/standard.d.ts +15 -0
- package/es/Footer/layout/standard.js +29 -57
- package/es/Footer/links.d.ts +22 -0
- package/es/Footer/links.js +72 -104
- package/es/Footer/social-media.d.ts +14 -0
- package/es/Footer/social-media.js +35 -35
- package/es/Header/index.d.ts +9 -0
- package/es/Header/index.js +56 -101
- package/es/Icon/index.d.ts +23 -0
- package/es/Icon/index.js +23 -58
- package/es/UserCenter/assets/banner.png +0 -0
- package/es/UserCenter/components/notification.d.ts +5 -0
- package/es/UserCenter/components/notification.js +276 -0
- package/es/UserCenter/components/passport.d.ts +6 -0
- package/es/UserCenter/components/passport.js +69 -0
- package/es/UserCenter/components/privacy.d.ts +11 -0
- package/es/UserCenter/components/privacy.js +99 -0
- package/es/UserCenter/components/settings.d.ts +10 -0
- package/es/UserCenter/components/settings.js +68 -0
- package/es/UserCenter/components/user-basic-info.d.ts +8 -0
- package/es/UserCenter/components/user-basic-info.js +66 -0
- package/es/UserCenter/components/user-center.d.ts +9 -0
- package/es/UserCenter/components/user-center.js +397 -0
- package/es/UserCenter/components/user-info-item.d.ts +10 -0
- package/es/UserCenter/components/user-info-item.js +54 -0
- package/es/UserCenter/components/user-info.d.ts +6 -0
- package/es/UserCenter/components/user-info.js +68 -0
- package/es/UserCenter/components/webhook-item.d.ts +3 -0
- package/es/UserCenter/components/webhook-item.js +243 -0
- package/es/UserCenter/index.d.ts +1 -0
- package/es/UserCenter/index.js +1 -0
- package/es/UserCenter/libs/client.d.ts +2 -0
- package/es/UserCenter/libs/client.js +2 -0
- package/es/UserCenter/libs/locales.d.ts +72 -0
- package/es/UserCenter/libs/locales.js +72 -0
- package/es/UserCenter/libs/utils.d.ts +4 -0
- package/es/UserCenter/libs/utils.js +14 -0
- package/es/blocklets.d.ts +16 -0
- package/es/blocklets.js +56 -45
- package/es/common/header-addons.d.ts +22 -0
- package/es/common/header-addons.js +41 -59
- package/es/common/link-blocker.d.ts +7 -0
- package/es/common/link-blocker.js +10 -17
- package/es/common/overridable-theme-provider.d.ts +18 -0
- package/es/common/overridable-theme-provider.js +6 -16
- package/es/common/wallet-hidden-topbar.d.ts +1 -0
- package/es/common/wallet-hidden-topbar.js +12 -10
- package/es/index.d.ts +5 -0
- package/es/index.js +5 -0
- package/es/types.d.ts +2 -0
- package/es/types.js +17 -11
- package/es/utils.d.ts +8 -0
- package/es/utils.js +21 -26
- package/lib/@types/index.d.ts +63 -0
- package/lib/@types/index.js +1 -0
- package/lib/@types/shims.d.ts +12 -0
- package/lib/Dashboard/index.d.ts +41 -0
- package/lib/Dashboard/index.js +44 -71
- package/lib/Footer/brand.d.ts +22 -0
- package/lib/Footer/brand.js +65 -30
- package/lib/Footer/copyright.d.ts +18 -0
- package/lib/Footer/copyright.js +18 -23
- package/lib/Footer/index.d.ts +6 -0
- package/lib/Footer/index.js +33 -42
- package/lib/Footer/internal-footer.d.ts +29 -0
- package/lib/Footer/internal-footer.js +43 -59
- package/lib/Footer/layout/plain.d.ts +15 -0
- package/lib/Footer/layout/plain.js +25 -30
- package/lib/Footer/layout/row.d.ts +18 -0
- package/lib/Footer/layout/row.js +34 -23
- package/lib/Footer/layout/standard.d.ts +15 -0
- package/lib/Footer/layout/standard.js +35 -41
- package/lib/Footer/links.d.ts +22 -0
- package/lib/Footer/links.js +163 -60
- package/lib/Footer/social-media.d.ts +14 -0
- package/lib/Footer/social-media.js +31 -25
- package/lib/Header/index.d.ts +9 -0
- package/lib/Header/index.js +83 -76
- package/lib/Icon/index.d.ts +23 -0
- package/lib/Icon/index.js +37 -51
- package/lib/UserCenter/assets/banner.png +0 -0
- package/lib/UserCenter/components/notification.d.ts +5 -0
- package/lib/UserCenter/components/notification.js +261 -0
- package/lib/UserCenter/components/passport.d.ts +6 -0
- package/lib/UserCenter/components/passport.js +86 -0
- package/lib/UserCenter/components/privacy.d.ts +11 -0
- package/lib/UserCenter/components/privacy.js +101 -0
- package/lib/UserCenter/components/settings.d.ts +10 -0
- package/lib/UserCenter/components/settings.js +81 -0
- package/lib/UserCenter/components/user-basic-info.d.ts +8 -0
- package/lib/UserCenter/components/user-basic-info.js +67 -0
- package/lib/UserCenter/components/user-center.d.ts +9 -0
- package/lib/UserCenter/components/user-center.js +376 -0
- package/lib/UserCenter/components/user-info-item.d.ts +10 -0
- package/lib/UserCenter/components/user-info-item.js +46 -0
- package/lib/UserCenter/components/user-info.d.ts +6 -0
- package/lib/UserCenter/components/user-info.js +94 -0
- package/lib/UserCenter/components/webhook-item.d.ts +3 -0
- package/lib/UserCenter/components/webhook-item.js +236 -0
- package/lib/UserCenter/index.d.ts +1 -0
- package/lib/UserCenter/index.js +13 -0
- package/lib/UserCenter/libs/client.d.ts +2 -0
- package/lib/UserCenter/libs/client.js +8 -0
- package/lib/UserCenter/libs/locales.d.ts +72 -0
- package/lib/UserCenter/libs/locales.js +78 -0
- package/lib/UserCenter/libs/utils.d.ts +4 -0
- package/lib/UserCenter/libs/utils.js +25 -0
- package/lib/blocklets.d.ts +16 -0
- package/lib/blocklets.js +28 -36
- package/lib/common/header-addons.d.ts +22 -0
- package/lib/common/header-addons.js +24 -36
- package/lib/common/link-blocker.d.ts +7 -0
- package/lib/common/link-blocker.js +10 -18
- package/lib/common/overridable-theme-provider.d.ts +18 -0
- package/lib/common/overridable-theme-provider.js +9 -14
- package/lib/common/wallet-hidden-topbar.d.ts +1 -0
- package/lib/common/wallet-hidden-topbar.js +1 -3
- package/lib/index.d.ts +5 -0
- package/lib/index.js +52 -0
- package/lib/types.d.ts +2 -0
- package/lib/types.js +3 -5
- package/lib/utils.d.ts +8 -0
- package/lib/utils.js +16 -23
- package/package.json +18 -11
- package/src/@types/index.ts +70 -0
- package/src/@types/shims.d.ts +12 -0
- package/src/Footer/index.jsx +1 -1
- package/src/Header/index.jsx +1 -1
- package/src/UserCenter/assets/banner.png +0 -0
- package/src/UserCenter/components/notification.tsx +275 -0
- package/src/UserCenter/components/passport.tsx +83 -0
- package/src/UserCenter/components/privacy.tsx +107 -0
- package/src/UserCenter/components/settings.tsx +78 -0
- package/src/UserCenter/components/user-basic-info.tsx +70 -0
- package/src/UserCenter/components/user-center.tsx +410 -0
- package/src/UserCenter/components/user-info-item.tsx +50 -0
- package/src/UserCenter/components/user-info.tsx +85 -0
- package/src/UserCenter/components/webhook-item.tsx +243 -0
- package/src/UserCenter/index.tsx +1 -0
- package/src/UserCenter/libs/client.ts +3 -0
- package/src/UserCenter/libs/locales.ts +72 -0
- package/src/UserCenter/libs/utils.ts +21 -0
- package/src/blocklets.js +2 -0
- package/src/index.ts +9 -0
- /package/src/common/{link-blocker.js → link-blocker.jsx} +0 -0
package/lib/Dashboard/index.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
8
|
require("iconify-icon");
|
|
8
9
|
var _react = require("react");
|
|
9
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -15,36 +16,20 @@ var _utils = require("../utils");
|
|
|
15
16
|
var _blocklets = require("../blocklets");
|
|
16
17
|
var _headerAddons2 = _interopRequireDefault(require("../common/header-addons"));
|
|
17
18
|
var _walletHiddenTopbar = require("../common/wallet-hidden-topbar");
|
|
18
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
const _excluded = ["meta", "fallbackUrl", "invalidPathFallback", "headerAddons", "sessionManagerProps", "links"];
|
|
20
|
-
/* eslint-disable no-shadow */
|
|
21
|
-
/**
|
|
22
|
-
* 专门用于 (composable) blocklet 的 Dashboard 组件, 解析 blocklet meta 中 section 为 dashboard 的 navigation 数据, 渲染一个 UX Dashboard
|
|
23
|
-
*/
|
|
24
|
-
// eslint-disable-next-line no-shadow
|
|
25
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
let {
|
|
36
|
-
meta,
|
|
37
|
-
fallbackUrl,
|
|
38
|
-
invalidPathFallback,
|
|
39
|
-
headerAddons,
|
|
40
|
-
sessionManagerProps,
|
|
41
|
-
links
|
|
42
|
-
} = _ref,
|
|
43
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
20
|
+
function Dashboard({
|
|
21
|
+
meta,
|
|
22
|
+
fallbackUrl,
|
|
23
|
+
invalidPathFallback,
|
|
24
|
+
headerAddons,
|
|
25
|
+
sessionManagerProps: sessionManagerProps2,
|
|
26
|
+
links,
|
|
27
|
+
...rest
|
|
28
|
+
}) {
|
|
44
29
|
(0, _walletHiddenTopbar.useWalletHiddenTopbar)();
|
|
45
30
|
const sessionCtx = (0, _react.useContext)(_Session.SessionContext);
|
|
46
|
-
const user = sessionCtx
|
|
47
|
-
const userRole = user
|
|
31
|
+
const user = sessionCtx?.session?.user;
|
|
32
|
+
const userRole = user?.role;
|
|
48
33
|
const {
|
|
49
34
|
locale
|
|
50
35
|
} = (0, _context.useLocaleContext)() || {};
|
|
@@ -53,7 +38,7 @@ function Dashboard(_ref) {
|
|
|
53
38
|
try {
|
|
54
39
|
return (0, _blocklets.formatBlockletInfo)(blocklet);
|
|
55
40
|
} catch (e) {
|
|
56
|
-
console.error(
|
|
41
|
+
console.error("Failed to format blocklet info", e, blocklet);
|
|
57
42
|
return blocklet;
|
|
58
43
|
}
|
|
59
44
|
}, [meta]);
|
|
@@ -62,55 +47,43 @@ function Dashboard(_ref) {
|
|
|
62
47
|
flattened,
|
|
63
48
|
matchedIndex
|
|
64
49
|
} = (0, _react.useMemo)(() => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
localizedNav = (0, _blocklets.filterNavByRole)(localizedNav, userRole);
|
|
69
|
-
// 将 nav 数据处理成 ux dashboard 需要的格式
|
|
70
|
-
localizedNav = (0, _utils.mapRecursive)(localizedNav, item => ({
|
|
50
|
+
let localizedNav2 = (0, _blocklets.getLocalizedNavigation)(formattedBlocklet?.navigation?.dashboard, locale) || [];
|
|
51
|
+
localizedNav2 = (0, _blocklets.filterNavByRole)(localizedNav2, userRole);
|
|
52
|
+
localizedNav2 = (0, _utils.mapRecursive)(localizedNav2, item => ({
|
|
71
53
|
title: item.title,
|
|
72
54
|
url: item.link,
|
|
73
|
-
icon: item.icon ?
|
|
55
|
+
icon: item.icon ? /* @__PURE__ */(0, _jsxRuntime.jsx)("iconify-icon", {
|
|
74
56
|
icon: item.icon
|
|
75
57
|
}) : null,
|
|
76
58
|
// https://github.com/ArcBlock/ux/issues/755#issuecomment-1208692620
|
|
77
59
|
external: true,
|
|
78
60
|
children: item.items
|
|
79
|
-
}),
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
flattened[matchedIndex].active = true;
|
|
61
|
+
}), "items");
|
|
62
|
+
const flattened2 = (0, _utils.flatRecursive)(localizedNav2).filter(item => !!item.url);
|
|
63
|
+
const matchedIndex2 = (0, _utils.matchPaths)(flattened2.map(item => item.url));
|
|
64
|
+
if (matchedIndex2 !== -1) {
|
|
65
|
+
flattened2[matchedIndex2].active = true;
|
|
85
66
|
}
|
|
86
67
|
return {
|
|
87
|
-
localizedNav,
|
|
88
|
-
flattened,
|
|
89
|
-
matchedIndex
|
|
68
|
+
localizedNav: localizedNav2,
|
|
69
|
+
flattened: flattened2,
|
|
70
|
+
matchedIndex: matchedIndex2
|
|
90
71
|
};
|
|
91
72
|
}, [formattedBlocklet, locale, userRole]);
|
|
92
|
-
const allLinks = typeof links ===
|
|
93
|
-
|
|
94
|
-
// 页面初始化时, 如果当前用户没有权限访问任何导航菜单 (比如登录时未提供 VC 导致无权限), 则跳转到 fallbackUrl
|
|
95
|
-
// 未认证 (user 为空) 时不做处理, 这种情况的页面跳转逻辑一般由应用自行处理
|
|
73
|
+
const allLinks = typeof links === "function" ? links(localizedNav) : [...localizedNav, ...links];
|
|
96
74
|
(0, _react.useLayoutEffect)(() => {
|
|
97
|
-
if (!!user && !
|
|
75
|
+
if (!!user && !flattened?.length && fallbackUrl) {
|
|
98
76
|
window.location.href = fallbackUrl;
|
|
99
77
|
}
|
|
100
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
78
|
}, [fallbackUrl]);
|
|
102
|
-
|
|
103
|
-
// 导航菜单变动且存在可用菜单但无匹配项时 (如切换 passport), 跳转到首个菜单项
|
|
104
79
|
(0, _react.useLayoutEffect)(() => {
|
|
105
|
-
if (!!user && !!
|
|
80
|
+
if (!!user && !!flattened?.length && matchedIndex === -1) {
|
|
106
81
|
if (invalidPathFallback) {
|
|
107
82
|
invalidPathFallback();
|
|
108
83
|
} else {
|
|
109
|
-
|
|
110
|
-
window.location.href = ((_flattened$ = flattened[0]) === null || _flattened$ === void 0 ? void 0 : _flattened$.url) || _blocklets.publicPath;
|
|
84
|
+
window.location.href = flattened[0]?.url || _blocklets.publicPath;
|
|
111
85
|
}
|
|
112
86
|
}
|
|
113
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
114
87
|
}, [invalidPathFallback, flattened, matchedIndex]);
|
|
115
88
|
if (!formattedBlocklet.appName) {
|
|
116
89
|
return null;
|
|
@@ -120,27 +93,28 @@ function Dashboard(_ref) {
|
|
|
120
93
|
appLogoRect,
|
|
121
94
|
appName
|
|
122
95
|
} = formattedBlocklet;
|
|
123
|
-
const _headerAddons =
|
|
124
|
-
formattedBlocklet
|
|
96
|
+
const _headerAddons = /* @__PURE__ */(0, _jsxRuntime.jsx)(_headerAddons2.default, {
|
|
97
|
+
formattedBlocklet,
|
|
125
98
|
addons: headerAddons,
|
|
126
|
-
sessionManagerProps:
|
|
99
|
+
sessionManagerProps: sessionManagerProps2
|
|
127
100
|
});
|
|
128
|
-
return
|
|
101
|
+
return /* @__PURE__ */(0, _jsxRuntime.jsx)(_dashboard.default, {
|
|
129
102
|
title: appName,
|
|
130
103
|
fullWidth: true,
|
|
131
104
|
sidebarWidth: 128,
|
|
132
105
|
legacy: false,
|
|
133
|
-
links: allLinks
|
|
134
|
-
|
|
135
|
-
headerProps:
|
|
106
|
+
links: allLinks,
|
|
107
|
+
...rest,
|
|
108
|
+
headerProps: {
|
|
136
109
|
homeLink: _blocklets.publicPath,
|
|
137
|
-
logo:
|
|
110
|
+
logo: /* @__PURE__ */(0, _jsxRuntime.jsx)("img", {
|
|
138
111
|
src: appLogoRect || appLogo,
|
|
139
112
|
alt: "logo"
|
|
140
113
|
}),
|
|
141
|
-
addons: _headerAddons
|
|
142
|
-
|
|
143
|
-
|
|
114
|
+
addons: _headerAddons,
|
|
115
|
+
...rest.headerProps
|
|
116
|
+
}
|
|
117
|
+
});
|
|
144
118
|
}
|
|
145
119
|
Dashboard.propTypes = {
|
|
146
120
|
meta: _types.blockletMetaProps,
|
|
@@ -156,7 +130,7 @@ Dashboard.defaultProps = {
|
|
|
156
130
|
meta: {},
|
|
157
131
|
fallbackUrl: _blocklets.publicPath,
|
|
158
132
|
invalidPathFallback: null,
|
|
159
|
-
headerAddons:
|
|
133
|
+
headerAddons: void 0,
|
|
160
134
|
sessionManagerProps: {
|
|
161
135
|
showRole: true,
|
|
162
136
|
// dashboard 默认退出登录行为: 跳转到 (root) blocklet 首页
|
|
@@ -166,5 +140,4 @@ Dashboard.defaultProps = {
|
|
|
166
140
|
},
|
|
167
141
|
links: []
|
|
168
142
|
};
|
|
169
|
-
|
|
170
|
-
exports.default = _default;
|
|
143
|
+
module.exports = Dashboard;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare function Brand({ name, logo, description, ...rest }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
name: any;
|
|
4
|
+
logo: any;
|
|
5
|
+
description: any;
|
|
6
|
+
}): import("react").JSX.Element | null;
|
|
7
|
+
declare namespace Brand {
|
|
8
|
+
namespace propTypes {
|
|
9
|
+
let name: any;
|
|
10
|
+
let logo: any;
|
|
11
|
+
let description: any;
|
|
12
|
+
}
|
|
13
|
+
namespace defaultProps {
|
|
14
|
+
let name_1: string;
|
|
15
|
+
export { name_1 as name };
|
|
16
|
+
let logo_1: string;
|
|
17
|
+
export { logo_1 as logo };
|
|
18
|
+
let description_1: string;
|
|
19
|
+
export { description_1 as description };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export default Brand;
|
package/lib/Footer/brand.js
CHANGED
|
@@ -3,50 +3,40 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
module.exports = Brand;
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
8
|
var _react = require("react");
|
|
8
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
10
|
var _Theme = require("@arcblock/ux/lib/Theme");
|
|
10
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
var _templateObject;
|
|
12
|
-
const _excluded = ["name", "logo", "description"];
|
|
13
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
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; }
|
|
22
|
-
function Brand(_ref) {
|
|
23
|
-
let {
|
|
24
|
-
name,
|
|
25
|
-
logo,
|
|
26
|
-
description
|
|
27
|
-
} = _ref,
|
|
28
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
12
|
+
function Brand({
|
|
13
|
+
name,
|
|
14
|
+
logo,
|
|
15
|
+
description,
|
|
16
|
+
...rest
|
|
17
|
+
}) {
|
|
29
18
|
if (!name && !logo && !description) {
|
|
30
19
|
return null;
|
|
31
20
|
}
|
|
32
|
-
const logoElement =
|
|
21
|
+
const logoElement = (0, _react.isValidElement)(logo) ? logo : /* @__PURE__ */(0, _jsxRuntime.jsx)("img", {
|
|
33
22
|
src: logo,
|
|
34
23
|
alt: name
|
|
35
24
|
});
|
|
36
|
-
return
|
|
37
|
-
|
|
38
|
-
|
|
25
|
+
return /* @__PURE__ */(0, _jsxRuntime.jsxs)(Root, {
|
|
26
|
+
...rest,
|
|
27
|
+
children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)("div", {
|
|
28
|
+
children: [logo && /* @__PURE__ */(0, _jsxRuntime.jsx)("div", {
|
|
39
29
|
className: "footer-brand-logo",
|
|
40
30
|
children: logoElement
|
|
41
|
-
}), name &&
|
|
31
|
+
}), name && /* @__PURE__ */(0, _jsxRuntime.jsx)("div", {
|
|
42
32
|
className: "footer-brand-name",
|
|
43
33
|
children: name
|
|
44
34
|
})]
|
|
45
|
-
}), description &&
|
|
35
|
+
}), description && /* @__PURE__ */(0, _jsxRuntime.jsx)("div", {
|
|
46
36
|
className: "footer-brand-desc",
|
|
47
37
|
children: description
|
|
48
38
|
})]
|
|
49
|
-
})
|
|
39
|
+
});
|
|
50
40
|
}
|
|
51
41
|
Brand.propTypes = {
|
|
52
42
|
name: _propTypes.default.node,
|
|
@@ -54,8 +44,53 @@ Brand.propTypes = {
|
|
|
54
44
|
description: _propTypes.default.string
|
|
55
45
|
};
|
|
56
46
|
Brand.defaultProps = {
|
|
57
|
-
name:
|
|
58
|
-
logo:
|
|
59
|
-
description:
|
|
47
|
+
name: "",
|
|
48
|
+
logo: "",
|
|
49
|
+
description: ""
|
|
60
50
|
};
|
|
61
|
-
const Root = (0, _Theme.styled)(
|
|
51
|
+
const Root = (0, _Theme.styled)("div")`
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
font-size: 14px;
|
|
55
|
+
a {
|
|
56
|
+
text-decoration: none;
|
|
57
|
+
color: inherit;
|
|
58
|
+
}
|
|
59
|
+
> div:first-of-type {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
}
|
|
63
|
+
.footer-brand-logo {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
margin-right: 16px;
|
|
67
|
+
line-height: 1;
|
|
68
|
+
img,
|
|
69
|
+
svg {
|
|
70
|
+
width: auto;
|
|
71
|
+
height: 44px;
|
|
72
|
+
max-height: 44px;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
.footer-brand-name {
|
|
76
|
+
font-size: 16px;
|
|
77
|
+
font-weight: bold;
|
|
78
|
+
}
|
|
79
|
+
.footer-brand-desc {
|
|
80
|
+
margin-top: 16px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
${props => props.theme.breakpoints.down("sm")} {
|
|
84
|
+
width: auto;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
${props => props.theme.breakpoints.down("md")} {
|
|
88
|
+
.footer-brand-logo {
|
|
89
|
+
img,
|
|
90
|
+
svg {
|
|
91
|
+
height: 32px;
|
|
92
|
+
max-height: 32px;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function Copyright({ owner, year, ...rest }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
owner: any;
|
|
4
|
+
year: any;
|
|
5
|
+
}): import("react").JSX.Element;
|
|
6
|
+
declare namespace Copyright {
|
|
7
|
+
namespace propTypes {
|
|
8
|
+
let owner: any;
|
|
9
|
+
let year: any;
|
|
10
|
+
}
|
|
11
|
+
namespace defaultProps {
|
|
12
|
+
let owner_1: string;
|
|
13
|
+
export { owner_1 as owner };
|
|
14
|
+
let year_1: string;
|
|
15
|
+
export { year_1 as year };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export default Copyright;
|
package/lib/Footer/copyright.js
CHANGED
|
@@ -3,37 +3,32 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
module.exports = Copyright;
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
8
|
var _Theme = require("@arcblock/ux/lib/Theme");
|
|
8
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
var _templateObject;
|
|
11
|
-
const _excluded = ["owner", "year"];
|
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
function Copyright(_ref) {
|
|
22
|
-
let {
|
|
23
|
-
owner,
|
|
24
|
-
year
|
|
25
|
-
} = _ref,
|
|
26
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
27
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, _objectSpread(_objectSpread({}, rest), {}, {
|
|
11
|
+
function Copyright({
|
|
12
|
+
owner,
|
|
13
|
+
year,
|
|
14
|
+
...rest
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */(0, _jsxRuntime.jsxs)(Root, {
|
|
17
|
+
...rest,
|
|
28
18
|
children: ["Copyright \xA9 ", year, " ", owner]
|
|
29
|
-
})
|
|
19
|
+
});
|
|
30
20
|
}
|
|
31
21
|
Copyright.propTypes = {
|
|
32
22
|
owner: _propTypes.default.string,
|
|
33
23
|
year: _propTypes.default.string
|
|
34
24
|
};
|
|
35
25
|
Copyright.defaultProps = {
|
|
36
|
-
owner:
|
|
37
|
-
year:
|
|
26
|
+
owner: "ArcBlock",
|
|
27
|
+
year: `${/* @__PURE__ */new Date().getFullYear()}`
|
|
38
28
|
};
|
|
39
|
-
const Root = (0, _Theme.styled)(
|
|
29
|
+
const Root = (0, _Theme.styled)("p")`
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
margin: 0;
|
|
33
|
+
font-size: 13px;
|
|
34
|
+
`;
|
package/lib/Footer/index.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
8
|
var _react = require("react");
|
|
8
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
10
|
var _Theme = require("@arcblock/ux/lib/Theme");
|
|
@@ -15,28 +16,12 @@ var _internalFooter = _interopRequireDefault(require("./internal-footer"));
|
|
|
15
16
|
var _utils = require("../utils");
|
|
16
17
|
var _blocklets = require("../blocklets");
|
|
17
18
|
var _types = require("../types");
|
|
18
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
var _templateObject;
|
|
20
|
-
const _excluded = ["meta", "theme"];
|
|
21
|
-
/**
|
|
22
|
-
* 专门用于 (composable) blocklet 的 Footer 组件, 基于 blocklet meta 中的数据渲染
|
|
23
|
-
*/
|
|
24
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
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); }
|
|
31
|
-
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; }
|
|
32
|
-
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; }
|
|
33
|
-
function Footer(_ref) {
|
|
34
|
-
var _formattedBlocklet$na, _formattedBlocklet$na2, _formattedBlocklet$na3, _theme$background;
|
|
35
|
-
let {
|
|
36
|
-
meta,
|
|
37
|
-
theme: themeOverrides
|
|
38
|
-
} = _ref,
|
|
39
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
20
|
+
function Footer({
|
|
21
|
+
meta,
|
|
22
|
+
theme: themeOverrides,
|
|
23
|
+
...rest
|
|
24
|
+
}) {
|
|
40
25
|
const {
|
|
41
26
|
locale
|
|
42
27
|
} = (0, _context.useLocaleContext)() || {};
|
|
@@ -45,7 +30,7 @@ function Footer(_ref) {
|
|
|
45
30
|
try {
|
|
46
31
|
return (0, _blocklets.formatBlockletInfo)(blocklet);
|
|
47
32
|
} catch (e) {
|
|
48
|
-
console.error(
|
|
33
|
+
console.error("Failed to format blocklet info", e, blocklet);
|
|
49
34
|
return blocklet;
|
|
50
35
|
}
|
|
51
36
|
}, [meta]);
|
|
@@ -62,9 +47,9 @@ function Footer(_ref) {
|
|
|
62
47
|
copyright
|
|
63
48
|
} = formattedBlocklet;
|
|
64
49
|
const localized = {
|
|
65
|
-
footerNav: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet
|
|
66
|
-
socialMedia: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet
|
|
67
|
-
links: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet
|
|
50
|
+
footerNav: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet?.navigation?.footer, locale) || [],
|
|
51
|
+
socialMedia: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet?.navigation?.social, locale) || [],
|
|
52
|
+
links: (0, _blocklets.getLocalizedNavigation)(formattedBlocklet?.navigation?.bottom, locale) || []
|
|
68
53
|
};
|
|
69
54
|
const props = {
|
|
70
55
|
brand: {
|
|
@@ -72,21 +57,25 @@ function Footer(_ref) {
|
|
|
72
57
|
description: appDescription || description,
|
|
73
58
|
logo: appLogoRect || appLogo
|
|
74
59
|
},
|
|
75
|
-
navigation: (0, _utils.mapRecursive)(localized.footerNav, item =>
|
|
60
|
+
navigation: (0, _utils.mapRecursive)(localized.footerNav, item => ({
|
|
61
|
+
...item,
|
|
76
62
|
label: item.title,
|
|
77
63
|
link: item.link
|
|
78
|
-
}),
|
|
64
|
+
}), "items"),
|
|
79
65
|
copyright,
|
|
80
66
|
socialMedia: localized.socialMedia,
|
|
81
|
-
links: localized.links.map(item =>
|
|
67
|
+
links: localized.links.map(item => ({
|
|
68
|
+
...item,
|
|
82
69
|
label: item.title
|
|
83
70
|
}))
|
|
84
71
|
};
|
|
85
|
-
return
|
|
72
|
+
return /* @__PURE__ */(0, _jsxRuntime.jsx)(_overridableThemeProvider.default, {
|
|
86
73
|
theme: themeOverrides,
|
|
87
|
-
children:
|
|
88
|
-
|
|
89
|
-
|
|
74
|
+
children: /* @__PURE__ */(0, _jsxRuntime.jsx)(StyledInternalFooter, {
|
|
75
|
+
...props,
|
|
76
|
+
...rest,
|
|
77
|
+
$bgcolor: theme?.background?.footer
|
|
78
|
+
})
|
|
90
79
|
});
|
|
91
80
|
}
|
|
92
81
|
Footer.propTypes = {
|
|
@@ -98,13 +87,15 @@ Footer.defaultProps = {
|
|
|
98
87
|
meta: {},
|
|
99
88
|
theme: null
|
|
100
89
|
};
|
|
101
|
-
const StyledInternalFooter = (0, _Theme.styled)(_internalFooter.default)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
})
|
|
107
|
-
|
|
90
|
+
const StyledInternalFooter = (0, _Theme.styled)(_internalFooter.default)`
|
|
91
|
+
border-top: 1px solid #eee;
|
|
92
|
+
color: ${props => props.theme.palette.grey[600]};
|
|
93
|
+
${({
|
|
94
|
+
$bgcolor
|
|
95
|
+
}) => $bgcolor && `background-color: ${$bgcolor};`}
|
|
96
|
+
font-family: Inter, Avenir, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif,
|
|
97
|
+
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
98
|
+
`;
|
|
99
|
+
module.exports = (0, _reactErrorBoundary.withErrorBoundary)(Footer, {
|
|
108
100
|
FallbackComponent: _ErrorBoundary.ErrorFallback
|
|
109
|
-
});
|
|
110
|
-
exports.default = _default;
|
|
101
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export default InternalFooter;
|
|
2
|
+
/**
|
|
3
|
+
* 通用的内部 footer 组件, 定义并渲染常见的几种 footer 元素: brand/navigation/social medial 等
|
|
4
|
+
*/
|
|
5
|
+
declare function InternalFooter(props: any): import("react").JSX.Element;
|
|
6
|
+
declare namespace InternalFooter {
|
|
7
|
+
namespace propTypes {
|
|
8
|
+
let brand: any;
|
|
9
|
+
let navigation: any;
|
|
10
|
+
let socialMedia: any;
|
|
11
|
+
let copyright: any;
|
|
12
|
+
let links: any;
|
|
13
|
+
let layout: any;
|
|
14
|
+
}
|
|
15
|
+
namespace defaultProps {
|
|
16
|
+
let brand_1: null;
|
|
17
|
+
export { brand_1 as brand };
|
|
18
|
+
let navigation_1: null;
|
|
19
|
+
export { navigation_1 as navigation };
|
|
20
|
+
let copyright_1: null;
|
|
21
|
+
export { copyright_1 as copyright };
|
|
22
|
+
let socialMedia_1: null;
|
|
23
|
+
export { socialMedia_1 as socialMedia };
|
|
24
|
+
let links_1: null;
|
|
25
|
+
export { links_1 as links };
|
|
26
|
+
let layout_1: string;
|
|
27
|
+
export { layout_1 as layout };
|
|
28
|
+
}
|
|
29
|
+
}
|