import React, { useState, useEffect, ReactNode } from "react"; import { FlatList, FlatListProps } from "react-native"; import LineRule from "./LineRule"; import SearchBar from "./SearchBar"; import Text from "./Text"; import View from "./View"; export default function List({ name, items, renderItem, onSearch, bordered = true, headerExtra, }: { name: string; // eslint-disable-next-line @typescript-eslint/no-explicit-any items: FlatListProps["data"]; // eslint-disable-next-line @typescript-eslint/no-explicit-any renderItem: FlatListProps["renderItem"]; onSearch: (query: string) => void; bordered?: boolean; headerExtra?: ReactNode; }) { const [searchQuery, setSearchQuery] = useState(""); useEffect(() => { onSearch(searchQuery.toLowerCase()); }, [searchQuery]); useEffect(() => { setSearchQuery(""); }, [name]); const border = bordered ? : null; return ( id} ListEmptyComponent={ } ListHeaderComponent={ {headerExtra} } ListFooterComponent={border} ItemSeparatorComponent={() => border} contentContainerStyle={{ paddingBottom: 32 }} stickyHeaderIndices={[0]} /> ); }