import { FieldCatalog, HeaderFilterConfig, HeaderFiltersState, OrderByItem, OperatorOption } from './type'; import { PlusColumn } from 'yc-pro-components/es/types/plus'; import { Ref } from 'vue'; export interface UseHeaderFilterOptions { /** 表头筛选配置 - 支持 getter 函数以实现响应式 */ headerFilterConfig?: HeaderFilterConfig | boolean | (() => HeaderFilterConfig | boolean | undefined); /** 是否隐藏表头筛选 - 支持 getter 函数以实现响应式 */ hideHeaderFilter?: boolean | (() => boolean | undefined); /** 刷新列表回调 */ onRefresh?: () => void; /** 筛选确认回调 */ onFilterConfirm?: (payload: { column: PlusColumn; op: string; value?: string; }) => void; /** 筛选重置回调 */ onFilterReset?: (payload: { column: PlusColumn; op: string; }) => void; } export interface UseHeaderFilterReturn { /** 是否启用表头筛选 */ isEnabled: Ref; /** 筛选状态 */ headerFiltersState: HeaderFiltersState; /** 排序状态 */ orderByState: OrderByItem[]; /** 操作符目录(来自接口) */ operatorCatalogState: Ref>; /** 字段目录(来自接口) */ fieldCatalogState: Ref; /** 更新或插入筛选项 */ upsertHeaderFilter: (field: string, op: string, value?: string) => void; /** 移除筛选项 */ removeHeaderFilter: (field: string) => void; /** 设置排序 */ setOrderBy: (field: string, direction?: 'asc' | 'desc') => void; /** 根据 prop 获取操作符列表 */ getOpsByProp: (prop?: string) => OperatorOption[]; /** 获取合并后的请求参数 */ getMergedQuery: (baseQuery: Record) => Record; /** 更新目录(从接口返回数据) */ updateCatalogs: (operatorCatalog?: Record, fieldCatalog?: FieldCatalog) => void; /** 判断字段是否支持筛选(基于 fieldCatalog 的 filter 属性) */ isFieldFilterable: (prop?: string) => boolean; /** 判断字段是否允许显示(基于 fieldCatalog 的 nullable 属性) */ isFieldVisible: (prop?: string) => boolean; /** 重置所有筛选条件和排序状态,可传入默认筛选值在重置后自动应用 */ resetAllHeaderFilters: (defaults?: Array<{ field: string; op: string; value?: string; }>) => void; } /** * 表头筛选 Hook */ export declare function useHeaderFilter(options?: UseHeaderFilterOptions): UseHeaderFilterReturn;