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',
|
||||
{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,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user