import { HeaderFiltersState, OrderByItem, OperatorOption, HeaderFilterPayload, HeaderFilterResetPayload } from './type'; import { Ref, ComputedRef } from 'vue'; /** * 可筛选列配置 */ export interface LocalFilterColumnConfig { /** 列字段名(对应 el-table-column 的 prop) */ prop: string; /** 字段类型,决定可用的操作符集合,默认 'string' */ type?: 'string' | 'number' | 'date' | 'boolean'; } /** * useLocalHeaderFilter 配置项 */ export interface UseLocalHeaderFilterOptions { /** 需要启用筛选的列配置,未配置的列不显示筛选 */ filterableColumns?: LocalFilterColumnConfig[]; } /** * useLocalHeaderFilter 返回值 */ export interface UseLocalHeaderFilterReturn { /** 经过筛选和排序后的数据,绑定到表格的 :data */ filteredData: ComputedRef; /** 当前筛选状态,传给 YcTableHeaderFilterCell 的 :filters */ headerFiltersState: HeaderFiltersState; /** 当前排序状态,传给 YcTableHeaderFilterCell 的 :order-by */ orderByState: OrderByItem[]; /** 筛选确认处理,传给 YcTableHeaderFilterCell 的 @confirm */ handleFilterConfirm: (payload: HeaderFilterPayload) => void; /** 筛选重置处理,传给 YcTableHeaderFilterCell 的 @reset */ handleFilterReset: (payload: HeaderFilterResetPayload) => void; /** 排序切换处理,传给 YcTableHeaderFilterCell 的 @sort-change */ handleSortChange: (payload: { field: string; direction?: 'asc' | 'desc'; }) => void; /** 根据 prop 获取操作符列表,传给 YcTableHeaderFilterCell 的 :operators */ getOpsByProp: (prop: string) => OperatorOption[]; /** 重置所有筛选和排序 */ resetAllFilters: () => void; /** 是否有激活的筛选条件 */ hasActiveFilters: ComputedRef; } /** * 本地数据表头筛选组合式函数 * * @param data - 响应式数据源 * @param options - 可筛选列配置 * * @example * ```ts * import { useLocalHeaderFilter, YcTableHeaderFilterCell } from 'yc-pro-components' * * const { * filteredData, * headerFiltersState, * orderByState, * handleFilterConfirm, * handleFilterReset, * handleSortChange, * getOpsByProp * } = useLocalHeaderFilter(tableData, { * filterableColumns: [ * { prop: 'userName', type: 'string' }, * { prop: 'realShortName', type: 'string' }, * { prop: 'weight', type: 'number' } * ] * }) * ``` * * 模板中配合 el-table 使用: * ```vue * * * * * * ``` */ export declare function useLocalHeaderFilter>(data: Ref | ComputedRef, options?: UseLocalHeaderFilterOptions): UseLocalHeaderFilterReturn;