mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
refactor(ui/datatables): allow datatable to globally filter on object value [EE-5824] (#9955)
This commit is contained in:
parent
440f4e8dda
commit
cb7377ead6
34 changed files with 271 additions and 186 deletions
|
@ -0,0 +1,37 @@
|
|||
import {
|
||||
RowSelectionState,
|
||||
TableOptions,
|
||||
Updater,
|
||||
} from '@tanstack/react-table';
|
||||
|
||||
import { DefaultType } from '../types';
|
||||
|
||||
export function withControlledSelected<D extends DefaultType>(
|
||||
onChange?: (value: string[]) => void,
|
||||
value?: string[]
|
||||
) {
|
||||
return function extendTableOptions(options: TableOptions<D>) {
|
||||
if (!onChange || !value) {
|
||||
return options;
|
||||
}
|
||||
|
||||
return {
|
||||
...options,
|
||||
state: {
|
||||
...options.state,
|
||||
rowSelection: Object.fromEntries(value.map((i) => [i, true])),
|
||||
},
|
||||
onRowSelectionChange(updater: Updater<RowSelectionState>) {
|
||||
const newValue =
|
||||
typeof updater !== 'function'
|
||||
? updater
|
||||
: updater(Object.fromEntries(value.map((i) => [i, true])));
|
||||
onChange(
|
||||
Object.entries(newValue)
|
||||
.filter(([, selected]) => selected)
|
||||
.map(([id]) => id)
|
||||
);
|
||||
},
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue