UNPKG

@mui/x-data-grid-pro

Version:

The Pro plan edition of the MUI X Data Grid components.

60 lines (59 loc) 1.82 kB
import { isObject } from '@mui/x-data-grid/internals'; import { GridFilterInputMultipleMultiSelect } from "../components/panel/filterPanel/GridFilterInputMultipleMultiSelect.mjs"; const parseObjectValue = value => { if (value == null || !isObject(value)) { return value; } return value.value; }; /** * Returns filter operators for the `multiSelect` column type. * Operators: contains, doesNotContain, isEmpty, isNotEmpty */ export const getGridMultiSelectOperators = () => [{ value: 'contains', getApplyFilterFn: filterItem => { if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) { return null; } const filterSet = new Set(filterItem.value.map(parseObjectValue)); return cellValue => { if (!Array.isArray(cellValue)) { return false; } return cellValue.some(val => filterSet.has(parseObjectValue(val))); }; }, InputComponent: GridFilterInputMultipleMultiSelect }, { value: 'doesNotContain', getApplyFilterFn: filterItem => { if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) { return null; } const filterSet = new Set(filterItem.value.map(parseObjectValue)); return cellValue => { if (!Array.isArray(cellValue)) { return true; } return !cellValue.some(val => filterSet.has(parseObjectValue(val))); }; }, InputComponent: GridFilterInputMultipleMultiSelect }, { value: 'isEmpty', getApplyFilterFn: () => { return cellValue => { return !cellValue || !Array.isArray(cellValue) || cellValue.length === 0; }; }, requiresFilterValue: false }, { value: 'isNotEmpty', getApplyFilterFn: () => { return cellValue => { return Array.isArray(cellValue) && cellValue.length > 0; }; }, requiresFilterValue: false }];