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
|
@ -2,7 +2,7 @@ import { useMemo, useState } from 'react';
|
|||
import { useStore } from 'zustand';
|
||||
|
||||
import { useSearchBarState } from './SearchBar';
|
||||
import { BasicTableSettings, CreatePersistedStoreReturn } from './types';
|
||||
import { BasicTableSettings, createPersistedStore } from './types';
|
||||
|
||||
export type TableState<TSettings extends BasicTableSettings> = TSettings & {
|
||||
setSearch: (search: string) => void;
|
||||
|
@ -11,7 +11,10 @@ export type TableState<TSettings extends BasicTableSettings> = TSettings & {
|
|||
|
||||
export function useTableState<
|
||||
TSettings extends BasicTableSettings = BasicTableSettings
|
||||
>(store: CreatePersistedStoreReturn<TSettings>, storageKey: string) {
|
||||
>(
|
||||
store: ReturnType<typeof createPersistedStore<TSettings>>,
|
||||
storageKey: string
|
||||
) {
|
||||
const settings = useStore(store);
|
||||
|
||||
const [search, setSearch] = useSearchBarState(storageKey);
|
||||
|
@ -23,21 +26,24 @@ export function useTableState<
|
|||
}
|
||||
|
||||
export function useTableStateWithoutStorage(
|
||||
defaultSortKey: string
|
||||
defaultSortKey?: string
|
||||
): BasicTableSettings & {
|
||||
setSearch: (search: string) => void;
|
||||
search: string;
|
||||
} {
|
||||
const [search, setSearch] = useState('');
|
||||
const [pageSize, setPageSize] = useState(10);
|
||||
const [sortBy, setSortBy] = useState({ id: defaultSortKey, desc: false });
|
||||
const [sortBy, setSortBy] = useState(
|
||||
defaultSortKey ? { id: defaultSortKey, desc: false } : undefined
|
||||
);
|
||||
|
||||
return {
|
||||
search,
|
||||
setSearch,
|
||||
pageSize,
|
||||
setPageSize,
|
||||
setSortBy: (id: string, desc: boolean) => setSortBy({ id, desc }),
|
||||
setSortBy: (id: string | undefined, desc: boolean) =>
|
||||
setSortBy(id ? { id, desc } : undefined),
|
||||
sortBy,
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue