style: body and side menu scrollbar style
This commit is contained in:
@@ -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?.();
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
@@ -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 (
|
||||||
|
|||||||
@@ -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'
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user