Skip to content

Commit 238e327

Browse files
style: 侧栏垂直菜单项默认字重为常规 (#9589)
* style(ProLayout): 侧栏收起时菜单标题区不再水平居中过渡 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 侧栏收起宽度动画结束后再居中菜单图标 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix: 修复 father 站点构建的 TypeScript 声明问题 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 收起侧栏菜单图标不再居中 移除 collapse settled 延迟居中逻辑;收起态标题使用 flex-start 对齐 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 侧栏菜单项字号固定为 14px 移除 `--pro-layout-nav-item-font-size` 的 `calc(...+ 1px)`,避免 15px Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 子菜单标题增加展开指示图标 内联与侧栏弹出使用右箭头旋转,顶栏弹出使用下箭头旋转 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 收起菜单去掉多余包裹并收紧标题宽度 - 收起且标题为纯文本时不再使用 antd Tooltip 外包层,改为原生 title - 菜单项 flex 仅作用于 item-title / Link / 标题包裹层,避免整行比图标大 - 收起态 item-title 使用 fit-content 与 iconBox 级 minWidth;nav--collapsed 不再强制 width 100% - 移除 layout index 快照测试并删除对应 snap 文件 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 内联子菜单展开收起增加高度过渡动画 使用 grid-template-rows 0fr/1fr 与 overflow 内层,收起时 inert 防焦点 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 垂直收起菜单项标题高度改为 auto `item-title-collapsed` 不再固定为 itemHeight,便于图标+小字等场景 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 顶栏 horizontal 子菜单不展示展开箭头 与常见顶栏菜单一致,侧栏内联与收起弹出仍保留指示器 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * refactor(ProLayout): 主导航仅保留 vertical 与 horizontal - MenuMode 移除 inline 等;侧栏与底部链接菜单统一 mode=vertical - 类名 base-menu-inline 改为 base-menu-sider;子菜单动画 wrap 重命名 - 收起时分组标题不渲染;样式补充 menuItemRender 的 role=button 拉伸 - 更新 layout 相关测试与快照 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 顶栏弹出菜单支持多级展开与面板内点击 - 弹出层内子菜单用 nestedPopupOpen 切换,不再覆盖根 popupOpenKey - 点击 document 关闭时忽略 portal 面板内目标 - 增加 layout=top 二三级菜单交互用例 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 修复侧栏双 vertical 菜单样式注册 path 冲突 useStyle 注册名加入 prefixCls,避免主菜单与 links 互相覆盖 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 顶栏菜单 hover 打开子菜单并强化 hover 样式 一级子菜单 pointer 进入打开、离开延迟关闭;浮层 enter 取消关闭 顶栏 item/submenu-title 增加圆角与过渡 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 顶栏与收起侧栏子菜单改用 Popover - 根级子菜单用 antd Popover 承载内容,替代 createPortal + 手算定位 - 浮层内嵌套子菜单同样用 Popover;切换根浮层时按 openKeys 预展开 - 样式:submenu-popup 改为相对定位;popover overlay 去重 padding - 测试:嵌套浮层用 document.body 断言三级文案 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): Popover 子菜单修复样式与浮层内点击 - 浮层内二三级改回内联展开,避免嵌套 Popover 挂 body 导致外层误关 - 根 Popover 恢复标题点击切换;移除挂到 nav 的 getPopupContainer(overflow 裁切) - submenu-popup 恢复 boxShadow Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): Popover 浮层内容包裹菜单根类名以继承 cssinjs 样式 body 挂载时补全 `.baseClassName.hashId` 祖先及 horizontal/collapsed 修饰 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 顶栏 horizontal 菜单行高 28px 并与子菜单标题对齐 叶子项、item-title、item-text、外包层与子菜单 title 统一高度与 padding Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 顶栏菜单文案与图标垂直居中对齐 horizontal 下 item-text 用 inline-flex+iconBox 高度;子菜单 title 内层同步 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 顶栏 Popover 浮层不再挂 --horizontal 避免子项被误样式 下拉内叶子项不应命中顶栏 28px 等 horizontal 后代选择器 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(ProLayout): 选中菜单项底部指示条展开动画 使用 cssinjs Keyframes;尊重 prefers-reduced-motion Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 侧栏收起时浮层内隐藏子菜单展开箭头 仅作用于 submenu-popup 内,顶栏 horizontal 不受影响 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 选中菜单项去掉下划线改为外环高亮 移除底部指示条动画,保留背景色与柔和 boxShadow Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 选中项仅保留背景与文字色,去掉外环 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 子菜单 Popover 浮层关闭箭头 悬浮卡片不展示 Tooltip/Popover 小三角 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(layout): 侧栏展开时恢复子菜单展开指示器,收起时隐藏 - ProLayoutNavMenu 在非收起侧栏时渲染 RightOutlined/DownOutlined - 顶栏一级子菜单用向下箭头,浮层与内联用向右箭头并随展开旋转 - 调整 submenu-title-inner 子选择器避免箭头被 flex:1 拉伸 - 更新相关快照 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * feat(layout): 移除 mix 布局,侧栏支持顶栏菜单与 headerMenuRender - PureSettings.layout 仅保留 side/top;运行时仍将 mix 映射为 side - splitMenus 在 side 下将一级菜单渲染到顶栏,侧栏展示子菜单 - 新增 headerMenuRender 自定义顶栏横向菜单;侧栏有顶栏条时才渲染 Header - 移除 GlobalHeader/Sider 的 mix 专用分支与相关样式 - 更新文档、demo、测试与快照 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(layout): 子菜单展开指示器随开关联动旋转 - 选择器改为 submenu-title--open,修复 Popover 触发器无 li.submenu-open 时不旋转 - 顶栏横向 DownOutlined 展开时 180deg,其余 RightOutlined 展开时 90deg Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(layout): 修正子菜单展开箭头旋转选择器(&--open 嵌套) - 避免 .submenu-title .submenu-title--open 错误链,展开时 RightOutlined 90deg、顶栏 DownOutlined 180deg Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 审阅项修复——侧栏始终渲染顶栏、菜单 a11y 与变更说明 - Header: 移除 side 无顶栏条时整段 return null,恢复 GlobalHeader(操作区/头像等) - ProLayoutNavMenu: 解构剥离 menuProps 中的 role/className/style,避免覆盖根 nav - 内联子菜单: button id、aria-controls 与子 ul id、aria-labelledby 对齐 Popover 分支 - NavMenuSubmenuNode/BaseMenu: hasIcon 字段替代仅靠 className 解析 - defaultOpenKeys 同步 effect 使用 JSON.stringify 依赖 - site/changelog: 记录 layout=mix 移除与迁移方式 - 更新 mobile、pageHeaderWarp 快照 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * refactor(ProLayout): 移除 BaseMenu 的 MenuUtil 类,理顺 NavMenu ESLint - BaseMenu:MenuDataItem→NavMenuNode 改为 MenuNavBuildContext + 纯函数 - 子列表递归内联映射,避免 getNavMenuItemsFromData 与 getSubMenuOrItem 相互前置 - ProLayoutNavMenu:对 renderNode 前置调用处补充 eslint-disable-next-line - 站点 changelog 记录 BaseMenu 去类化 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(layout): 侧栏收起时根菜单项不再整行拉成长条 - menu: 根 nav.list--root 且 --collapsed 时顶级 item/submenu width:auto 并居中 - BaseMenu: finallyData 可能为 undefined 时用空数组避免 TS 报错 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * refactor(ProLayout): BaseMenu 拆分 baseMenuItemPath 模块 - 新增 baseMenuItemPath:MenuItemTooltip、getMenuItemPath、getIntlMenuName、getMenuTitleSymbol、MenuNavBuildContext - getMenuItemPath 注入 getIcon 避免与 BaseMenu 内 IconFont 循环依赖 - 站点 changelog 补充说明 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * refactor(ProLayout): BaseMenu 菜单树构建合并为 baseMenuNavNodes.tsx - 合并原 baseMenuItemPath 与 getSubMenuOrItem/getIntlMenuName 至 baseMenuNavNodes - 删除 baseMenuItemPath.tsx;导出 MenuNavGetIconFn - 更新 changelog 描述 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * fix(ProLayout): 修复顶栏菜单 menuProps 重复展开并补充回归用例 TopNavHeader 在展开 {...props} 后再次展开 menuProps,导致根 nav 上重复属性;移除冗余展开。新增 layout=top 下 menuProps 仅挂载一次的测试。同步合并 BaseMenu 与主导航的可访问性及 menuProps 合并顺序调整。 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * style(ProLayout): 侧栏垂直菜单项默认字重改为常规 将 sider 表面 `--pro-layout-nav-item-font-weight` 从 500 调整为 400,避免 `.ant-pro-base-menu-vertical-item` 默认偏粗;顶栏 horizontal 仍为 500。 Co-authored-by: 陈帅 <wasd2144@hotmail.com> * docs(ProLayout): 标明侧栏与顶栏主导航 CSS 变量分支 layoutNavCssVars 中 sider 与 header 为互斥分支;注释说明 14px/400 仅作用于侧栏 vertical,避免审阅误判顶栏样式。 Co-authored-by: 陈帅 <wasd2144@hotmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 2f42e59 commit 238e327

