import { EuiFilterButton, EuiFilterButtonProps, EuiFilterGroup, EuiFilterSelectItem, EuiPopover } from "@elastic/eui"; import React, { useState } from "react"; export interface IFilterGroupProps { options: { label: string }[]; value?: string[]; filterButtonProps?: EuiFilterButtonProps; onChange?: (val: IFilterGroupProps["value"]) => void; } export default function FilterGroup({ options, value, filterButtonProps, onChange }: IFilterGroupProps) { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const onButtonClick = () => { setIsPopoverOpen(!isPopoverOpen); }; const closePopover = () => { setIsPopoverOpen(false); }; return ( } isOpen={isPopoverOpen} closePopover={closePopover} panelPaddingSize="none" >
{options.map((item, index) => ( { const findIndex = (value || []).findIndex((valueItem) => valueItem === item.label); const finalValue = value || []; if (findIndex > -1) { finalValue.splice(findIndex, 1); } else { finalValue.push(item.label); } onChange?.([...finalValue]); }} > {item.label} ))}
); }