@arcblock/ux 2.13.55 → 2.13.56

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.
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
2
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, useRef } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { GlobalStyles } from '@mui/material';
5
5
  import { ThemeProvider as MuiThemeProvider, useTheme } from '@mui/material/styles';
@@ -125,6 +125,7 @@ function ColorSchemeProvider({
125
125
  const [mode, setMode] = useState(() => resolveMode(prefer));
126
126
  const parentTheme = useTheme();
127
127
  const location = useLocationState();
128
+ const metaThemeColorRef = useRef(null);
128
129
  const _themeInput = useMemo(() => {
129
130
  let result = {};
130
131
  const createBaseTheme = lazyCreateDefaultTheme(mode);
@@ -192,6 +193,23 @@ function ColorSchemeProvider({
192
193
  sessionStorage.setItem(BLOCKLET_THEME_PREFER_KEY, urlTheme);
193
194
  }
194
195
  }, [location.search]);
196
+
197
+ // 动态设置 <meta name="theme-color" content="..."> 标签,用于控制移动端浏览器状态栏颜色
198
+ useEffect(() => {
199
+ if (!metaThemeColorRef.current) {
200
+ metaThemeColorRef.current = document.querySelector('meta[name="theme-color"]');
201
+ }
202
+ const bgcolor = theme.palette.background.default;
203
+ if (metaThemeColorRef.current) {
204
+ metaThemeColorRef.current.setAttribute('content', bgcolor);
205
+ } else {
206
+ const meta = document.createElement('meta');
207
+ meta.name = 'theme-color';
208
+ meta.content = bgcolor;
209
+ document.head.appendChild(meta);
210
+ metaThemeColorRef.current = meta;
211
+ }
212
+ }, [theme.palette.background.default]);
195
213
  return /*#__PURE__*/_jsx(ColorSchemeContext.Provider, {
196
214
  value: colorSchemeValue,
197
215
  children: /*#__PURE__*/_jsx(BaseThemeProvider, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.13.55",
3
+ "version": "2.13.56",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -71,14 +71,14 @@
71
71
  "react": ">=18.2.0",
72
72
  "react-router-dom": ">=6.22.3"
73
73
  },
74
- "gitHead": "fd8de005ce497660cbf1ea7378cf0d725b45fe87",
74
+ "gitHead": "ebf7d863313f1ce95571b81df01182756395197e",
75
75
  "dependencies": {
76
76
  "@arcblock/did-motif": "^1.1.13",
77
- "@arcblock/icons": "^2.13.55",
78
- "@arcblock/nft-display": "^2.13.55",
79
- "@arcblock/react-hooks": "^2.13.55",
77
+ "@arcblock/icons": "^2.13.56",
78
+ "@arcblock/nft-display": "^2.13.56",
79
+ "@arcblock/react-hooks": "^2.13.56",
80
80
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
81
- "@blocklet/theme": "^2.13.55",
81
+ "@blocklet/theme": "^2.13.56",
82
82
  "@fontsource/roboto": "~5.1.1",
83
83
  "@fontsource/ubuntu-mono": "^5.0.18",
84
84
  "@iconify-icons/logos": "^1.2.36",
@@ -1,4 +1,4 @@
1
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
1
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, useRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { GlobalStyles, PaletteMode } from '@mui/material';
4
4
  import { ThemeProvider as MuiThemeProvider, Theme, ThemeOptions, useTheme } from '@mui/material/styles';
@@ -161,6 +161,7 @@ function ColorSchemeProvider({
161
161
  const [mode, setMode] = useState<PaletteMode>(() => resolveMode(prefer));
162
162
  const parentTheme = useTheme();
163
163
  const location = useLocationState();
164
+ const metaThemeColorRef = useRef<HTMLMetaElement | null>(null);
164
165
 
165
166
  const _themeInput = useMemo(() => {
166
167
  let result: UxThemeOptions = {};
@@ -231,6 +232,25 @@ function ColorSchemeProvider({
231
232
  }
232
233
  }, [location.search]);
233
234
 
235
+ // 动态设置 <meta name="theme-color" content="..."> 标签,用于控制移动端浏览器状态栏颜色
236
+ useEffect(() => {
237
+ if (!metaThemeColorRef.current) {
238
+ metaThemeColorRef.current = document.querySelector('meta[name="theme-color"]');
239
+ }
240
+
241
+ const bgcolor = theme.palette.background.default;
242
+
243
+ if (metaThemeColorRef.current) {
244
+ metaThemeColorRef.current.setAttribute('content', bgcolor);
245
+ } else {
246
+ const meta = document.createElement('meta');
247
+ meta.name = 'theme-color';
248
+ meta.content = bgcolor;
249
+ document.head.appendChild(meta);
250
+ metaThemeColorRef.current = meta;
251
+ }
252
+ }, [theme.palette.background.default]);
253
+
234
254
  return (
235
255
  <ColorSchemeContext.Provider value={colorSchemeValue}>
236
256
  <BaseThemeProvider theme={theme} {...rest}>