Skip unknown values during filtering by default
Reviewed By: LukeDefeo Differential Revision: D51078471 fbshipit-source-id: b3a005f31eebd77e9ff77349640133032f4b0164
This commit is contained in:
committed by
Facebook GitHub Bot
parent
4bb0f59ab8
commit
3dc9cc5d3d
@@ -105,6 +105,10 @@ type DataTableBaseProps<T = any> = {
|
||||
* @default true
|
||||
*/
|
||||
enablePowerSearchWholeRowSearch?: boolean;
|
||||
/** If set to `true` and row[columnKey] is undefined, then it is going to pass filtering (search).
|
||||
* @default false
|
||||
*/
|
||||
treatUndefinedValuesAsMatchingFiltering?: boolean;
|
||||
};
|
||||
|
||||
const powerSearchConfigEntireRow: FieldConfig = {
|
||||
@@ -556,6 +560,7 @@ export function DataTable<T extends object>(
|
||||
computeDataTableFilter(
|
||||
tableState.searchExpression,
|
||||
dataTablePowerSearchOperatorProcessorConfig,
|
||||
props.treatUndefinedValuesAsMatchingFiltering,
|
||||
),
|
||||
);
|
||||
dataView.setFilterExpections(
|
||||
@@ -914,6 +919,7 @@ DataTable.defaultProps = {
|
||||
enablePersistSettings: true,
|
||||
onRenderEmpty: undefined,
|
||||
enablePowerSearchWholeRowSearch: true,
|
||||
treatUndefinedValuesAsMatchingFiltering: false,
|
||||
} as Partial<DataTableProps<any>>;
|
||||
|
||||
/* eslint-disable react-hooks/rules-of-hooks */
|
||||
|
||||
@@ -508,6 +508,7 @@ export function getValueAtPath(obj: Record<string, any>, keyPath: string): any {
|
||||
export function computeDataTableFilter(
|
||||
searchExpression: SearchExpressionTerm[] | undefined,
|
||||
powerSearchProcessors: PowerSearchOperatorProcessorConfig,
|
||||
treatUndefinedValuesAsMatchingFiltering: boolean = false,
|
||||
) {
|
||||
return function dataTableFilter(item: any) {
|
||||
if (!searchExpression || !searchExpression.length) {
|
||||
@@ -518,12 +519,7 @@ export function computeDataTableFilter(
|
||||
? item
|
||||
: getValueAtPath(item, searchTerm.field.key);
|
||||
if (!value) {
|
||||
console.warn(
|
||||
'computeDataTableFilter -> value at searchTerm.field.key is not recognized',
|
||||
searchTerm,
|
||||
item,
|
||||
);
|
||||
return true;
|
||||
return treatUndefinedValuesAsMatchingFiltering;
|
||||
}
|
||||
|
||||
const processor =
|
||||
|
||||
Reference in New Issue
Block a user