import { FilterDescriptor as KendoFilterDescriptor } from "@progress/kendo-data-query";
import { Filter as KendoFilter } from "@progress/kendo-react-data-tools";

export interface CompositeFilterDescriptor {
  logic: "or" | "and";
  filters: Array<KendoFilterDescriptor | CompositeFilterDescriptor>;
}

export interface FieldSettings {
  filter: any;
  label: string;
  max?: number;
  min?: number;
  name: string;
  operators: FilterOperator[];
}

export interface FilterOperator {
  operator: any;
  text: string;
}

export interface FilterChangeEvent {
  filter: CompositeFilterDescriptor;
  nativeEvent: any;
  syntheticEvent: React.SyntheticEvent<any>;
  target: KendoFilter;
}

export interface FilterProps {
  dataTestId?: string;
  id?: string;
  ariaLabel?: string;
  ariaLabelExpression?: string;
  ariaLabelGroup?: string;
  className?: string;
  defaultGroupFilter?: CompositeFilterDescriptor;
  fields: FieldSettings[];
  style?: React.CSSProperties;
  value: CompositeFilterDescriptor;
  onChange: (event: FilterChangeEvent) => void;
}
