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:
Andrey Goncharov
2023-04-28 12:19:45 -07:00
committed by Facebook GitHub Bot
parent 647bc06f3a
commit 424985a75a

View File

@@ -99,8 +99,16 @@ type DataManagerActions<T> =
'addColumnFilter',
{column: keyof T; value: string; disableOthers?: boolean}
>
| Action<'removeColumnFilter', {column: keyof T; index: number}>
| Action<'toggleColumnFilter', {column: keyof T; index: number}>
| Action<
'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<'setColumnFilterFromSelection', {column: keyof T}>
| Action<'appliedInitialScroll'>
@@ -277,15 +285,28 @@ export const dataTableManagerReducer = produce<
break;
}
case 'removeColumnFilter': {
draft.columns
.find((c) => c.key === action.column)!
.filters?.splice(action.index, 1);
const column = draft.columns.find((c) => c.key === action.column)!;
const index =
action.index ??
column.filters?.findIndex((f) => f.value === action.value!);
if (index === undefined || index < 0) {
break;
}
column.filters?.splice(index, 1);
break;
}
case 'toggleColumnFilter': {
const f = draft.columns.find((c) => c.key === action.column)!.filters![
action.index
];
const column = draft.columns.find((c) => c.key === action.column)!;
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;
break;
}
@@ -385,6 +406,7 @@ export type DataTableManager<T> = {
value: string,
disableOthers?: boolean,
): void;
removeColumnFilter(column: keyof T, value: string): void;
};
export function createDataTableManager<T>(
@@ -452,6 +474,9 @@ export function createDataTableManager<T>(
addColumnFilter(column, value, disableOthers) {
dispatch({type: 'addColumnFilter', column, value, disableOthers});
},
removeColumnFilter(column, value) {
dispatch({type: 'removeColumnFilter', column, value});
},
dataView,
};
}