From a12d038aacf8e1e5b82204bd777220bdfa70dd65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Fri, 22 May 2026 10:05:14 +0800 Subject: [PATCH 1/2] fix: avoid rc package deep imports --- package.json | 4 ++-- src/TabNavList/OperationNode.tsx | 2 +- src/TabNavList/index.tsx | 3 +-- src/Tabs.tsx | 9 +++++---- src/hooks/useAnimateConfig.ts | 2 +- src/hooks/useIndicator.ts | 2 +- src/hooks/useUpdate.ts | 2 +- src/index.ts | 9 +++++++++ tests/common/util.tsx | 6 ++---- tests/index.test.tsx | 2 +- tests/mobile.test.tsx | 2 +- tests/operation-overflow.test.tsx | 2 +- tests/overflow.test.tsx | 3 +-- tests/rtl.test.tsx | 2 +- 14 files changed, 28 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 35eb52b3..c5b52b0b 100644 --- a/package.json +++ b/package.json @@ -42,11 +42,11 @@ "@rc-component/menu": "~1.3.0", "@rc-component/motion": "^1.1.3", "@rc-component/resize-observer": "^1.0.0", - "@rc-component/util": "^1.3.0", + "@rc-component/util": "^1.11.1", "clsx": "^2.1.1" }, "devDependencies": { - "@rc-component/father-plugin": "^2.0.0", + "@rc-component/father-plugin": "^2.2.0", "@rc-component/np": "^1.0.3", "@testing-library/jest-dom": "^6.1.4", "@testing-library/react": "^16.0.1", diff --git a/src/TabNavList/OperationNode.tsx b/src/TabNavList/OperationNode.tsx index 9b41f081..a56ee5a9 100644 --- a/src/TabNavList/OperationNode.tsx +++ b/src/TabNavList/OperationNode.tsx @@ -1,7 +1,7 @@ import { clsx } from 'clsx'; import Dropdown from '@rc-component/dropdown'; import Menu, { MenuItem } from '@rc-component/menu'; -import KeyCode from '@rc-component/util/lib/KeyCode'; +import { KeyCode } from '@rc-component/util'; import * as React from 'react'; import { useEffect, useState } from 'react'; import type { EditableConfig, Tab, TabsLocale, MoreProps } from '../interface'; diff --git a/src/TabNavList/index.tsx b/src/TabNavList/index.tsx index 228a5d0e..25a7e05d 100644 --- a/src/TabNavList/index.tsx +++ b/src/TabNavList/index.tsx @@ -1,7 +1,6 @@ import { clsx } from 'clsx'; import ResizeObserver from '@rc-component/resize-observer'; -import useEvent from '@rc-component/util/lib/hooks/useEvent'; -import { useComposeRef } from '@rc-component/util/lib/ref'; +import { useComposeRef, useEvent } from '@rc-component/util'; import * as React from 'react'; import { useEffect, useRef, useState } from 'react'; import TabContext from '../TabContext'; diff --git a/src/Tabs.tsx b/src/Tabs.tsx index 74931363..62c7328a 100644 --- a/src/Tabs.tsx +++ b/src/Tabs.tsx @@ -1,7 +1,6 @@ // Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role import { clsx } from 'clsx'; -import useControlledState from '@rc-component/util/lib/hooks/useControlledState'; -import isMobile from '@rc-component/util/lib/isMobile'; +import { isMobile, useControlledState } from '@rc-component/util'; import * as React from 'react'; import { useEffect, useState } from 'react'; import TabContext from './TabContext'; @@ -37,8 +36,10 @@ let uuid = 0; export type SemanticName = 'popup' | 'item' | 'indicator' | 'content' | 'header' | 'remove'; -export interface TabsProps - extends Omit, 'onChange' | 'children'> { +export interface TabsProps extends Omit< + React.HTMLAttributes, + 'onChange' | 'children' +> { prefixCls?: string; className?: string; style?: React.CSSProperties; diff --git a/src/hooks/useAnimateConfig.ts b/src/hooks/useAnimateConfig.ts index ebc6f428..bf5f9245 100644 --- a/src/hooks/useAnimateConfig.ts +++ b/src/hooks/useAnimateConfig.ts @@ -1,4 +1,4 @@ -import warning from '@rc-component/util/lib/warning'; +import { warning } from '@rc-component/util'; import type { TabsProps } from '..'; import type { AnimatedConfig } from '../interface'; diff --git a/src/hooks/useIndicator.ts b/src/hooks/useIndicator.ts index 508a2dea..1ea3d94b 100644 --- a/src/hooks/useIndicator.ts +++ b/src/hooks/useIndicator.ts @@ -1,4 +1,4 @@ -import raf from '@rc-component/util/lib/raf'; +import { raf } from '@rc-component/util'; import React, { useEffect, useRef, useState } from 'react'; import type { TabOffset } from '../interface'; diff --git a/src/hooks/useUpdate.ts b/src/hooks/useUpdate.ts index 865b43ad..5055b680 100644 --- a/src/hooks/useUpdate.ts +++ b/src/hooks/useUpdate.ts @@ -1,4 +1,4 @@ -import { useLayoutUpdateEffect } from '@rc-component/util/lib/hooks/useLayoutEffect'; +import { useLayoutUpdateEffect } from '@rc-component/util'; import { useRef, useState } from 'react'; /** diff --git a/src/index.ts b/src/index.ts index 35e3f768..4ce8eab0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,15 @@ import type { TabsProps } from './Tabs'; import Tabs from './Tabs'; +export type { + AnimatedConfig, + EditableConfig, + MoreProps, + Tab, + TabBarExtraContent, +} from './interface'; +export type { TabPaneProps } from './TabPanelList/TabPane'; +export type { GetIndicatorSize } from './hooks/useIndicator'; export type { TabsProps }; export default Tabs; diff --git a/tests/common/util.tsx b/tests/common/util.tsx index 8f2a7f73..29c0e00c 100644 --- a/tests/common/util.tsx +++ b/tests/common/util.tsx @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-invalid-this */ import { act } from '@testing-library/react'; -import { _rs as onEsResize } from '@rc-component/resize-observer/es/utils/observerUtil'; -import { _rs as onLibResize } from '@rc-component/resize-observer/lib/utils/observerUtil'; +import { _rs as onResize } from '@rc-component/resize-observer'; import React from 'react'; import Tabs from '../../src'; import type { TabsProps } from '../../src/Tabs'; @@ -150,8 +149,7 @@ export const triggerResize = (container: Element) => { const target = container.querySelector('.rc-tabs-nav'); act(() => { - onLibResize([{ target } as ResizeObserverEntry]); - onEsResize([{ target } as ResizeObserverEntry]); + onResize([{ target } as ResizeObserverEntry]); }); }; diff --git a/tests/index.test.tsx b/tests/index.test.tsx index c27aaad6..889ef047 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -1,6 +1,6 @@ import '@testing-library/dom'; import { act, fireEvent, render, screen } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { spyElementPrototypes } from '@rc-component/util'; import React from 'react'; import Tabs from '../src'; import type { TabsProps } from '../src/Tabs'; diff --git a/tests/mobile.test.tsx b/tests/mobile.test.tsx index 995388b7..d8f4a4ef 100644 --- a/tests/mobile.test.tsx +++ b/tests/mobile.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { spyElementPrototypes } from '@rc-component/util'; import React from 'react'; import { act } from 'react-dom/test-utils'; import type { TabsProps } from '../src'; diff --git a/tests/operation-overflow.test.tsx b/tests/operation-overflow.test.tsx index 47b3df77..e508fd43 100644 --- a/tests/operation-overflow.test.tsx +++ b/tests/operation-overflow.test.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-invalid-this */ import { render } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { spyElementPrototypes } from '@rc-component/util'; import { act } from 'react-dom/test-utils'; import { getOffsetSizeFunc, getTabs, triggerResize } from './common/util'; diff --git a/tests/overflow.test.tsx b/tests/overflow.test.tsx index 8f8c041a..6f4e6e84 100644 --- a/tests/overflow.test.tsx +++ b/tests/overflow.test.tsx @@ -1,6 +1,5 @@ import { act, fireEvent, render } from '@testing-library/react'; -import KeyCode from '@rc-component/util/lib/KeyCode'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { KeyCode, spyElementPrototypes } from '@rc-component/util'; import React from 'react'; import type { TabsProps } from '../src'; import Tabs from '../src'; diff --git a/tests/rtl.test.tsx b/tests/rtl.test.tsx index b90b122d..d372055e 100644 --- a/tests/rtl.test.tsx +++ b/tests/rtl.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { spyElementPrototypes } from '@rc-component/util'; import { act } from 'react-dom/test-utils'; import { getOffsetSizeFunc, getTabs, getTransformX, triggerResize } from './common/util'; From 10c22a40dd38b00486faf5c8a6f29fb8efd31608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Fri, 22 May 2026 14:10:03 +0800 Subject: [PATCH 2/2] fix: expose tab bar extra map type --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 4ce8eab0..1ca43d34 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ export type { MoreProps, Tab, TabBarExtraContent, + TabBarExtraMap, } from './interface'; export type { TabPaneProps } from './TabPanelList/TabPane'; export type { GetIndicatorSize } from './hooks/useIndicator';