import React, { useState } from 'react'; import { View, Modal, StyleSheet, Text, ScrollView, Dimensions, Platform } from 'react-native'; import RNPickerSelect from 'react-native-picker-select'; import { FontAwesome } from '@expo/vector-icons'; import { useColors } from '../common/colors'; import { ThemeButton, ThemeText } from '../common/ThemeTypes'; import { getDefaultFilter } from '../utils/getDefaultFilter'; const categories = { class: 'Klasse', room: 'Raum', teacher: 'Lehrer' }; type FilterModalTypes = { filter?: any; setFilter?: (date: any) => void; userInformation: any; baseData: any; }; const FilterModal = ({ filter, setFilter, userInformation, baseData }: FilterModalTypes) => { const colors = useColors(); const [tempFilter, setTempFilter] = useState(filter); const [showFilterModal, setShowFilterModal] = useState(false); const screenHeight = Dimensions.get('window').height; const styles = StyleSheet.create({ modalOverlay: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'rgba(0, 0, 0, 0.5)', }, modalView: { margin: 20, backgroundColor: colors.backSecondary, borderRadius: 20, width: '80%', maxHeight: screenHeight * 0.8, padding: 20, borderWidth: 5, borderColor: colors.backSecondary, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.25, shadowRadius: 4, elevation: 5, }, modalSubtitle: { fontSize: 16, marginTop: 20, marginBottom: 10, }, picker: { color: colors.text, backgroundColor: colors.backPrimary, }, pickerDisabled: { color: colors.backPrimary, backgroundColor: colors.backSecondary, borderColor: colors.backPrimary, }, modalButtons: { flexDirection: 'row', justifyContent: 'space-between', marginTop: 20, }, scrollView: { flex: 1, }, }); const renderFilterModal = () => ( setFilter(tempFilter)} > Kriterium { setTempFilter(prevState => ({ ...prevState, type: itemValue, value: null })); }} items={Object.keys(baseData).map(item => ({ label: categories[item], value: item, }))} placeholder={{}} /> {tempFilter.type && ( Suchbegriff { setTempFilter(prevState => ({ ...prevState, value: itemValue })); }} items={baseData[tempFilter.type].map(item => ({ label: item.name, value: item.id, }))} placeholder={{}} /> )} Gruppe { setTempFilter(prevState => ({ ...prevState, group: itemValue })); }} disabled={tempFilter.type !== "class"} items={[ { label: '1', value: '1' }, { label: '2', value: '2' } ]} placeholder={{}} /> setTempFilter(getDefaultFilter(userInformation))}> Zurücksetzen { setFilter(tempFilter); setShowFilterModal(false); }} disabled={!Boolean(tempFilter.value) || (tempFilter.type === 'class' && !Boolean(tempFilter.value))} > Anwenden ); return ( <> { setTempFilter(filter); setShowFilterModal(true); }}> {renderFilterModal()} ); }; export default FilterModal;