From 5101cf0b0d03fccf63e65754eaf7f9a305011428 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 09:43:40 +0800 Subject: [PATCH] fix: avoid rc package deep imports --- README.md | 6 ++--- package.json | 4 ++-- src/PickerInput/RangePicker.tsx | 22 ++++++++++++------- src/PickerInput/Selector/Input.tsx | 4 +--- .../Selector/hooks/useClearIcon.tsx | 2 +- .../Selector/hooks/useInputProps.ts | 3 +-- src/PickerInput/SinglePicker.tsx | 5 +---- src/PickerInput/hooks/useDelayState.ts | 3 +-- src/PickerInput/hooks/useLockEffect.ts | 3 +-- src/PickerInput/hooks/usePresets.ts | 2 +- src/PickerInput/hooks/useRangePickerValue.ts | 3 +-- src/PickerInput/hooks/useRangeValue.ts | 2 +- .../TimePanel/TimePanelBody/TimeColumn.tsx | 2 +- .../TimePanel/TimePanelBody/useScrollTo.ts | 4 +--- src/PickerPanel/index.tsx | 10 +++++---- src/PickerTrigger/index.tsx | 3 +-- src/generate/moment.ts | 2 +- src/utils/warnUtil.ts | 2 +- tests/disabledTime.spec.tsx | 2 +- tests/keyboard.spec.tsx | 2 +- tests/loop.spec.tsx | 2 +- tests/multiple.spec.tsx | 2 +- tests/new-range.spec.tsx | 3 +-- tests/panel.spec.tsx | 2 +- tests/picker.spec.tsx | 4 +--- tests/range.spec.tsx | 4 +--- tests/time.spec.tsx | 2 +- 27 files changed, 48 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 71d846daf..c39fd29bb 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ render(, mountNode); | popupAlign | Object:alignConfig of [dom-align](https://github.com/yiminghe/dom-align) | | value will be merged into placement's popupAlign config | | popupStyle | React.CSSProperties | | customize popup style | | transitionName | String | '' | css class for animation | -| locale | Object | import from '@rc-component/picker/lib/locale/en_US' | @rc-component/picker locale | +| locale | Object | import from '@rc-component/picker/locale/en_US' | @rc-component/picker locale | | inputReadOnly | boolean | false | set input to read only | | allowClear | boolean \| { clearIcon?: ReactNode } | false | whether show clear button or customize clear button | | autoFocus | boolean | false | whether auto focus | @@ -82,7 +82,7 @@ render(, mountNode); | prefixCls | String | @rc-component/picker | prefixCls of this component | | className | String | '' | additional css class of root dom | | style | React.CSSProperties | | additional style of root dom node | -| locale | Object | import from '@rc-component/picker/lib/locale/en_US' | @rc-component/picker locale | +| locale | Object | import from '@rc-component/picker/locale/en_US' | @rc-component/picker locale | | value | moment | | current value like input's value | | defaultValue | moment | | defaultValue like input's defaultValue | | defaultPickerValue | moment | | Set default display picker view date | @@ -107,7 +107,7 @@ render(, mountNode); | prefixCls | String | rc-picker | prefixCls of this component | | className | String | '' | additional css class of root dom | | style | React.CSSProperties | | additional style of root dom node | -| locale | Object | import from '@rc-component/picker/lib/locale/en_US' | @rc-component/picker locale | +| locale | Object | import from '@rc-component/picker/locale/en_US' | @rc-component/picker locale | | value | moment | | current value like input's value | | defaultValue | moment | | defaultValue like input's defaultValue | | defaultPickerValue | moment | | Set default display picker view date | diff --git a/package.json b/package.json index 7dd7ef17e..ff5354ba8 100644 --- a/package.json +++ b/package.json @@ -112,11 +112,11 @@ "@rc-component/overflow": "^1.0.0", "@rc-component/resize-observer": "^1.0.0", "@rc-component/trigger": "^3.6.15", - "@rc-component/util": "^1.3.0", + "@rc-component/util": "^1.11.1", "clsx": "^2.1.1" }, "devDependencies": { - "@rc-component/father-plugin": "^1.0.0", + "@rc-component/father-plugin": "^2.2.0", "@rc-component/np": "^1.0.3", "@testing-library/react": "^16.0.0", "@types/jest": "^29.4.0", diff --git a/src/PickerInput/RangePicker.tsx b/src/PickerInput/RangePicker.tsx index 4daadcae0..8cccd7869 100644 --- a/src/PickerInput/RangePicker.tsx +++ b/src/PickerInput/RangePicker.tsx @@ -1,9 +1,12 @@ -import { useEvent, useControlledState } from '@rc-component/util'; +import { + omit, + pickAttrs, + useControlledState, + useEvent, + useLayoutEffect, + warning, +} from '@rc-component/util'; import { clsx } from 'clsx'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; -import omit from '@rc-component/util/lib/omit'; -import pickAttrs from '@rc-component/util/lib/pickAttrs'; -import warning from '@rc-component/util/lib/warning'; import * as React from 'react'; import type { BaseInfo, @@ -56,8 +59,10 @@ export type RangeValueType = [ /** Used for change event, it should always be not undefined */ export type NoUndefinedRangeValueType = [start: DateType | null, end: DateType | null]; -export interface BaseRangePickerProps - extends Omit, 'showTime' | 'id'> { +export interface BaseRangePickerProps extends Omit< + SharedPickerProps, + 'showTime' | 'id' +> { // Structure id?: SelectorIdType; @@ -132,7 +137,8 @@ export interface BaseRangePickerProps } export interface RangePickerProps - extends BaseRangePickerProps, + extends + BaseRangePickerProps, Omit, 'format' | 'defaultValue' | 'defaultOpenValue'> {} function getActiveRange(activeIndex: number) { diff --git a/src/PickerInput/Selector/Input.tsx b/src/PickerInput/Selector/Input.tsx index 7e2fae5da..c0d06bf0d 100644 --- a/src/PickerInput/Selector/Input.tsx +++ b/src/PickerInput/Selector/Input.tsx @@ -1,7 +1,5 @@ import { clsx } from 'clsx'; -import { useEvent } from '@rc-component/util'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; -import raf from '@rc-component/util/lib/raf'; +import { raf, useEvent, useLayoutEffect } from '@rc-component/util'; import * as React from 'react'; import { leftPad } from '../../utils/miscUtil'; import PickerContext from '../context'; diff --git a/src/PickerInput/Selector/hooks/useClearIcon.tsx b/src/PickerInput/Selector/hooks/useClearIcon.tsx index 83335c647..37c587fe9 100644 --- a/src/PickerInput/Selector/hooks/useClearIcon.tsx +++ b/src/PickerInput/Selector/hooks/useClearIcon.tsx @@ -1,4 +1,4 @@ -import warning from '@rc-component/util/lib/warning'; +import { warning } from '@rc-component/util'; import type { ReactNode } from 'react'; import * as React from 'react'; diff --git a/src/PickerInput/Selector/hooks/useInputProps.ts b/src/PickerInput/Selector/hooks/useInputProps.ts index 251777982..605551afb 100644 --- a/src/PickerInput/Selector/hooks/useInputProps.ts +++ b/src/PickerInput/Selector/hooks/useInputProps.ts @@ -1,5 +1,4 @@ -import { warning } from '@rc-component/util'; -import pickAttrs from '@rc-component/util/lib/pickAttrs'; +import { pickAttrs, warning } from '@rc-component/util'; import * as React from 'react'; import type { SelectorProps } from '../../../interface'; import { formatValue } from '../../../utils/dateUtil'; diff --git a/src/PickerInput/SinglePicker.tsx b/src/PickerInput/SinglePicker.tsx index bdb8b78cb..5b7f0a15e 100644 --- a/src/PickerInput/SinglePicker.tsx +++ b/src/PickerInput/SinglePicker.tsx @@ -1,8 +1,5 @@ -import { useEvent, useControlledState } from '@rc-component/util'; +import { omit, pickAttrs, useControlledState, useEvent, useLayoutEffect } from '@rc-component/util'; import { clsx } from 'clsx'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; -import omit from '@rc-component/util/lib/omit'; -import pickAttrs from '@rc-component/util/lib/pickAttrs'; import * as React from 'react'; import useToggleDates from '../hooks/useToggleDates'; import type { diff --git a/src/PickerInput/hooks/useDelayState.ts b/src/PickerInput/hooks/useDelayState.ts index 0904bcf0a..0faca60d1 100644 --- a/src/PickerInput/hooks/useDelayState.ts +++ b/src/PickerInput/hooks/useDelayState.ts @@ -1,5 +1,4 @@ -import { useEvent, useControlledState } from '@rc-component/util'; -import raf from '@rc-component/util/lib/raf'; +import { raf, useControlledState, useEvent } from '@rc-component/util'; import React from 'react'; /** diff --git a/src/PickerInput/hooks/useLockEffect.ts b/src/PickerInput/hooks/useLockEffect.ts index 135b73c4d..d4f9e8cc4 100644 --- a/src/PickerInput/hooks/useLockEffect.ts +++ b/src/PickerInput/hooks/useLockEffect.ts @@ -1,5 +1,4 @@ -import { useLayoutUpdateEffect } from '@rc-component/util/lib/hooks/useLayoutEffect'; -import raf from '@rc-component/util/lib/raf'; +import { raf, useLayoutUpdateEffect } from '@rc-component/util'; import * as React from 'react'; /** diff --git a/src/PickerInput/hooks/usePresets.ts b/src/PickerInput/hooks/usePresets.ts index 19debcd7c..22a7406f0 100644 --- a/src/PickerInput/hooks/usePresets.ts +++ b/src/PickerInput/hooks/usePresets.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import warning from '@rc-component/util/lib/warning'; +import { warning } from '@rc-component/util'; import type { ValueDate } from '../../interface'; export default function usePresets( diff --git a/src/PickerInput/hooks/useRangePickerValue.ts b/src/PickerInput/hooks/useRangePickerValue.ts index be21e528b..ccf3992b2 100644 --- a/src/PickerInput/hooks/useRangePickerValue.ts +++ b/src/PickerInput/hooks/useRangePickerValue.ts @@ -1,5 +1,4 @@ -import { useControlledState } from '@rc-component/util'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; +import { useControlledState, useLayoutEffect } from '@rc-component/util'; import * as React from 'react'; import type { GenerateConfig } from '../../generate'; import type { InternalMode, Locale, PanelMode } from '../../interface'; diff --git a/src/PickerInput/hooks/useRangeValue.ts b/src/PickerInput/hooks/useRangeValue.ts index 4c8df734d..6cd0ac367 100644 --- a/src/PickerInput/hooks/useRangeValue.ts +++ b/src/PickerInput/hooks/useRangeValue.ts @@ -1,4 +1,4 @@ -import { useEvent, useControlledState } from '@rc-component/util'; +import { useControlledState, useEvent } from '@rc-component/util'; import * as React from 'react'; import type { GenerateConfig } from '../../generate'; import useSyncState from '../../hooks/useSyncState'; diff --git a/src/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx b/src/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx index 4e6e53739..e8130a170 100644 --- a/src/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx +++ b/src/PickerPanel/TimePanel/TimePanelBody/TimeColumn.tsx @@ -1,5 +1,5 @@ import { clsx } from 'clsx'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; +import { useLayoutEffect } from '@rc-component/util'; import * as React from 'react'; import { usePanelContext } from '../../context'; import useScrollTo from './useScrollTo'; diff --git a/src/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts b/src/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts index 3c153c83d..47c172b04 100644 --- a/src/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts +++ b/src/PickerPanel/TimePanel/TimePanelBody/useScrollTo.ts @@ -1,6 +1,4 @@ -import { useEvent } from '@rc-component/util'; -import raf from '@rc-component/util/lib/raf'; -import isVisible from '@rc-component/util/lib/Dom/isVisible'; +import { isVisible, raf, useEvent } from '@rc-component/util'; import * as React from 'react'; const SPEED_PTG = 1 / 3; diff --git a/src/PickerPanel/index.tsx b/src/PickerPanel/index.tsx index 1e44948ed..c0eeacebd 100644 --- a/src/PickerPanel/index.tsx +++ b/src/PickerPanel/index.tsx @@ -1,5 +1,5 @@ import { clsx } from 'clsx'; -import { useEvent, useControlledState, warning } from '@rc-component/util'; +import { useControlledState, useEvent, warning } from '@rc-component/util'; import * as React from 'react'; import useLocale from '../hooks/useLocale'; import { fillShowTimeConfig, getTimeProps } from '../hooks/useTimeConfig'; @@ -46,7 +46,8 @@ export interface PickerPanelRef { } export interface BasePickerPanelProps - extends Pick< + extends + Pick< SharedPanelProps, // MISC | 'locale' @@ -119,8 +120,9 @@ export interface BasePickerPanelProps hideHeader?: boolean; } -export interface SinglePickerPanelProps - extends BasePickerPanelProps { +export interface SinglePickerPanelProps< + DateType extends object = any, +> extends BasePickerPanelProps { multiple?: false; defaultValue?: DateType | null; diff --git a/src/PickerTrigger/index.tsx b/src/PickerTrigger/index.tsx index 1bb260d11..91da6ba7f 100644 --- a/src/PickerTrigger/index.tsx +++ b/src/PickerTrigger/index.tsx @@ -1,5 +1,4 @@ -import Trigger from '@rc-component/trigger'; -import type { AlignType, BuildInPlacements } from '@rc-component/trigger/lib/interface'; +import Trigger, { type AlignType, type BuildInPlacements } from '@rc-component/trigger'; import { clsx } from 'clsx'; import * as React from 'react'; import { getRealPlacement } from '../utils/uiUtil'; diff --git a/src/generate/moment.ts b/src/generate/moment.ts index fe450a727..b318405cb 100644 --- a/src/generate/moment.ts +++ b/src/generate/moment.ts @@ -1,6 +1,6 @@ import type { Moment } from 'moment'; import moment from 'moment'; -import { noteOnce } from '@rc-component/util/lib/warning'; +import { noteOnce } from '@rc-component/util'; import type { GenerateConfig } from '.'; const generateConfig: GenerateConfig = { diff --git a/src/utils/warnUtil.ts b/src/utils/warnUtil.ts index 4cc06beab..d47276ff5 100644 --- a/src/utils/warnUtil.ts +++ b/src/utils/warnUtil.ts @@ -1,5 +1,5 @@ import type { DisabledTimes, PickerMode } from '../interface'; -import warning from '@rc-component/util/lib/warning'; +import { warning } from '@rc-component/util'; export interface WarningProps extends DisabledTimes { picker?: PickerMode; diff --git a/tests/disabledTime.spec.tsx b/tests/disabledTime.spec.tsx index b7ff950db..a6d0ad97d 100644 --- a/tests/disabledTime.spec.tsx +++ b/tests/disabledTime.spec.tsx @@ -1,6 +1,6 @@ import { fireEvent, render } from '@testing-library/react'; import type { Dayjs } from 'dayjs'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import { closePicker, diff --git a/tests/keyboard.spec.tsx b/tests/keyboard.spec.tsx index e8cb25c98..f3fb93352 100644 --- a/tests/keyboard.spec.tsx +++ b/tests/keyboard.spec.tsx @@ -1,5 +1,5 @@ import { act, fireEvent, render } from '@testing-library/react'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import { DateFnsSinglePicker, DayPicker, getMoment, isOpen, openPicker } from './util/commonUtil'; diff --git a/tests/loop.spec.tsx b/tests/loop.spec.tsx index 585c268a1..45b905971 100644 --- a/tests/loop.spec.tsx +++ b/tests/loop.spec.tsx @@ -1,6 +1,6 @@ import { render } from '@testing-library/react'; import dayjs from 'dayjs'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import zhCN from '../src/locale/zh_CN'; import { DayRangePicker, getMoment } from './util/commonUtil'; diff --git a/tests/multiple.spec.tsx b/tests/multiple.spec.tsx index 3a9de1f88..fee0cd103 100644 --- a/tests/multiple.spec.tsx +++ b/tests/multiple.spec.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-loop-func */ import { fireEvent, render } from '@testing-library/react'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import { clearValue, DayPicker, getDay, isOpen, openPicker, selectCell } from './util/commonUtil'; diff --git a/tests/new-range.spec.tsx b/tests/new-range.spec.tsx index 4d80c6a4b..549d0080e 100644 --- a/tests/new-range.spec.tsx +++ b/tests/new-range.spec.tsx @@ -2,8 +2,7 @@ import { act, createEvent, fireEvent, render } from '@testing-library/react'; import dayjs, { type Dayjs } from 'dayjs'; import 'dayjs/locale/ar'; -import { spyElementPrototype } from '@rc-component/util/lib/test/domHook'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned, spyElementPrototype } from '@rc-component/util'; import React from 'react'; import type { RangePickerProps } from '../src'; import zh_CN from '../src/locale/zh_CN'; diff --git a/tests/panel.spec.tsx b/tests/panel.spec.tsx index 9762613c5..7bd3dadf9 100644 --- a/tests/panel.spec.tsx +++ b/tests/panel.spec.tsx @@ -1,6 +1,6 @@ import { fireEvent, render } from '@testing-library/react'; import dayjs, { type Dayjs } from 'dayjs'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import type { PanelMode } from '../src/interface'; import enUS from '../src/locale/en_US'; diff --git a/tests/picker.spec.tsx b/tests/picker.spec.tsx index 76bca254c..6ce5b86e5 100644 --- a/tests/picker.spec.tsx +++ b/tests/picker.spec.tsx @@ -4,9 +4,7 @@ import type { Dayjs } from 'dayjs'; import dayjs from 'dayjs'; import moment from 'moment'; import 'moment/locale/zh-cn'; -import KeyCode from '@rc-component/util/lib/KeyCode'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { KeyCode, resetWarned, spyElementPrototypes } from '@rc-component/util'; import React from 'react'; import Picker, { PickerPanel, type PickerRef } from '../src'; import type { PanelMode, PickerMode } from '../src/interface'; diff --git a/tests/range.spec.tsx b/tests/range.spec.tsx index 4a500236b..18de5e82e 100644 --- a/tests/range.spec.tsx +++ b/tests/range.spec.tsx @@ -4,9 +4,7 @@ import { act, createEvent, fireEvent, render } from '@testing-library/react'; import { createRoot } from 'react-dom/client'; import type { Dayjs } from 'dayjs'; import dayjs from 'dayjs'; -import KeyCode from '@rc-component/util/lib/KeyCode'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { KeyCode, resetWarned, spyElementPrototypes } from '@rc-component/util'; import React from 'react'; import type { PickerRef, RangePickerProps } from '../src'; import type { PickerMode } from '../src/interface'; diff --git a/tests/time.spec.tsx b/tests/time.spec.tsx index afcd4841c..d8418a945 100644 --- a/tests/time.spec.tsx +++ b/tests/time.spec.tsx @@ -1,5 +1,5 @@ import { fireEvent, render } from '@testing-library/react'; -import { resetWarned } from '@rc-component/util/lib/warning'; +import { resetWarned } from '@rc-component/util'; import React from 'react'; import dayjs from 'dayjs'; import { DayPicker, getDay, openPicker, selectCell } from './util/commonUtil';