Expose removing filters programatically
Summary: Project: https://docs.google.com/document/d/1SbFrpvfIShX5npANNa1AkgHliR1M-VMLW5Q9RhREt94/edit Reviewed By: antonk52 Differential Revision: D45394864 fbshipit-source-id: d2c140d542eaee157cbad5b6a0f29fc62f73a18b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
647bc06f3a
commit
424985a75a
@@ -99,8 +99,16 @@ type DataManagerActions<T> =
|
|||||||
'addColumnFilter',
|
'addColumnFilter',
|
||||||
{column: keyof T; value: string; disableOthers?: boolean}
|
{column: keyof T; value: string; disableOthers?: boolean}
|
||||||
>
|
>
|
||||||
| Action<'removeColumnFilter', {column: keyof T; index: number}>
|
| Action<
|
||||||
| Action<'toggleColumnFilter', {column: keyof T; index: number}>
|
'removeColumnFilter',
|
||||||
|
| {column: keyof T; index: number; value?: never}
|
||||||
|
| {column: keyof T; index?: never; value: string}
|
||||||
|
>
|
||||||
|
| Action<
|
||||||
|
'toggleColumnFilter',
|
||||||
|
| {column: keyof T; index: number; value?: never}
|
||||||
|
| {column: keyof T; index?: never; value: string}
|
||||||
|
>
|
||||||
| Action<'setColumnFilterInverse', {column: keyof T; inversed: boolean}>
|
| Action<'setColumnFilterInverse', {column: keyof T; inversed: boolean}>
|
||||||
| Action<'setColumnFilterFromSelection', {column: keyof T}>
|
| Action<'setColumnFilterFromSelection', {column: keyof T}>
|
||||||
| Action<'appliedInitialScroll'>
|
| Action<'appliedInitialScroll'>
|
||||||
@@ -277,15 +285,28 @@ export const dataTableManagerReducer = produce<
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'removeColumnFilter': {
|
case 'removeColumnFilter': {
|
||||||
draft.columns
|
const column = draft.columns.find((c) => c.key === action.column)!;
|
||||||
.find((c) => c.key === action.column)!
|
const index =
|
||||||
.filters?.splice(action.index, 1);
|
action.index ??
|
||||||
|
column.filters?.findIndex((f) => f.value === action.value!);
|
||||||
|
|
||||||
|
if (index === undefined || index < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
column.filters?.splice(index, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'toggleColumnFilter': {
|
case 'toggleColumnFilter': {
|
||||||
const f = draft.columns.find((c) => c.key === action.column)!.filters![
|
const column = draft.columns.find((c) => c.key === action.column)!;
|
||||||
action.index
|
const index =
|
||||||
];
|
action.index ??
|
||||||
|
column.filters?.findIndex((f) => f.value === action.value!);
|
||||||
|
|
||||||
|
if (index === undefined || index < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const f = column.filters![index];
|
||||||
f.enabled = !f.enabled;
|
f.enabled = !f.enabled;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -385,6 +406,7 @@ export type DataTableManager<T> = {
|
|||||||
value: string,
|
value: string,
|
||||||
disableOthers?: boolean,
|
disableOthers?: boolean,
|
||||||
): void;
|
): void;
|
||||||
|
removeColumnFilter(column: keyof T, value: string): void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function createDataTableManager<T>(
|
export function createDataTableManager<T>(
|
||||||
@@ -452,6 +474,9 @@ export function createDataTableManager<T>(
|
|||||||
addColumnFilter(column, value, disableOthers) {
|
addColumnFilter(column, value, disableOthers) {
|
||||||
dispatch({type: 'addColumnFilter', column, value, disableOthers});
|
dispatch({type: 'addColumnFilter', column, value, disableOthers});
|
||||||
},
|
},
|
||||||
|
removeColumnFilter(column, value) {
|
||||||
|
dispatch({type: 'removeColumnFilter', column, value});
|
||||||
|
},
|
||||||
dataView,
|
dataView,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user