import React from "react"; import {gql, useQuery} from "@apollo/client"; import {Text} from "@chakra-ui/layout"; import {Checkbox, Grid, GridItem, SimpleGrid, Stack, Tag, TagLabel} from "@chakra-ui/react"; function MultipleSelect(props: any) { const { displayColumns, tableName, cols, placeholder, OnChange, defaultValues, returnColumn } = props; // create a function to generate graphql query const generateQuery = (tableName: string, cols: Array) => { let query = `query { ${tableName} { ${cols.join("\n")} } }`; return query; }; let getQuery = generateQuery(tableName, cols); let theQuery = gql` ${getQuery} `; const {data, loading, error} = useQuery(theQuery); if (loading) { return
Loading...
; } if (error) { console.log("error ", error); return
Error...
; } if (!data) { return No data; } let categories = data[tableName]?.map((item: any) => { return item.category; }) categories = Array.from(new Set(categories)) return ( {categories?.map((category: any, catIndex:number) => { let categoryItems = data[tableName]?.filter((item: any) => item.category === category) return ( {category} {categoryItems?.map((item: any, itemIndex: number) => ( {item.color ? {item.name} : {item.name} } { let onChangeValues = defaultValues? JSON.parse(defaultValues) :[]; if (!e.target.checked) { onChangeValues = onChangeValues?.filter((val: any) => val !== item.id) } else { onChangeValues.push(item.id) } onChangeValues = JSON.stringify(onChangeValues) OnChange(onChangeValues); }} /> ))} ) }) } ); } export default MultipleSelect;