tdesign-react icon indicating copy to clipboard operation
tdesign-react copied to clipboard

fix(SubMenu): remove `maxHeight`

Open RylanBot opened this issue 3 weeks ago • 11 comments

🤔 这个 PR 的性质是?

  • [x] 日常 bug 修复
  • [ ] 新特性提交
  • [ ] 文档改进
  • [ ] 演示代码改进
  • [ ] 组件样式/交互改进
  • [ ] CI/CD 改进
  • [ ] 重构
  • [ ] 代码风格优化
  • [ ] 测试用例
  • [ ] 分支合并
  • [ ] 其他

🔗 相关 Issue

  • https://github.com/Tencent/tdesign-react/issues/3222

💡 需求背景和解决方案

测试代码存档
import React, { Fragment } from 'react';
import { UserIcon } from 'tdesign-icons-react';
import { Menu } from 'tdesign-react';

const { SubMenu, MenuItem } = Menu;

function Multiple() {
  return (
    <Fragment>
      <Menu theme="dark">
        <SubMenu value="sub-2" title="水果蔬菜" icon={<UserIcon />}>
          <MenuItem value="12">黄瓜</MenuItem>
          <MenuItem value="13">西红柿</MenuItem>
          <SubMenu value="0" title="水果">
            <MenuItem style={{ height: 90 }} value="0-1">
              苹果1
            </MenuItem>
            <MenuItem value="0-2">苹果2</MenuItem>
            <MenuItem value="0-3">苹果3</MenuItem>
          </SubMenu>
        </SubMenu>
        <MenuItem value="9">其他</MenuItem>
      </Menu>
    </Fragment>
  );
}

export default Multiple;

📝 更新日志

  • fix(Menu): 移除 SubMenumax-height 样式限制,避免额外设置 MenuItemheight 时,内容被遮挡

  • [ ] 本条 PR 不需要纳入 Changelog

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项。⚠️

  • [x] 文档已补充或无须补充
  • [x] 代码演示已提供或无须提供
  • [x] TypeScript 定义已补充或无须补充
  • [x] Changelog 已提供或无须提供

RylanBot avatar Nov 27 '25 10:11 RylanBot

完成

github-actions[bot] avatar Nov 27 '25 10:11 github-actions[bot]

commit: 8d02f9b

pkg-pr-new[bot] avatar Nov 27 '25 10:11 pkg-pr-new[bot]

没有在expanded 中的节点错误展开了 image 且导致错误展开的菜单第一次点击会丢失收起效果

https://github.com/user-attachments/assets/8f711e1b-e028-46aa-97ec-f6d73159abf3

uyarn avatar Dec 10 '25 11:12 uyarn

snapshot和test需要改才能正常就不太对吧

uyarn avatar Dec 10 '25 11:12 uyarn

snapshots 变的都是 height 的移除 🤔 image

至于「没有在expanded 中的节点错误展开了」这个得验证一下为什么该样式变动会影响到它...

RylanBot avatar Dec 10 '25 11:12 RylanBot

before

以前的style里面计算了

maxHeight:isExpand || (open && isPopUp) ? getSubMenuMaxHeight(children) : 0;

没展开的maxHeight:0,所以没问题

after

现在没有设置height:0,所以默认就展开了

height:0
image

HaixingOoO avatar Dec 10 '25 12:12 HaixingOoO

已重新处理

RylanBot avatar Dec 10 '25 15:12 RylanBot

styleisExpand的处理,导致动画展开或者收缩的缺失了

HaixingOoO avatar Dec 10 '25 15:12 HaixingOoO

只能说,除非改掉 https://github.com/Tencent/tdesign-common/blob/develop/style/web/_global.less#L35 动画的实现方式 ...否则它永远依赖 heightmaxHeight

RylanBot avatar Dec 10 '25 17:12 RylanBot

只能说,除非改掉 https://github.com/Tencent/tdesign-common/blob/develop/style/web/_global.less#L35 动画的实现方式 ...否则它永远依赖 heightmaxHeight

展开收起的动画效果 通过maxHeight的transition动画是常见的实现方式,或者考虑改成和popup一样通过clip path实现 https://github.com/Tencent/tdesign-common/issues/155

uyarn avatar Dec 11 '25 00:12 uyarn

我没理解到什么问题

HaixingOoO avatar Dec 11 '25 00:12 HaixingOoO