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
|
* @default true
|
||||||
*/
|
*/
|
||||||
enablePowerSearchWholeRowSearch?: boolean;
|
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 = {
|
const powerSearchConfigEntireRow: FieldConfig = {
|
||||||
@@ -556,6 +560,7 @@ export function DataTable<T extends object>(
|
|||||||
computeDataTableFilter(
|
computeDataTableFilter(
|
||||||
tableState.searchExpression,
|
tableState.searchExpression,
|
||||||
dataTablePowerSearchOperatorProcessorConfig,
|
dataTablePowerSearchOperatorProcessorConfig,
|
||||||
|
props.treatUndefinedValuesAsMatchingFiltering,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
dataView.setFilterExpections(
|
dataView.setFilterExpections(
|
||||||
@@ -914,6 +919,7 @@ DataTable.defaultProps = {
|
|||||||
enablePersistSettings: true,
|
enablePersistSettings: true,
|
||||||
onRenderEmpty: undefined,
|
onRenderEmpty: undefined,
|
||||||
enablePowerSearchWholeRowSearch: true,
|
enablePowerSearchWholeRowSearch: true,
|
||||||
|
treatUndefinedValuesAsMatchingFiltering: false,
|
||||||
} as Partial<DataTableProps<any>>;
|
} as Partial<DataTableProps<any>>;
|
||||||
|
|
||||||
/* eslint-disable react-hooks/rules-of-hooks */
|
/* eslint-disable react-hooks/rules-of-hooks */
|
||||||
|
|||||||
@@ -508,6 +508,7 @@ export function getValueAtPath(obj: Record<string, any>, keyPath: string): any {
|
|||||||
export function computeDataTableFilter(
|
export function computeDataTableFilter(
|
||||||
searchExpression: SearchExpressionTerm[] | undefined,
|
searchExpression: SearchExpressionTerm[] | undefined,
|
||||||
powerSearchProcessors: PowerSearchOperatorProcessorConfig,
|
powerSearchProcessors: PowerSearchOperatorProcessorConfig,
|
||||||
|
treatUndefinedValuesAsMatchingFiltering: boolean = false,
|
||||||
) {
|
) {
|
||||||
return function dataTableFilter(item: any) {
|
return function dataTableFilter(item: any) {
|
||||||
if (!searchExpression || !searchExpression.length) {
|
if (!searchExpression || !searchExpression.length) {
|
||||||
@@ -518,12 +519,7 @@ export function computeDataTableFilter(
|
|||||||
? item
|
? item
|
||||||
: getValueAtPath(item, searchTerm.field.key);
|
: getValueAtPath(item, searchTerm.field.key);
|
||||||
if (!value) {
|
if (!value) {
|
||||||
console.warn(
|
return treatUndefinedValuesAsMatchingFiltering;
|
||||||
'computeDataTableFilter -> value at searchTerm.field.key is not recognized',
|
|
||||||
searchTerm,
|
|
||||||
item,
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const processor =
|
const processor =
|
||||||
|
|||||||
Reference in New Issue
Block a user