import { DataSourceContextProps, DataSourceContextType } from '../dataSourceComponents/provider/dataSource/DataSourceContext'; import { Result } from 'ahooks/es/useRequest/src/types'; import { TableProps as AntdTableProps, PaginationProps, TabsProps as AntdTabsProps, FormInstance as AntdFormInstance } from 'antd'; import { SortListProps } from '../sort/types'; import { FilterItemProps } from '../filter/types'; import { FilterListProps } from '../filter/components/FilterButton/types'; /** * 子组件属性集合类型定义 */ export interface ChildComponentPropsType { /** Filter 组件属性 */ filterComponent?: { value: { quickFilter?: FilterItemProps[]; otherFilter?: FilterItemProps[]; }; formFiltersPrefix?: string; quickFilterMaxLength?: number; }; /** QuickFilter 组件属性 */ quickFilterComponent?: { filterList: FilterItemProps[]; formFiltersPrefix?: string; }; /** FilterButton 组件属性 */ filterButtonComponent?: FilterListProps; /** tabsComponent 组件属性 */ tabsComponent?: { items: AntdTabsProps['items']; type?: 'default' | 'button' | 'buttonGroup' | 'dropdown'; }; /** Sort 组件属性 */ sortComponent?: SortListProps; /** Table 组件属性 */ tableComponent?: AntdTableProps; /** ColumnsSetting 组件属性 */ columnsSettingComponent?: { value?: Record[]; onChange?: (val: Record[]) => void; }; /** Pagination 组件属性 */ paginationComponent?: PaginationProps; } export interface DataSourceContainerProps extends DataSourceContextProps { pagination?: boolean | { pageNumber: number; pageSize: number; }; childComponentProps?: ChildComponentPropsType; } /** * 扩展的 HandleActionContextType */ export interface HandleActionContextType extends Omit { list: Result & { onSearch: (newParams?: Record) => void; onReset: () => void; onPageChange: (pageNumber: number, pageSize: number) => void; pagination?: { pageNumber: number; pageSize: number; }; }; } export interface RefManagerContextType { getRef: (id: string) => T | undefined; registerRef: (id: string, ref: T) => void; unregisterRef: (id: string) => void; getSharedState: (key: string) => T | undefined; setSharedState: (key: string, value: T) => void; subscribeSharedState: (key: string, callback: (value: T) => void) => () => void; } export interface DataSourceContainerContextType { serverActions: HandleActionContextType; refManager: RefManagerContextType; form: AntdFormInstance; } export interface UseContainerContextReturnType { serverActions: HandleActionContextType; refManager: RefManagerContextType; form: AntdFormInstance; onValuesChange: (changedValues: Record, allValues: Record) => void; [key: string]: any; }