35 files changed

Lines changed: 152 additions & 130 deletions

demos/form/layout-footer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const Demo = () => {
3535
],
3636
},
3737
]}
38-
layout="mix"
38+
layout="side"
3939
location={{
4040
pathname: '/one/two',
4141
}}

demos/layout/_debug-demo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const Demo = () => {
1717
return (
1818
<ProLayout
1919
splitMenus
20-
layout="mix"
20+
layout="side"
2121
token={{
2222
bgLayout: 'rgba(160, 217, 17, 0.1)',
2323
colorTextAppListIcon: 'rgba(255, 255, 255, 1)',

demos/layout/appList-group-simple.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ const AppGroupList: any = [
7878
const Demo = () => {
7979
const settings: ProSettings = {
8080
fixSiderbar: true,
81-
layout: 'mix',
81+
layout: 'side',
8282
splitMenus: true,
8383
};
8484

demos/layout/appList-group.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ const AppGroupList: any = [
8585
const Demo = () => {
8686
const settings: ProSettings = {
8787
fixSiderbar: true,
88-
layout: 'mix',
88+
layout: 'side',
8989
splitMenus: true,
9090
};
9191
const itemClick = (

demos/layout/base.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ const SearchInput = () => {
292292
const Demo = () => {
293293
const [settings, setSetting] = useState<Partial<ProSettings> | undefined>({
294294
fixSiderbar: true,
295-
layout: 'mix',
295+
layout: 'side',
296296
splitMenus: true,
297297
});
298298

demos/layout/classicMode.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { demoOnMenuHeaderClick } from './_demoHandlers';
1919
const Demo = () => {
2020
const [settings, setSetting] = useState<Partial<ProSettings> | undefined>({
2121
fixSiderbar: true,
22-
layout: 'mix',
22+
layout: 'side',
2323
splitMenus: true,
2424
});
2525

demos/layout/customize-collapsed.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const Demo = () => {
5656
return (
5757
<ProLayout
5858
{...props}
59-
layout="mix"
59+
layout="side"
6060
onCollapse={setCollapsed}
6161
postMenuData={(menuData) => {
6262
return [
@@ -76,7 +76,7 @@ const Demo = () => {
7676
return (
7777
<ProLayout
7878
{...props}
79-
layout="mix"
79+
layout="side"
8080
onCollapse={setCollapsed}
8181
headerContentRender={() => {
8282
return (

demos/layout/designMenuCss.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { demoOnMenuHeaderClick } from './_demoHandlers';
1919
const Demo = () => {
2020
const [settings, setSetting] = useState<Partial<ProSettings> | undefined>({
2121
fixSiderbar: true,
22-
layout: 'mix',
22+
layout: 'side',
2323
splitMenus: true,
2424
});
2525

demos/layout/enum-switch.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import defaultProps from './_defaultProps';
1212
const Demo = () => {
1313
const { token } = theme.useToken();
1414

15-
const [layout, setLayout] = useState<ProSettings['layout']>('mix');
15+
const [layout, setLayout] = useState<ProSettings['layout']>('side');
16+
const [splitMenus, setSplitMenus] = useState(false);
1617
const [contentWidth, setContentWidth] = useState<'Fluid' | 'Fixed'>('Fluid');
1718
const [siderMenuType, setSiderMenuType] = useState<'sub' | 'group'>('group');
1819

@@ -30,6 +31,7 @@ const Demo = () => {
3031
<ProLayout
3132
{...defaultProps}
3233
layout={layout}
34+
splitMenus={layout === 'side' ? splitMenus : false}
3335
contentWidth={contentWidth}
3436
siderMenuType={siderMenuType}
3537
fixSiderbar
@@ -57,14 +59,26 @@ const Demo = () => {
5759
<span>layout 导航模式:</span>
5860
<Segmented
5961
value={layout}
60-
onChange={(v) => setLayout(v as any)}
62+
onChange={(v) => setLayout(v as ProSettings['layout'])}
6163
options={[
6264
{ label: '侧栏 side', value: 'side' },
6365
{ label: '顶部 top', value: 'top' },
64-
{ label: '混合 mix', value: 'mix' },
6566
]}
6667
/>
6768
</Space>
69+
{layout === 'side' ? (
70+
<Space>
71+
<span>顶栏一级菜单 splitMenus:</span>
72+
<Segmented
73+
value={splitMenus ? 'on' : 'off'}
74+
onChange={(v) => setSplitMenus(v === 'on')}
75+
options={[
76+
{ label: '关闭', value: 'off' },
77+
{ label: '开启', value: 'on' },
78+
]}
79+
/>
80+
</Space>
81+
) : null}
6882
<Space>
6983
<span>contentWidth 内容宽度:</span>
7084
<Segmented

demos/layout/footer-global-tools.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import defaultProps from './_defaultProps';
1313

1414
const Demo = () => {
1515
const settings: ProSettings | undefined = {
16-
layout: 'mix',
16+
layout: 'side',
1717
splitMenus: true,
1818
};
1919

0 commit comments

Comments
 (0)