"use client"; import { FC, useState, useEffect } from "react"; import { Box, Grid, Tooltip } from "@mui/material"; import { DataGridPro, GridColDef } from "@mui/x-data-grid-pro"; import { useLeafcutterContext } from "./LeafcutterProvider"; interface QueryListSelectorProps { title: string; keyName: string; values: any; width: number; } export const QueryListSelector: FC = ({ title, keyName, values, width, }) => { const [selectionModel, setSelectionModel] = useState([] as any[]); const { colors: { leafcutterLightBlue, pink, leafcutterElectricBlue, warningPink }, typography: { small }, query, updateQuery, } = useLeafcutterContext(); const isExclude = query?.[keyName]?.queryType === "exclude"; const columns: GridColDef[] = [ { field: "value", renderHeader: () => ( {title} ), renderCell: ({ value, row }) => ( {value} ), editable: false, flex: 1, }, ]; const rows = Object.keys(values).map((k) => ({ id: k, value: values[k].display, description: values[k].description, category: values[k].category, })); useEffect(() => { if (!query) return; setSelectionModel(query[keyName].values); }, [query, keyName, setSelectionModel]); return ( { setSelectionModel(newSelectionModel as any); updateQuery({ [keyName]: { values: newSelectionModel }, }); }} rowSelectionModel={selectionModel} /> ); };