UNPKG

@quidone/react-native-wheel-picker

Version:

Picker is a UI component for selecting an item from a list of options.

82 lines (79 loc) 2.51 kB
import type React from 'react'; import type {Faces} from './item/faces'; import type {Animated, StyleProp, TextStyle, ViewStyle} from 'react-native'; export type ListMethods = { scrollToIndex: (params: {index: number; animated: boolean}) => void; }; export type PickerItem<T> = { value: T; label?: string; } & Record<string, any>; export type KeyExtractor<ItemT extends PickerItem<any>> = ( item: ItemT, index: number, ) => string; // renders export type RenderItemProps<ItemT extends PickerItem<any>> = { item: ItemT; index: number; itemTextStyle: StyleProp<TextStyle> | undefined; }; export type RenderItem<ItemT extends PickerItem<any>> = ( props: RenderItemProps<ItemT>, ) => React.ReactElement | null; export type RenderItemContainerProps<ItemT extends PickerItem<any>> = { key?: string; item: ItemT; index: number; faces: ReadonlyArray<Faces>; renderItem: RenderItem<ItemT>; itemTextStyle: StyleProp<TextStyle> | undefined; }; export type RenderItemContainer<ItemT extends PickerItem<any>> = ( props: RenderItemContainerProps<ItemT>, ) => React.ReactElement; export type RenderPickerItem<ItemT extends PickerItem<any>> = (info: { key?: string; item: ItemT; index: number; }) => React.ReactElement; export type RenderListProps<ItemT extends PickerItem<any>> = { ref: React.RefObject<ListMethods>; data: ReadonlyArray<ItemT>; keyExtractor: KeyExtractor<ItemT>; renderItem: RenderPickerItem<ItemT>; itemHeight: number; pickerHeight: number; visibleItemCount: number; readOnly: boolean; initialIndex: number; scrollOffset: Animated.Value; onTouchStart: () => void; onTouchEnd: () => void; onTouchCancel: () => void; onScrollEnd: () => void; contentContainerStyle: StyleProp<ViewStyle> | undefined; } & Record<string, any>; export type RenderList<ItemT extends PickerItem<any>> = ( props: RenderListProps<ItemT>, ) => React.ReactElement; export type RenderOverlayProps = { itemHeight: number; pickerWidth: number | 'auto' | `${number}%`; pickerHeight: number; overlayItemStyle: StyleProp<ViewStyle> | undefined; }; export type RenderOverlay = ( props: RenderOverlayProps, ) => React.ReactElement | null; // events export type ValueChangingEvent<ItemT> = { item: ItemT; index: number; }; export type ValueChangedEvent<ItemT> = { item: ItemT; index: number; }; export type OnValueChanging<ItemT> = (event: ValueChangingEvent<ItemT>) => void; export type OnValueChanged<ItemT> = (event: ValueChangedEvent<ItemT>) => void;