import { useCallback, useMemo, useState } from 'react';
import {
Keyboard,
ScrollView,
useWindowDimensions,
View,
type LayoutChangeEvent,
type LayoutRectangle,
type ViewStyle,
} from 'react-native';
import { Menu, TextInput, TouchableRipple } from 'react-native-paper';
import DropdownItem from './dropdown-item';
import DropdownInput from './dropdown-input';
import type { DropdownProps } from './types';
function Dropdown(props: DropdownProps) {
const [enable, setEnable] = useState(false);
const { height } = useWindowDimensions();
const {
options,
mode,
placeholder,
label,
menuUpIcon = ,
menuDownIcon = ,
value,
onSelect,
maxMenuHeight = height / 2.5,
menuContentStyle,
CustomDropdownItem = DropdownItem,
CustomDropdownInput = DropdownInput,
Touchable = TouchableRipple,
disabled = false,
} = props;
const selectedLabel = options.find((option) => option.value === value)?.label;
const [dropdownLayout, setDropdownLayout] = useState({
x: 0,
y: 0,
height: 0,
width: 0,
});
const rightIcon = enable ? menuUpIcon : menuDownIcon;
const toggleMenu = useCallback(() => {
Keyboard.dismiss();
setEnable(!enable);
}, [enable]);
const onLayout = useCallback(
({ nativeEvent: { layout } }: LayoutChangeEvent) => {
setDropdownLayout(layout);
},
[]
);
const menuStyle: ViewStyle = useMemo(
() => ({
width: dropdownLayout.width,
}),
[dropdownLayout.width]
);
return (
);
}
export default Dropdown;