@blocklet/ui-react 2.1.3 → 2.1.4

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.
@@ -45,8 +45,15 @@ function Footer(_ref) {
45
45
  appLogo,
46
46
  appName,
47
47
  theme: blockletTheme,
48
- navigation
49
- } = blocklet;
48
+ navigation = []
49
+ } = blocklet; // TODO: 支持分组的 links (#590)
50
+ // 暂时只支持扁平的 links, 没有 link 属性的 navigation item 会被忽略
51
+
52
+ const navMenuItems = navigation.filter(item => item.link).map(item => ({
53
+ label: /*#__PURE__*/_react.default.createElement("a", {
54
+ href: item.link
55
+ }, item.title)
56
+ }));
50
57
  return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
51
58
  $bgcolor: blockletTheme === null || blockletTheme === void 0 ? void 0 : blockletTheme.background,
52
59
  $theme: theme
@@ -59,12 +66,8 @@ function Footer(_ref) {
59
66
  alt: "logo"
60
67
  }), /*#__PURE__*/_react.default.createElement("span", null, appName)), /*#__PURE__*/_react.default.createElement("div", {
61
68
  className: "footer_nav"
62
- }, !!(navigation !== null && navigation !== void 0 && navigation.length) && /*#__PURE__*/_react.default.createElement(_NavMenu.default, {
63
- items: navigation.filter(item => item.link).map(item => ({
64
- label: /*#__PURE__*/_react.default.createElement("a", {
65
- href: item.link
66
- }, item.title)
67
- }))
69
+ }, !!(navMenuItems !== null && navMenuItems !== void 0 && navMenuItems.length) && /*#__PURE__*/_react.default.createElement(_NavMenu.default, {
70
+ items: navMenuItems
68
71
  }))), /*#__PURE__*/_react.default.createElement("div", {
69
72
  className: "footer_line"
70
73
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -11,6 +11,10 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
 
14
+ var _styles = require("@mui/material/styles");
15
+
16
+ var _Theme = require("@arcblock/ux/lib/Theme");
17
+
14
18
  var _Header = require("@arcblock/ux/lib/Header");
15
19
 
16
20
  var _NavMenu = _interopRequireDefault(require("@arcblock/ux/lib/NavMenu"));
@@ -35,6 +39,8 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
35
39
 
36
40
  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; }
37
41
 
42
+ const muiTheme = (0, _Theme.create)();
43
+
38
44
  const isLinkActive = link => {
39
45
  if (window.location.pathname === '/') {
40
46
  return link === '/';
@@ -46,6 +52,8 @@ const isLinkActive = link => {
46
52
 
47
53
  const parseNavigation = navigation => {
48
54
  const parseItem = item => {
55
+ var _item$link, _item$link2;
56
+
49
57
  const icon = item.icon ? /*#__PURE__*/_react.default.createElement("span", {
50
58
  className: "iconify",
51
59
  "data-icon": item.icon
@@ -59,11 +67,9 @@ const parseNavigation = navigation => {
59
67
  };
60
68
  }
61
69
 
62
- let props = {}; // 临时处理: https://github.com/ArcBlock/blocklet-server/issues/4717
63
-
64
- item.link = item.link.replace('/https:/', 'https://');
70
+ let props = {};
65
71
 
66
- if (item.link.startsWith('http')) {
72
+ if ((_item$link = item.link) !== null && _item$link !== void 0 && _item$link.startsWith('http://') || (_item$link2 = item.link) !== null && _item$link2 !== void 0 && _item$link2.startsWith('https://')) {
67
73
  props = {
68
74
  target: '_blank',
69
75
  rel: 'noreferrer'
@@ -148,7 +154,9 @@ function Header(_ref) {
148
154
  return addonsFragment;
149
155
  };
150
156
 
151
- return /*#__PURE__*/_react.default.createElement(StyledUxHeader, Object.assign({
157
+ return /*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
158
+ theme: muiTheme
159
+ }, /*#__PURE__*/_react.default.createElement(StyledUxHeader, Object.assign({
152
160
  logo: /*#__PURE__*/_react.default.createElement("a", {
153
161
  href: "/"
154
162
  }, /*#__PURE__*/_react.default.createElement("img", {
@@ -171,7 +179,7 @@ function Header(_ref) {
171
179
  className: "header-nav",
172
180
  bgColor: "transparent"
173
181
  });
174
- });
182
+ }));
175
183
  }
176
184
 
177
185
  Header.propTypes = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/ui-react",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "Some useful front-end web components that can be used in Blocklets.",
5
5
  "keywords": [
6
6
  "react",
@@ -34,8 +34,8 @@
34
34
  "url": "https://github.com/ArcBlock/ux/issues"
35
35
  },
36
36
  "dependencies": {
37
- "@arcblock/did-connect": "^2.1.3",
38
- "@arcblock/ux": "^2.1.3",
37
+ "@arcblock/did-connect": "^2.1.4",
38
+ "@arcblock/ux": "^2.1.4",
39
39
  "@iconify/iconify": "^2.2.1",
40
40
  "@mui/material": "^5.6.4",
41
41
  "core-js": "^3.6.4",
@@ -56,5 +56,5 @@
56
56
  "eslint-plugin-react-hooks": "^4.2.0",
57
57
  "jest": "^24.1.0"
58
58
  },
59
- "gitHead": "b0ec8ebbd525abe7035465e2c75dc042e6637ba6"
59
+ "gitHead": "5a92264deb34d879813be444bc26fa3f0cef0672"
60
60
  }
@@ -16,7 +16,15 @@ export default function Footer({ meta, ...rest }) {
16
16
  return null;
17
17
  }
18
18
 
19
- const { appLogo, appName, theme: blockletTheme, navigation } = blocklet;
19
+ const { appLogo, appName, theme: blockletTheme, navigation = [] } = blocklet;
20
+ // TODO: 支持分组的 links (#590)
21
+ // 暂时只支持扁平的 links, 没有 link 属性的 navigation item 会被忽略
22
+ const navMenuItems = navigation
23
+ .filter(item => item.link)
24
+ .map(item => ({
25
+ label: <a href={item.link}>{item.title}</a>,
26
+ }));
27
+
20
28
  return (
21
29
  <Root {...rest} $bgcolor={blockletTheme?.background} $theme={theme}>
22
30
  <Container>
@@ -26,15 +34,7 @@ export default function Footer({ meta, ...rest }) {
26
34
  <span>{appName}</span>
27
35
  </div>
28
36
  <div className="footer_nav">
29
- {!!navigation?.length && (
30
- <NavMenu
31
- items={navigation
32
- .filter(item => item.link)
33
- .map(item => ({
34
- label: <a href={item.link}>{item.title}</a>,
35
- }))}
36
- />
37
- )}
37
+ {!!navMenuItems?.length && <NavMenu items={navMenuItems} />}
38
38
  </div>
39
39
  </div>
40
40
  <div className="footer_line">
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
+ import { ThemeProvider } from '@mui/material/styles';
5
+ import { create } from '@arcblock/ux/lib/Theme';
4
6
  import { ResponsiveHeader } from '@arcblock/ux/lib/Header';
5
7
  import NavMenu from '@arcblock/ux/lib/NavMenu';
6
8
  import { SessionContext } from '@arcblock/did-connect/lib/Session';
@@ -11,6 +13,8 @@ import '@iconify/iconify';
11
13
 
12
14
  import { blockletMetaProps, sessionManagerProps } from '../types';
13
15
 
16
+ const muiTheme = create();
17
+
14
18
  const isLinkActive = link => {
15
19
  if (window.location.pathname === '/') {
16
20
  return link === '/';
@@ -30,9 +34,7 @@ const parseNavigation = navigation => {
30
34
  };
31
35
  }
32
36
  let props = {};
33
- // 临时处理: https://github.com/ArcBlock/blocklet-server/issues/4717
34
- item.link = item.link.replace('/https:/', 'https://');
35
- if (item.link.startsWith('http')) {
37
+ if (item.link?.startsWith('http://') || item.link?.startsWith('https://')) {
36
38
  props = {
37
39
  target: '_blank',
38
40
  rel: 'noreferrer',
@@ -97,29 +99,31 @@ export default function Header({ meta, addons, sessionManagerProps, ...rest }) {
97
99
  };
98
100
 
99
101
  return (
100
- <StyledUxHeader
101
- logo={
102
- <a href="/">
103
- <img src={appLogo} alt="logo" />
104
- </a>
105
- }
106
- brand={appName}
107
- addons={renderAddons()}
108
- {...rest}
109
- $bgcolor={theme?.background}>
110
- {/* blocklet.yml 没有配置 navigation 时, 则为 children 传入 null, 此时 ResponsiveHeader 会渲染普通的不带 menu 的 Header */}
111
- {!navItems?.length
112
- ? null
113
- : ({ isMobile, closeMenu }) => (
114
- <NavMenu
115
- mode={isMobile ? 'inline' : 'horizontal'}
116
- items={navItems}
117
- onSelected={closeMenu}
118
- className="header-nav"
119
- bgColor="transparent"
120
- />
121
- )}
122
- </StyledUxHeader>
102
+ <ThemeProvider theme={muiTheme}>
103
+ <StyledUxHeader
104
+ logo={
105
+ <a href="/">
106
+ <img src={appLogo} alt="logo" />
107
+ </a>
108
+ }
109
+ brand={appName}
110
+ addons={renderAddons()}
111
+ {...rest}
112
+ $bgcolor={theme?.background}>
113
+ {/* blocklet.yml 没有配置 navigation 时, 则为 children 传入 null, 此时 ResponsiveHeader 会渲染普通的不带 menu 的 Header */}
114
+ {!navItems?.length
115
+ ? null
116
+ : ({ isMobile, closeMenu }) => (
117
+ <NavMenu
118
+ mode={isMobile ? 'inline' : 'horizontal'}
119
+ items={navItems}
120
+ onSelected={closeMenu}
121
+ className="header-nav"
122
+ bgColor="transparent"
123
+ />
124
+ )}
125
+ </StyledUxHeader>
126
+ </ThemeProvider>
123
127
  );
124
128
  }
125
129