import React, { PureComponent } from 'react'; import { type OperatorValue as FilterOperatorValue, type TypeValue as FilterTypeValue } from '@deephaven/filters'; import { type Formatter, TableUtils, type SortDirection } from '@deephaven/jsapi-utils'; import { type CancelablePromise } from '@deephaven/utils'; import type { dh } from '@deephaven/jsapi-types'; import './AdvancedFilterCreator.scss'; import type IrisGridModel from './IrisGridModel'; import { type AdvancedFilterOptions } from './CommonTypes'; type FilterChangeHandler = (selectedType: FilterTypeValue, value: string) => void; interface AdvancedFilterCreatorProps { model: IrisGridModel; column: dh.Column; onFilterChange: (column: dh.Column, filter: dh.FilterCondition | null, options: AdvancedFilterOptions) => void; onSortChange: (column: dh.Column, direction: SortDirection, addToExisting?: boolean) => void; onDone: () => void; options: AdvancedFilterOptions; sortDirection: SortDirection; formatter: Formatter; tableUtils: TableUtils; isMaximized: boolean; onToggleMaximize: () => void; } interface AdvancedFilterItem { selectedType?: FilterTypeValue; value?: string; key: string; } interface AdvancedFilterCreatorState { filterItems: AdvancedFilterItem[]; filterOperators: FilterOperatorValue[]; invertSelection: boolean; selectedValues: unknown[]; valuesTableError: null; valuesTable?: dh.Table; isSortable: boolean; } declare class AdvancedFilterCreator extends PureComponent { static debounceFilterUpdate: number; static defaultProps: { options: { filterItems: null; filterOperators: null; invertSelection: boolean; selectedValues: never[]; }; sortDirection: null; }; static makeFilterItem(): AdvancedFilterItem; constructor(props: AdvancedFilterCreatorProps); componentDidMount(): void; componentWillUnmount(): void; focusTrapContainer: React.RefObject; debounceTimeout?: ReturnType; valuesTablePromise?: CancelablePromise; getFilterChangeHandler(index: number): FilterChangeHandler; getFilterDeleteHandler(index: number): () => void; getFilterTypes: (columnType: string) => FilterTypeValue[]; initValuesTable(): void; handleFocusTrapEnd(): void; handleFocusTrapStart(): void; handleAddAnd(): void; handleAddOr(): void; handleChangeFilterOperator(index: number, operator: string): void; handleFilterChange(filterIndex: number, selectedType: FilterTypeValue, value: string): void; handleFilterDelete(filterIndex: number): void; handleSelectValueChange(selectedValues: unknown[], invertSelection: boolean): void; handleReset(): void; handleSortDown(event: React.MouseEvent): void; handleSortUp(event: React.MouseEvent): void; handleSubmit(event: React.FormEvent): void; handleDone(event: React.MouseEvent): void; handleUpdateTimeout(): void; /** * Convenience function to check if the previous filter has been inputted, and * we should show the add filter buttons (+ AND OR) * @returns true If the add filter buttons should be shown, false otherwise */ shouldShowAddFilter(): boolean; /** * Sorts the table in the specified direction. If already sorted in that direction, remove it. * @param direction The sort direction, ASC or DESC * @param addToExisting Add to the existing sort, or replace the existing table sort */ sortTable(direction: SortDirection, addToExisting?: boolean): void; startUpdateTimer(): void; stopUpdateTimer(): void; sendUpdate(): void; render(): JSX.Element; } export default AdvancedFilterCreator; //# sourceMappingURL=AdvancedFilterCreator.d.ts.map