@ansible/ansible-ui-framework
Version:
A framework for building applications using PatternFly.
85 lines (84 loc) • 3.26 kB
TypeScript
import { PerPageOptions } from '@patternfly/react-core';
import { Dispatch, ReactNode, SetStateAction } from 'react';
import { IPageAction } from '../PageActions/PageAction';
import { PageTableViewType } from '../PageToolbar/PageTableViewType';
import { IFilterState, IToolbarFilter } from '../PageToolbar/PageToolbarFilter';
import { ITableColumn } from './PageTableColumn';
export type PageTableCommonProps<T extends object> = {
id?: string;
keyFn: (item: T) => string | number;
itemCount?: number;
pageItems: T[] | undefined;
toolbarActions?: IPageAction<T>[];
tableColumns: ITableColumn<T>[];
rowActions?: IPageAction<T>[];
toolbarFilters?: IToolbarFilter[];
filterState?: IFilterState;
setFilterState?: Dispatch<SetStateAction<IFilterState>>;
clearAllFilters?: () => void;
page: number;
perPage: number;
setPage: (page: number) => void;
setPerPage: (perPage: number) => void;
perPageOptions?: PerPageOptions[];
sort?: string;
setSort?: (sort: string) => void;
sortDirection?: 'asc' | 'desc';
setSortDirection?: (sortDirection: 'asc' | 'desc') => void;
compact?: boolean;
borderless?: boolean;
autoHidePagination?: boolean;
isSelected?: (item: T) => boolean;
isSelectMultiple?: boolean;
selectedItems?: T[];
selectItem?: (item: T) => void;
unselectItem?: (item: T) => void;
selectItems?: (items: T[]) => void;
unselectAll?: () => void;
onSelect?: (item: T) => void;
errorStateTitle: string;
error?: Error;
emptyState?: ReactNode;
showSelect?: boolean;
disableTableView?: boolean;
disableListView?: boolean;
disableCardView?: boolean;
defaultTableView?: PageTableViewType;
disableBodyPadding?: boolean;
disablePagination?: boolean;
defaultSubtitle?: ReactNode;
expandedRow?: (item: T) => ReactNode;
disableLastRowBorder?: boolean;
maxSelections?: number;
topContent?: React.ReactNode;
toolbarContent?: React.ReactNode;
limitFiltersToOneOrOperation?: boolean;
defaultExpandedRows?: boolean;
};
export type PageTableProps<T extends object> = WithEmptyState<T> | WithoutEmptyState<T>;
interface WithEmptyState<T extends object> extends PageTableCommonProps<T> {
emptyState: ReactNode;
emptyStateTitle?: never;
emptyStateDescription?: never;
emptyStateIcon?: never;
emptyStateNoDataIcon?: never;
emptyStateActions?: never;
emptyStateButtonIcon?: never;
emptyStateButtonText?: never;
emptyStateButtonClick?: never;
emptyStateVariant?: never;
}
interface WithoutEmptyState<T extends object> extends PageTableCommonProps<T> {
emptyState?: never;
emptyStateTitle?: string;
emptyStateDescription?: string | null;
emptyStateIcon?: React.ComponentClass;
emptyStateNoDataIcon?: React.ComponentClass;
emptyStateActions?: IPageAction<T>[];
emptyStateButtonIcon?: React.ReactNode;
emptyStateButtonText?: string | null;
emptyStateButtonClick?: () => void;
emptyStateVariant?: 'default' | 'light' | 'dark' | 'darker';
}
export declare function PageTable<T extends object>(props: PageTableProps<T>): string | number | true | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element;
export {};