@react-native-picker/picker
Version:
React Native Picker for iOS, Android, macOS, and Windows
148 lines (140 loc) • 3.98 kB
TypeScript
import * as React from 'react';
import type {
TextStyle,
StyleProp,
ViewProps,
NativeSyntheticEvent,
TargetedEvent,
ColorValue,
} from 'react-native';
import { processColor } from 'react-native';
export type ItemValue = number | string | object;
export interface PickerItemProps<T = ItemValue> {
label?: string;
value?: T;
color?: string;
fontFamily?: string;
testID?: string;
/**
* Style to apply to individual item labels.
* Only following values take effect:
* - 'color'
* - 'backgroundColor'
* - 'fontSize'
* - 'fontFamily'
*
* The 'fontFamily' value expects the font file (.ttf) to be present in the "assets/fonts" directory
*
* @platform android
*/
style?: StyleProp<TextStyle>;
/**
* If set to false, the specific item will be disabled, i.e. the user will not be able to make a
* selection.
* @default true
* @platform android | web
*/
enabled?: boolean;
}
export interface PickerProps<T = ItemValue> extends ViewProps {
style?: StyleProp<TextStyle>;
/**
* Value matching value of one of the items. Can be a string or an integer.
*/
selectedValue?: T;
/**
* Callback for when an item is selected. This is called with the following parameters:
* - `itemValue`: the `value` prop of the item that was selected
* - `itemIndex`: the index of the selected item in this picker
*/
onValueChange?: (itemValue: T, itemIndex: number) => void;
/**
* If set to false, the picker will be disabled, i.e. the user will not be able to make a
* selection.
* @platform android
*/
enabled?: boolean;
/**
* On Android, specifies how to display the selection items when the user taps on the picker:
*
* - 'dialog': Show a modal dialog. This is the default.
* - 'dropdown': Shows a dropdown anchored to the picker view
*
* @platform android
*/
mode?: 'dialog' | 'dropdown';
/**
* Style to apply to each of the item labels.
* @platform ios
*/
itemStyle?: StyleProp<TextStyle>;
/**
* Color to apply to the selection indicator.
* @platform ios
*/
selectionColor?: ColorValue;
/**
* Prompt string for this picker, used on Android in dialog mode as the title of the dialog.
* @platform android
*/
prompt?: string;
/**
* Used to locate this view in end-to-end tests.
*/
testID?: string;
/**
* Color of arrow for spinner dropdown in hexadecimal format
* @platform android
*/
dropdownIconColor?: number | ColorValue;
/**
* Ripple color of spinner's arrow
* @platform android
*/
dropdownIconRippleColor?: number | ColorValue;
/**
* On Android & iOS, used to truncate the text with an ellipsis after computing the text layout, including line wrapping,
* such that the total number of lines does not exceed this number. Default is '1'
* @platform android & iOS
*/
numberOfLines?: number;
/**
* The string used for the accessibility label. Will be read once focused on the picker but not on change.
*/
accessibilityLabel?: string;
/**
* Placeholder string for this picker, used on Windows if no item has been selected.
* @platform windows
*/
placeholder?: string;
/**
* Called when picker is focused
* @platform android
*/
onFocus?: (e: NativeSyntheticEvent<TargetedEvent>) => void;
/**
* Called when picker is blurred
* @platform android
*/
onBlur?: (e: NativeSyntheticEvent<TargetedEvent>) => void;
}
declare class Picker<T> extends React.Component<PickerProps<T>, {}> {
/**
* On Android, display the options in a dialog (this is the default).
*/
static readonly MODE_DIALOG: 'dialog';
/**
* On Android, display the options in a dropdown.
*/
static readonly MODE_DROPDOWN: 'dropdown';
static Item: React.ComponentType<PickerItemProps<T>>;
/**
* @platform android
*/
focus: () => void;
/**
* @platform android
*/
blur: () => void;
}
export { Picker };