@@ -7,20 +7,36 @@ import KeyCode from 'rc-util/lib/KeyCode';
77import { useComposeRef } from 'rc-util/lib/ref' ;
88import type { ScrollConfig , ScrollTo } from 'rc-virtual-list/lib/List' ;
99import * as React from 'react' ;
10+ import { useAllowClear } from './hooks/useAllowClear' ;
1011import { BaseSelectContext } from './hooks/useBaseProps' ;
1112import useDelayReset from './hooks/useDelayReset' ;
1213import useLock from './hooks/useLock' ;
1314import useSelectTriggerControl from './hooks/useSelectTriggerControl' ;
15+ import type {
16+ DisplayInfoType ,
17+ DisplayValueType ,
18+ Mode ,
19+ Placement ,
20+ RawValueType ,
21+ RenderDOMFunc ,
22+ RenderNode ,
23+ } from './interface' ;
1424import type { RefSelectorProps } from './Selector' ;
1525import Selector from './Selector' ;
1626import type { RefTriggerProps } from './SelectTrigger' ;
1727import SelectTrigger from './SelectTrigger' ;
1828import TransBtn from './TransBtn' ;
1929import { getSeparatedContent } from './utils/valueUtil' ;
20- import type { DisplayInfoType , DisplayValueType , Mode , Placement , RenderDOMFunc , RenderNode , RawValueType } from './interface' ;
21- import { useAllowClear } from './hooks/useAllowClear' ;
2230
23- export type { DisplayInfoType , DisplayValueType , Mode , Placement , RenderDOMFunc , RenderNode , RawValueType } ;
31+ export type {
32+ DisplayInfoType ,
33+ DisplayValueType ,
34+ Mode ,
35+ Placement ,
36+ RenderDOMFunc ,
37+ RenderNode ,
38+ RawValueType ,
39+ } ;
2440
2541const DEFAULT_OMIT_PROPS = [
2642 'value' ,
@@ -87,10 +103,10 @@ export interface BaseSelectPrivateProps {
87103 searchValue : string ,
88104 info : {
89105 source :
90- | 'typing' //User typing
91- | 'effect' // Code logic trigger
92- | 'submit' // tag mode only
93- | 'blur' ; // Not trigger event
106+ | 'typing' //User typing
107+ | 'effect' // Code logic trigger
108+ | 'submit' // tag mode only
109+ | 'blur' ; // Not trigger event
94110 } ,
95111 ) => void ;
96112 /** Trigger when search text match the `tokenSeparators`. Will provide split content */
@@ -153,8 +169,8 @@ export interface BaseSelectProps extends BaseSelectPrivateProps, React.AriaAttri
153169 // >>> Icons
154170 allowClear ?: boolean | { clearIcon ?: RenderNode } ;
155171 suffixIcon ?: RenderNode ;
156- /**
157- * Clear all icon
172+ /**
173+ * Clear all icon
158174 * @deprecated Please use `allowClear` instead
159175 **/
160176 clearIcon ?: RenderNode ;
@@ -607,24 +623,12 @@ const BaseSelect = React.forwardRef((props: BaseSelectProps, ref: React.Ref<Base
607623 } ;
608624
609625 // ============================ Dropdown ============================
610- const [ containerWidth , setContainerWidth ] = React . useState ( null ) ;
611-
612626 const [ , forceUpdate ] = React . useState ( { } ) ;
613627 // We need force update here since popup dom is render async
614628 function onPopupMouseEnter ( ) {
615629 forceUpdate ( { } ) ;
616630 }
617631
618- useLayoutEffect ( ( ) => {
619- if ( triggerOpen ) {
620- // Guaranteed width accuracy
621- const newWidth = Math . ceil ( containerRef . current ?. getBoundingClientRect ( ) . width ) ;
622- if ( containerWidth !== newWidth && ! Number . isNaN ( newWidth ) ) {
623- setContainerWidth ( newWidth ) ;
624- }
625- }
626- } , [ triggerOpen ] ) ;
627-
628632 // Used for raw custom input trigger
629633 let onTriggerVisibleChange : null | ( ( newOpen : boolean ) => void ) ;
630634 if ( customizeRawInputElement ) {
@@ -695,22 +699,18 @@ const BaseSelect = React.forwardRef((props: BaseSelectProps, ref: React.Ref<Base
695699 onInternalSearch ( '' , false , false ) ;
696700 } ;
697701
698- const {
699- allowClear : mergedAllowClear ,
700- clearIcon : clearNode
701- } = useAllowClear (
702+ const { allowClear : mergedAllowClear , clearIcon : clearNode } = useAllowClear (
702703 prefixCls ,
703704 onClearMouseDown ,
704705 displayValues ,
705706 allowClear ,
706707 clearIcon ,
707708 disabled ,
708-
709+
709710 mergedSearchValue ,
710711 mode ,
711712 ) ;
712713
713-
714714 // =========================== OptionList ===========================
715715 const optionList = < OptionList ref = { listRef } /> ;
716716
@@ -736,7 +736,6 @@ const BaseSelect = React.forwardRef((props: BaseSelectProps, ref: React.Ref<Base
736736 prefixCls = { prefixCls }
737737 visible = { triggerOpen }
738738 popupElement = { optionList }
739- containerWidth = { containerWidth }
740739 animation = { animation }
741740 transitionName = { transitionName }
742741 dropdownStyle = { dropdownStyle }
0 commit comments