11import * as React from 'react' ;
2- import {
3- Picker as RNPicker ,
4- PickerProps as RNPickerProps ,
5- View ,
6- } from 'react-native' ;
7- import { DeepPartial } from 'ts-essentials' ;
2+ import { Picker as RNPicker , PickerProps as RNPickerProps } from 'react-native' ;
83
9- import { Icon } from '../../icons' ;
104import { ThemeContext } from '../../theme' ;
11- import { mergeStyles , ReplaceReturnType } from '../../utils/mergeStyles' ;
12- import {
13- GetNativePickerStyles ,
14- getNativePickerStyles ,
15- NativePickerSize ,
16- NativePickerStyles ,
17- } from './NativePicker.styles' ;
5+ import { mergeStyles } from '../../utils/mergeStyles' ;
6+ import { GetPickerButtonStylesProp } from './PickerButton' ;
7+ import { getPickerButtonStyles , PickerButtonSize } from './PickerButton.styles' ;
8+ import PickerButtonWrapper from './PickerButtonWrapper' ;
189
1910export interface NativePickerProps extends RNPickerProps {
20- size ?: NativePickerSize ;
11+ size ?: PickerButtonSize ;
2112 innerRef ?: React . Ref < RNPicker > ;
2213 rightIcon ?: React . ReactNode ;
2314 /**
2415 * Inline styles for components
2516 */
26- getStyles ?: ReplaceReturnType <
27- GetNativePickerStyles ,
28- DeepPartial < NativePickerStyles >
29- > ;
17+ getStyles ?: GetPickerButtonStylesProp ;
3018}
3119
3220const NativePickerBase = ( props : NativePickerProps ) => {
@@ -39,31 +27,20 @@ const NativePickerBase = (props: NativePickerProps) => {
3927 } = props ;
4028 const theme = React . useContext ( ThemeContext ) ;
4129
42- const {
43- containerStyle,
44- rightContainerStyle,
45- pickerStyle,
46- itemStyle,
47- } = mergeStyles ( getNativePickerStyles , getStyles ) ( { size } , theme ) ;
30+ const { pickerStyle, itemStyle } = mergeStyles (
31+ getPickerButtonStyles ,
32+ getStyles ,
33+ ) ( { size } , theme ) ;
4834
4935 return (
50- < View style = { containerStyle } >
36+ < PickerButtonWrapper getStyles = { getStyles } >
5137 < RNPicker
5238 ref = { innerRef }
5339 itemStyle = { itemStyle }
5440 style = { pickerStyle }
5541 { ...pickerProps }
5642 />
57- < View style = { rightContainerStyle } >
58- { rightIcon || (
59- < Icon
60- name = "chevron-down"
61- size = { 32 }
62- color = { theme . colors . text . default }
63- />
64- ) }
65- </ View >
66- </ View >
43+ </ PickerButtonWrapper >
6744 ) ;
6845} ;
6946
0 commit comments