Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions packages/components/menu/SubMenu.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import classNames from 'classnames';
import React, { FC, ReactElement, useContext, useMemo, useRef } from 'react';
import { CSSTransition } from 'react-transition-group';
import classNames from 'classnames';

import parseTNode from '../_util/parseTNode';
import FakeArrow from '../common/FakeArrow';
Expand All @@ -12,7 +12,6 @@ import { Popup, type PopupPlacement } from '../popup';
import { calculatePaddingLeft } from './_util/calculatePaddingLeft';
import { checkIsMenuGroup, checkIsSubMenu } from './_util/checkMenuType';
import checkSubMenuChildrenActive from './_util/checkSubMenuChildrenActive';
import { getSubMenuMaxHeight } from './_util/getSubMenuChildStyle';
import { MenuContext } from './MenuContext';

import type { StyledProps } from '../common';
Expand Down Expand Up @@ -59,9 +58,8 @@ const SubAccordion: FC<SubMenuWithCustomizeProps> = (props) => {
}),
);

// 计算有多少子节点并设置最大高度,为做出动画效果
const childStyle = {
maxHeight: isExpand || (open && isPopUp) ? getSubMenuMaxHeight(children) : 0,
maxHeight: isExpand ? undefined : 0,
};

// 是否展开(popup 与 expand 两种状态)
Expand Down
32 changes: 21 additions & 11 deletions packages/components/menu/__tests__/menu.test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { render, fireEvent, vi, waitFor } from '@test/utils';
import { fireEvent, render, vi, waitFor } from '@test/utils';
import React from 'react';
import { UserIcon } from 'tdesign-icons-react';
import Menu from '../index';
Expand Down Expand Up @@ -48,19 +48,27 @@ describe('Menu 组件测试', () => {
});

test('menu defaultExpanded works fine', () => {
const { container, queryByText } = renderSubmenu({ defaultExpanded: ['1'] });
const { container } = renderSubmenu({ defaultExpanded: ['1'] });
expect(container.firstChild).not.toHaveClass('t-is-collapsed');
expect(container.querySelectorAll('.t-submenu.t-is-opened').length).toBe(1);
expect(queryByText('菜单二').parentElement.parentElement.parentElement.style.maxHeight).not.toBe('0');
expect(queryByText('二级菜单-1').parentElement.parentElement.parentElement.style.maxHeight).toBe('0');

const submenu1 = container.querySelectorAll('.t-submenu')[0];
expect(submenu1).toHaveClass('t-is-opened');

const submenu2 = container.querySelectorAll('.t-submenu')[1];
expect(submenu2).not.toHaveClass('t-is-opened');
});

test('menu expanded works fine', () => {
const { container, queryByText } = renderSubmenu({ expanded: ['1'] });
const { container } = renderSubmenu({ expanded: ['1'] });
expect(container.firstChild).not.toHaveClass('t-is-collapsed');
expect(container.querySelectorAll('.t-submenu.t-is-opened').length).toBe(1);
expect(queryByText('菜单二').parentElement.parentElement.parentElement.style.maxHeight).not.toBe('0');
expect(queryByText('二级菜单-1').parentElement.parentElement.parentElement.style.maxHeight).toBe('0');

const submenu1 = container.querySelectorAll('.t-submenu')[0];
expect(submenu1).toHaveClass('t-is-opened');

const submenu2 = container.querySelectorAll('.t-submenu')[1];
expect(submenu2).not.toHaveClass('t-is-opened');
});

test('menu 测试单层导航', () => {
Expand Down Expand Up @@ -151,7 +159,7 @@ describe('Menu 组件测试', () => {
expect(onExpandFn).toHaveBeenCalledTimes(1);
});

test('menu 测试分组导航', () => {
test('menu 测试分组导航', () => {
const clickFn = vi.fn();
const { container, queryByText, getByText } = render(
<Menu onChange={clickFn}>
Expand All @@ -170,10 +178,12 @@ describe('Menu 组件测试', () => {
expect(container.querySelectorAll('.t-submenu').length).toBe(1);
fireEvent.click(getByText('仪表盘'));
expect(clickFn).toHaveBeenCalledTimes(1);
const ulNode = queryByText('基础列表项').parentElement.parentElement;
expect(ulNode.style.maxHeight).toBe('0');

const submenu = container.querySelector('.t-submenu');
expect(submenu).not.toHaveClass('t-is-opened');

fireEvent.click(getByText('列表项'));
expect(ulNode.style.maxHeight).not.toBe('0');
expect(submenu).toHaveClass('t-is-opened');
});

test('menu 測試 menuItem onClick事件', () => {
Expand Down
18 changes: 0 additions & 18 deletions packages/components/menu/_util/getSubMenuChildStyle.ts

This file was deleted.

10 changes: 5 additions & 5 deletions test/snap/__snapshots__/csr.test.jsx.snap

Large diffs are not rendered by default.

Loading
Loading