@coko/client
Version:
Client side common code for coko apps
54 lines (53 loc) • 1.69 kB
TypeScript
import React, { ComponentProps } from 'react';
import { DragEndEvent } from '@dnd-kit/core';
import { arrayMove as dndArrayMove } from '@dnd-kit/sortable';
import { List as AntList } from 'antd';
type SortOption = {
label: string;
value: string;
isDefault?: boolean;
};
type PaginationConfig = {
current?: number;
pageSize?: number;
total?: number;
onChange?: (page: number, pageSize: number) => void;
onShowSizeChange?: (current: number, size: number) => void;
showSizeChanger?: boolean;
};
type ItemSelection = {
onChange: (selectedItems: string[]) => void;
};
export type ListItem = {
id: string;
[key: string]: unknown;
};
type ListProps = Omit<ComponentProps<typeof AntList>, 'dataSource' | 'renderItem' | 'pagination'> & {
className?: string;
dataSource: ListItem[];
renderItem: (item: ListItem, index: number) => React.ReactNode;
footerContent?: React.ReactElement | null;
itemSelection?: ItemSelection | null;
loading?: boolean;
onSearch?: (value: string) => void;
onSortOptionChange?: ((value: string) => void) | null;
pagination?: PaginationConfig | false;
searchLoading?: boolean;
searchPlaceholder?: string;
showPagination?: boolean;
showSearch?: boolean;
showSort?: boolean;
showTotalCount?: boolean;
sortOptions?: SortOption[];
totalCount?: number | null;
draggable?: boolean;
onDragEnd?: (event: DragEndEvent) => void;
selectedItems?: string[];
};
declare const List: {
(props: ListProps): React.ReactNode;
Item: import("antd/es/list/Item").ListItemTypeProps;
};
export { dndArrayMove };
export type { DragEndEvent };
export default List;