//@ts-nocheck import React, { MutableRefObject, useCallback, useEffect, useRef, useState } from 'react' import { FlatList, Image, Modal, Text, TouchableOpacity, TouchableWithoutFeedback, View, } from 'react-native' import R from '../../res' import Separator from '../separator/Separator' import DropdownListItem from './DropdownListItem' import { DropdownStyles as s } from './styles' import { IDropdownItem, IDropdownProps } from './types' const Dropdown = ({ items, selectedOption, onSelectItem, styles }: IDropdownProps) => { const [isModalVisible, setIsModalVisible] = useState(false) const flatListRef: MutableRefObject = useRef() const showModal = () => { requestAnimationFrame(() => { setIsModalVisible(true) }) } const hideModal = () => { requestAnimationFrame(() => { setIsModalVisible(false) }) } const handleOnSelectItem = (item: IDropdownItem) => { onSelectItem(item) hideModal() } useEffect(() => { if (flatListRef?.current) { flatListRef.current.flashScrollIndicators() } }, [isModalVisible]) const renderItem = useCallback( ({ item }) => ( ), [handleOnSelectItem, selectedOption] ) const keyExtractor = useCallback((item: IDropdownItem) => item.value.toString(), []) const renderSeparator = useCallback(() => , []) const getItemLayout = useCallback( (data, index) => ({ length: 45, offset: 45 * index, index, }), [] ) return ( {selectedOption?.label} {isModalVisible && items.length > 0 && ( )} ) } export default Dropdown