import * as React from 'react'; import { GridFilterItem } from './gridFilterItem'; import type { GridColDef } from './colDef/gridColDef'; import type { GridValidRowModel } from './gridRows'; import type { GridApiCommunity } from './api/gridApiCommunity'; type ApplyFilterFn = (value: V, row: R, column: GridColDef, apiRef: React.MutableRefObject) => boolean; export type GetApplyFilterFn = (filterItem: GridFilterItem, column: GridColDef) => null | ApplyFilterFn; /** * Filter operator definition interface. * @demos * - [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator) */ export interface GridFilterOperator { /** * The label of the filter operator. */ label?: string; /** * The label of the filter shown in header filter row. */ headerLabel?: string; /** * The name of the filter operator. * It will be matched with the `operator` property of the filter items. */ value: string; /** * The callback that generates a filtering function for a given filter item and column. * This function can return `null` to skip filtering for this item and column. * @param {GridFilterItem} filterItem The filter item with which we want to filter the column. * @param {GridColDef} column The column from which we want to filter the rows. * @returns {null | ApplyFilterFn} The function to call to check if a row pass this filter item or not. */ getApplyFilterFn: GetApplyFilterFn; /** * The input component to render in the filter panel for this filter operator. */ InputComponent?: React.JSXElementConstructor; /** * The props to pass to the input component in the filter panel for this filter operator. */ InputComponentProps?: Record; /** * Converts the value of a filter item to a human-readable form. * @param {GridFilterItem['value']} value The filter item value. * @returns {string} The value formatted to be displayed in the UI of filter button tooltip. */ getValueAsString?: (value: GridFilterItem['value']) => string; /** * If `false`, filter operator doesn't require user-entered value to work. * Usually should be set to `false` for filter operators that don't have `InputComponent` (for example `isEmpty`) * @default true */ requiresFilterValue?: boolean; } export {};