@@ -28,24 +28,44 @@ type Properties<T extends FieldValues> = {
28
28
placeholder ?: string ;
29
29
field ?: ControllerRenderProps < T , FieldPath < T > > ;
30
30
className ?: string ;
31
+ isCustomValueContainer ?: boolean ;
31
32
} ;
32
33
33
- const getClassNames = (
34
- isMenuOpen : boolean ,
35
- ) : ClassNamesConfig < SelectOption , false , GroupBase < SelectOption > > => ( {
36
- container : ( ) => styles . container ,
37
- control : ( ) => styles . control ,
38
- option : ( ) => styles . option ,
39
- menu : ( ) => styles . singleValue ,
40
- placeholder : ( ) => styles . placeholder ,
41
- singleValue : ( ) => styles . singleValue ,
42
- valueContainer : ( ) => styles . valueContainer ,
43
- dropdownIndicator : ( ) =>
44
- isMenuOpen
45
- ? getValidClassNames ( styles . dropdownIndicator , styles . upside )
46
- : styles . dropdownIndicator ,
47
- indicatorSeparator : ( ) => styles . indicatorSeparator ,
48
- } ) ;
34
+ type GetClassNamesArguments = {
35
+ isMenuOpen : boolean ;
36
+ isCustomValueContainer : boolean ;
37
+ } ;
38
+
39
+ const getClassNames = ( {
40
+ isMenuOpen,
41
+ isCustomValueContainer,
42
+ } : GetClassNamesArguments ) : ClassNamesConfig <
43
+ SelectOption ,
44
+ false ,
45
+ GroupBase < SelectOption >
46
+ > => {
47
+ const commonStylesConfig : ClassNamesConfig <
48
+ SelectOption ,
49
+ false ,
50
+ GroupBase < SelectOption >
51
+ > = {
52
+ container : ( ) => styles . container ,
53
+ control : ( ) => styles . control ,
54
+ option : ( ) => styles . option ,
55
+ menu : ( ) => styles . singleValue ,
56
+ placeholder : ( ) => styles . placeholder ,
57
+ singleValue : ( ) => styles . singleValue ,
58
+ dropdownIndicator : ( ) =>
59
+ isMenuOpen
60
+ ? getValidClassNames ( styles . dropdownIndicator , styles . upside )
61
+ : styles . dropdownIndicator ,
62
+ indicatorSeparator : ( ) => styles . indicatorSeparator ,
63
+ } ;
64
+
65
+ return isCustomValueContainer
66
+ ? commonStylesConfig
67
+ : { ...commonStylesConfig , valueContainer : ( ) => styles . valueContainer } ;
68
+ } ;
49
69
50
70
const Dropdown = < T extends FieldValues > ( {
51
71
options,
@@ -56,6 +76,7 @@ const Dropdown = <T extends FieldValues>({
56
76
onChange,
57
77
className,
58
78
placeholder,
79
+ isCustomValueContainer = false ,
59
80
} : Properties < T > ) : JSX . Element => {
60
81
const [ isMenuOpen , setIsMenuOpen ] = useState ( false ) ;
61
82
@@ -68,8 +89,8 @@ const Dropdown = <T extends FieldValues>({
68
89
} , [ ] ) ;
69
90
70
91
const classNamesConfig = useMemo (
71
- ( ) => getClassNames ( isMenuOpen ) ,
72
- [ isMenuOpen ] ,
92
+ ( ) => getClassNames ( { isMenuOpen, isCustomValueContainer } ) ,
93
+ [ isMenuOpen , isCustomValueContainer ] ,
73
94
) ;
74
95
75
96
const findOptionByValue = (
0 commit comments