import { View } from "react-native"; import { TableControls } from "@/components/shared/TableControls"; import { AddTodoControls } from "@/components/features/todos/AddTodoControls"; import { CombinedFilterMenu, CombinedFilterSection, } from "@/components/shared/filters/CombinedFilterMenu"; import { SelectedFilterChips, SelectedChip, } from "@/components/shared/filters/SelectedFilterChips"; import { TodoStatus, TodoStatusLabels, TodoStatusColors, } from "@/constants/todoStatusEnum"; import { PriorityStatus, PriorityStatusLabels, } from "@/constants/priorityStatusEnum"; import { PriorityIndicator } from "@/components/ui/PriorityIndicator"; interface AdminTodoTableControlsProps { searchQuery: string; menuVisible: boolean; menuAnchor: { x: number; y: number }; selectedStatuses: TodoStatus[]; selectedPriorities: PriorityStatus[]; onSearch: (query: string) => void; onMenuDismiss: () => void; onItemsPerPageChange: (value: number) => void; onSelectStatuses: (statuses: TodoStatus[]) => void; onSelectPriorities: (priorities: PriorityStatus[]) => void; onAddTodo: () => void; itemsPerPage: number; } export const AdminTodosTableControls = ({ searchQuery, menuVisible, menuAnchor, selectedStatuses = [], selectedPriorities = [], onSearch, onMenuDismiss, onItemsPerPageChange, onSelectStatuses, onSelectPriorities, onAddTodo, itemsPerPage = 25, }: AdminTodoTableControlsProps) => { const renderFilterComponent = () => { const sections: CombinedFilterSection[] = []; const statusOptions = Object.values(TodoStatus).map((status) => ({ value: status, label: TodoStatusLabels[status], icon: ( ), })); sections.push({ key: "status", title: "Status", options: statusOptions, selected: selectedStatuses, onChange: (values) => onSelectStatuses(values as TodoStatus[]), }); const priorityOptions = Object.values(PriorityStatus).map((priority) => ({ value: priority, label: PriorityStatusLabels[priority], icon: , })); sections.push({ key: "priority", title: "Priority", options: priorityOptions, selected: selectedPriorities, onChange: (values) => onSelectPriorities(values as PriorityStatus[]), }); const chips: SelectedChip[] = []; selectedStatuses.forEach((status) => chips.push({ key: `status-${status}`, label: TodoStatusLabels[status], onRemove: () => onSelectStatuses(selectedStatuses.filter((s) => s !== status)), }) ); selectedPriorities.forEach((priority) => chips.push({ key: `priority-${priority}`, label: PriorityStatusLabels[priority], onRemove: () => onSelectPriorities(selectedPriorities.filter((p) => p !== priority)), }) ); return ( { onSelectStatuses([]); onSelectPriorities([]); }} /> ); }; const renderFilterChips = () => { const chips: SelectedChip[] = []; selectedStatuses.forEach((status) => chips.push({ key: `status-${status}`, label: TodoStatusLabels[status], onRemove: () => onSelectStatuses(selectedStatuses.filter((s) => s !== status)), }) ); selectedPriorities.forEach((priority) => chips.push({ key: `priority-${priority}`, label: PriorityStatusLabels[priority], onRemove: () => onSelectPriorities(selectedPriorities.filter((p) => p !== priority)), }) ); return chips.length > 0 ? : null; }; const renderActionButtons = () => ; return ( ); };