/* Copyright 2026 Marimo. All rights reserved. */ "use no memo"; import type { Column, Table } from "@tanstack/react-table"; import { PlusIcon } from "lucide-react"; import type { CalculateTopKRows } from "@/plugins/impl/DataTablePlugin"; import { Button } from "../ui/button"; import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover"; import { buildEditorSnapshot, editableColumns, FilterPillEditor, } from "./filter-pill-editor"; import type { Snapshot } from "./filters"; interface AddFilterButtonProps { table: Table; calculateTopKRows?: CalculateTopKRows; snapshot: Snapshot | null; onSnapshotChange: (snapshot: Snapshot | null) => void; } export const AddFilterButton = ({ table, calculateTopKRows, snapshot, onSnapshotChange, }: AddFilterButtonProps) => { const columns = editableColumns(table); if (columns.length === 0) { return null; } const handleOpenChange = (open: boolean) => { if (!open) { onSnapshotChange(null); return; } if (snapshot === null) { onSnapshotChange( buildEditorSnapshot(columns[0] as Column), ); } }; return ( {snapshot !== null && ( e.preventDefault()} onCloseAutoFocus={(e) => e.preventDefault()} > onSnapshotChange(null)} /> )} ); };