/*
    Предрейсовые осмотры - мобильное приложение
    Компонент списка элементов меню
*/

//---------------------
//Подключение библиотек
//---------------------

const React = require('react'); //React
const { ScrollView, View } = require('react-native'); //Базовые компоненты
const MenuItem = require('./MenuItem'); //Элемент меню
const EmptyMenu = require('./EmptyMenu'); //Пустое меню
const MenuDivider = require('./MenuDivider'); //Разделитель меню
const styles = require('../../styles/menu/MenuList.styles'); //Стили списка меню

//-----------
//Тело модуля
//-----------

//Список элементов меню
function MenuList({ items = [], onClose, style }) {
    const handleItemPress = React.useCallback(
        item => {
            if (typeof onClose === 'function') {
                onClose();
            }
            if (typeof item.onPress === 'function') {
                item.onPress();
            }
        },
        [onClose]
    );

    if (!Array.isArray(items) || items.length === 0) {
        return <EmptyMenu />;
    }

    return (
        <ScrollView style={[styles.scrollView, style]} showsVerticalScrollIndicator={false} bounces={false}>
            {items.map((item, index) => (
                <View key={item.id || `menu-item-${index}`}>
                    <MenuItem
                        title={item.title}
                        icon={item.icon}
                        onPress={() => handleItemPress(item)}
                        isDestructive={item.isDestructive}
                        disabled={item.disabled}
                        style={item.style}
                        textStyle={item.textStyle}
                    />
                    {item.showDivider && index < items.length - 1 && <MenuDivider />}
                </View>
            ))}
        </ScrollView>
    );
}

//----------------
//Интерфейс модуля
//----------------

module.exports = MenuList;
