import React, {useEffect, useState} from 'react'; import {Dimensions} from 'react-native'; import {Icon, ListItem} from 'react-native-elements'; import {Column} from './Layout'; import {Text} from './Text'; import {Theme} from './styleUtils'; import testIDProps from '../../shared/commonUtil'; interface Picker extends React.VFC> { (props: PickerProps): ReturnType; } export const SetupPicker: Picker = (props: PickerProps) => { const [isContentVisible, setIsContentVisible] = useState(false); const [selectedIndex, setSelectedIndex] = useState(-1); useEffect(() => { setSelectedIndex( props.items.findIndex(({value}) => value === props.selectedValue), ); }, [props.selectedValue]); const toggleContent = () => setIsContentVisible(!isContentVisible); const selectItem = (index: number) => { setSelectedIndex(index); props.onValueChange(props.items[index].value, index); toggleContent(); }; return ( {props.items.map((item, index) => ( selectItem(index)} key={index}> {item.label} {selectedIndex === index ? ( ) : ( )} ))} ); }; interface PickerProps { testID?: string; items: PickerItem[]; selectedValue: T; onValueChange: (value: T, index: number) => void; } interface PickerItem { label: string; value: T; }