style: body and side menu scrollbar style

This commit is contained in:
jialin
2024-10-21 11:36:54 +08:00
parent 33a21f2aaa
commit 57386eeb55
5 changed files with 66 additions and 14 deletions
+5 -4
View File
@@ -3,12 +3,13 @@ import { IApi } from '@umijs/max';
export default (api: IApi) => { export default (api: IApi) => {
api.modifyHTML(($) => { api.modifyHTML(($) => {
const info = JSON.parse(process.env.VERSION || '{}'); const info = JSON.parse(process.env.VERSION || '{}');
const env = process.env.NODE_ENV; const env = info.version ? 'production' : 'development';
$('html').attr('data-env', env);
$('html').attr( $('html').attr(
'data-version', 'data-version',
env === 'production' env === 'production' ? info.version || info.commitId : `${info.commitId}`
? info.version || info.commitId
: `dev-${info.commitId}`
); );
if (env === 'production') { if (env === 'production') {
$('script[src^="/js/umi"]').first?.().remove?.(); $('script[src^="/js/umi"]').first?.().remove?.();
+15
View File
@@ -34,6 +34,21 @@
justify-content: flex-start; justify-content: flex-start;
font-size: var(--font-size-middle); font-size: var(--font-size-middle);
} }
.dev.val {
display: flex;
flex-direction: column;
.item {
display: flex;
}
.tl {
display: flex;
justify-content: flex-start;
width: 60px;
}
}
} }
.upgrade { .upgrade {
+30 -8
View File
@@ -10,6 +10,11 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
const latestVersion = getAtomStorage(UpdateCheckAtom).latest_version; const latestVersion = getAtomStorage(UpdateCheckAtom).latest_version;
const currentVersion = getAtomStorage(GPUStackVersionAtom)?.version; const currentVersion = getAtomStorage(GPUStackVersionAtom)?.version;
const isProd =
document.documentElement.getAttribute('data-env') === 'production';
const uiVersion = document.documentElement.getAttribute('data-version');
return ( return (
<div className="version-box"> <div className="version-box">
<div className="img"> <div className="img">
@@ -17,14 +22,31 @@ const VersionInfo: React.FC<{ intl: any }> = ({ intl }) => {
</div> </div>
<div className="ver"> <div className="ver">
<span className="label"> {isProd && (
{' '} <span className="label">
{intl.formatMessage({ id: 'common.footer.version' })} {intl.formatMessage({ id: 'common.footer.version' })}
</span> </span>
<span className="val"> )}
{getAtomStorage(GPUStackVersionAtom)?.version || {isProd ? (
getAtomStorage(GPUStackVersionAtom)?.git_commit} <span className="val">
</span> {getAtomStorage(GPUStackVersionAtom)?.version ||
getAtomStorage(GPUStackVersionAtom)?.git_commit}
</span>
) : (
<span className="val dev">
<span className="item">
<span className="tl">
{' '}
{intl.formatMessage({ id: 'common.footer.version.server' })}
</span>
{getAtomStorage(GPUStackVersionAtom)?.git_commit}
</span>
<span className="item">
<span className="tl">UI</span>
{uiVersion}
</span>
</span>
)}
</div> </div>
{getAtomStorage(userAtom)?.is_admin && ( {getAtomStorage(userAtom)?.is_admin && (
<div className="upgrade"> <div className="upgrade">
+15 -1
View File
@@ -5,6 +5,7 @@ import ShortCuts, {
modalConfig as ShortCutsConfig modalConfig as ShortCutsConfig
} from '@/components/short-cuts'; } from '@/components/short-cuts';
import VersionInfo, { modalConfig } from '@/components/version-info'; import VersionInfo, { modalConfig } from '@/components/version-info';
import useOverlayScroller from '@/hooks/use-overlay-scroller';
import { logout } from '@/pages/login/apis'; import { logout } from '@/pages/login/apis';
import { useAccessMarkedRoutes } from '@@/plugin-access'; import { useAccessMarkedRoutes } from '@@/plugin-access';
import { useModel } from '@@/plugin-model'; import { useModel } from '@@/plugin-model';
@@ -23,12 +24,13 @@ import {
} from '@umijs/max'; } from '@umijs/max';
import { Button, Modal } from 'antd'; import { Button, Modal } from 'antd';
import { useAtom } from 'jotai'; import { useAtom } from 'jotai';
import { useCallback, useMemo, useState } from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react';
import Exception from './Exception'; import Exception from './Exception';
import './Layout.css'; import './Layout.css';
import { LogoIcon, SLogoIcon } from './Logo'; import { LogoIcon, SLogoIcon } from './Logo';
import { getRightRenderContent } from './rightRender'; import { getRightRenderContent } from './rightRender';
import { patchRoutes } from './runtime'; import { patchRoutes } from './runtime';
const loginPath = '/login'; const loginPath = '/login';
type InitialStateType = { type InitialStateType = {
@@ -87,6 +89,8 @@ const mapRoutes = (routes: IRoute[], role: string) => {
}; };
export default (props: any) => { export default (props: any) => {
const { initialize } = useOverlayScroller();
const { initialize: initializeMenu } = useOverlayScroller();
const [userInfo] = useAtom(userAtom); const [userInfo] = useAtom(userAtom);
const [version] = useAtom(GPUStackVersionAtom); const [version] = useAtom(GPUStackVersionAtom);
const [updateCheck] = useAtom(UpdateCheckAtom); const [updateCheck] = useAtom(UpdateCheckAtom);
@@ -180,6 +184,16 @@ export default (props: any) => {
); );
}, [updateCheck, version, initialState]); }, [updateCheck, version, initialState]);
useEffect(() => {
initialize(document.body);
}, [initialize]);
useEffect(() => {
initializeMenu(
document.querySelector('.ant-menu.ant-menu-root')?.parentElement
);
}, [initializeMenu]);
const renderMenuHeader = useCallback( const renderMenuHeader = useCallback(
(logo, title) => { (logo, title) => {
return ( return (
+1 -1
View File
@@ -27,5 +27,5 @@ export default {
'users.password.confirm.error': 'The two passwords entered do not match.', 'users.password.confirm.error': 'The two passwords entered do not match.',
'users.login.title': 'Log in to {name}', 'users.login.title': 'Log in to {name}',
'users.version.islatest': '{version} is the latest version', 'users.version.islatest': '{version} is the latest version',
'users.version.update': 'Version {version} is available for update' 'users.version.update': 'Version {version} is available'
}; };