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 (
);
};