Merge branch 'next' into develop

This commit is contained in:
nocobase[bot] 2025-03-25 14:58:38 +00:00
commit 2a03343d5d

View File

@ -52,6 +52,7 @@ import { KeepAlive } from './KeepAlive';
import { NocoBaseDesktopRoute, NocoBaseDesktopRouteType } from './convertRoutesToSchema'; import { NocoBaseDesktopRoute, NocoBaseDesktopRouteType } from './convertRoutesToSchema';
import { MenuSchemaToolbar, ResetThemeTokenAndKeepAlgorithm } from './menuItemSettings'; import { MenuSchemaToolbar, ResetThemeTokenAndKeepAlgorithm } from './menuItemSettings';
import { userCenterSettings } from './userCenterSettings'; import { userCenterSettings } from './userCenterSettings';
import { createGlobalStyle, createStyles } from 'antd-style';
export { KeepAlive, NocoBaseDesktopRouteType }; export { KeepAlive, NocoBaseDesktopRouteType };
@ -268,7 +269,7 @@ const GroupItem: FC<{ item: any }> = (props) => {
}; };
const WithTooltip: FC<{ title: string; hidden: boolean }> = (props) => { const WithTooltip: FC<{ title: string; hidden: boolean }> = (props) => {
const { inHeader } = useContext(headerContext); const { inHeader } = useContext(HeaderContext);
return ( return (
<RouteContext.Consumer> <RouteContext.Consumer>
@ -406,7 +407,7 @@ const contentStyle = {
paddingInline: 0, paddingInline: 0,
}; };
const headerContext = React.createContext<{ inHeader: boolean }>({ inHeader: false }); const HeaderContext = React.createContext<{ inHeader: boolean }>({ inHeader: false });
const popoverStyle = css` const popoverStyle = css`
.ant-popover-inner { .ant-popover-inner {
@ -495,9 +496,38 @@ const collapsedButtonRender = (collapsed, dom) => {
return <CollapsedButton collapsed={collapsed}>{dom}</CollapsedButton>; return <CollapsedButton collapsed={collapsed}>{dom}</CollapsedButton>;
}; };
/**
* antd bug antd
* - issue: https://github.com/ant-design/pro-components/issues/8593
* - issue: https://github.com/ant-design/pro-components/issues/8522
* - issue: https://github.com/ant-design/pro-components/issues/8432
*/
const useHeaderStyle = createStyles(({ token }: any) => {
return {
headerPopup: {
'&.ant-menu-submenu-popup>.ant-menu': {
backgroundColor: `${token.colorBgHeader}`,
},
},
headerMenuActive: {
'& .ant-menu-submenu-selected>.ant-menu-submenu-title': {
color: token.colorTextHeaderMenuActive,
},
},
};
});
const headerContextValue = { inHeader: true }; const headerContextValue = { inHeader: true };
const HeaderWrapper: FC = (props) => {
const { styles } = useHeaderStyle();
return (
<span className={styles.headerMenuActive}>
<HeaderContext.Provider value={headerContextValue}>{props.children}</HeaderContext.Provider>
</span>
);
};
const headerRender = (props: HeaderViewProps, defaultDom: React.ReactNode) => { const headerRender = (props: HeaderViewProps, defaultDom: React.ReactNode) => {
return <headerContext.Provider value={headerContextValue}>{defaultDom}</headerContext.Provider>; return <HeaderWrapper>{defaultDom}</HeaderWrapper>;
}; };
const IsMobileLayoutContext = React.createContext<{ const IsMobileLayoutContext = React.createContext<{
@ -531,6 +561,7 @@ export const InternalAdminLayout = () => {
const doNotChangeCollapsedRef = useRef(false); const doNotChangeCollapsedRef = useRef(false);
const { t } = useMenuTranslation(); const { t } = useMenuTranslation();
const designable = isMobileLayout ? false : _designable; const designable = isMobileLayout ? false : _designable;
const { styles } = useHeaderStyle();
const route = useMemo(() => { const route = useMemo(() => {
return { return {
@ -544,7 +575,7 @@ export const InternalAdminLayout = () => {
colorBgHeader: token.colorBgHeader, colorBgHeader: token.colorBgHeader,
colorTextMenu: token.colorTextHeaderMenu, colorTextMenu: token.colorTextHeaderMenu,
colorTextMenuSelected: token.colorTextHeaderMenuActive, colorTextMenuSelected: token.colorTextHeaderMenuActive,
colorTextMenuActive: token.colorTextHeaderMenuActive, colorTextMenuActive: token.colorTextHeaderMenuHover,
colorBgMenuItemHover: token.colorBgHeaderMenuHover, colorBgMenuItemHover: token.colorBgHeaderMenuHover,
colorBgMenuItemSelected: token.colorBgHeaderMenuActive, colorBgMenuItemSelected: token.colorBgHeaderMenuActive,
heightLayoutHeader: 46, heightLayoutHeader: 46,
@ -591,6 +622,12 @@ export const InternalAdminLayout = () => {
}); });
}, []); }, []);
const menuProps = useMemo(() => {
return {
overflowedIndicatorPopupClassName: styles.headerPopup,
};
}, [styles.headerPopup]);
return ( return (
<DndContext onDragEnd={onDragEnd}> <DndContext onDragEnd={onDragEnd}>
<ProLayout <ProLayout
@ -612,6 +649,7 @@ export const InternalAdminLayout = () => {
onCollapse={onCollapse} onCollapse={onCollapse}
collapsed={collapsed} collapsed={collapsed}
onPageChange={onPageChange} onPageChange={onPageChange}
menuProps={menuProps}
> >
<RouteContext.Consumer> <RouteContext.Consumer>
{(value: RouteContextType) => { {(value: RouteContextType) => {