import { AnyObject, VueNode } from "../../../_util/type.js"; import { devUseWarning } from "../../../_util/warning.js"; import { Breakpoint } from "../../../_util/responsiveObserver.js"; import { ColumnFilterItem, ColumnTitle, ColumnType, ColumnsType, CompareFn, CoverableDropdownProps, FilterDropdownProps, FilterKey, FilterSearchType, FilterValue, GetPopupContainer, Key, SortOrder, SorterTooltipProps, TableLocale, TransformColumns } from "../../interface.js"; import { flattenKeys } from "./FilterDropdown.js"; import { Ref } from "vue"; import * as _v_c_util6 from "@v-c/util"; import * as _v_c_table0 from "@v-c/table"; import * as _v_c_table_dist_interface_js0 from "@v-c/table/dist/interface.js"; //#region src/table/hooks/useFilter/index.d.ts interface FilterState { column: ColumnType; key: Key; filteredKeys?: FilterKey; forceFiltered?: boolean; } declare function collectFilterStates(columns: ColumnsType, init: boolean, pos?: string): FilterState[]; declare function generateFilterInfo(filterStates: FilterState[]): Record; declare function getFilterData(data: RecordType[], filterStates: FilterState[], childrenColumnName: string): RecordType[]; interface FilterConfig { prefixCls: string; dropdownPrefixCls: string; mergedFilterStates: FilterState[]; filterStates: Ref[]>; locale: TableLocale; filterDropdown?: (ctx: FilterDropdownProps & { column: ColumnType; }) => any; filterIcon?: (ctx: { column: ColumnType; filtered: boolean; }) => any; onFilterChange: (filters: Record, filterStates: FilterState[]) => void; getPopupContainer?: GetPopupContainer; rootClassName?: string; } declare function getMergedFilterStates(rawMergedColumns: ColumnsType, filterStates: FilterState[], warning?: ReturnType): FilterState[] | { column: { title?: ColumnTitle; sorter?: boolean | CompareFn | { compare?: CompareFn | undefined; multiple?: number; } | undefined; sortOrder?: SortOrder; defaultSortOrder?: SortOrder; sortDirections?: SortOrder[]; sortIcon?: (props: { sortOrder: SortOrder; }) => VueNode; showSorterTooltip?: boolean | SorterTooltipProps; filtered?: boolean; filters?: ColumnFilterItem[]; filterDropdown?: VueNode | ((props: FilterDropdownProps) => VueNode); filterOnClose?: boolean; filterMultiple?: boolean; filteredValue?: FilterValue | null; defaultFilteredValue?: FilterValue | null; filterIcon?: VueNode | ((filtered: boolean) => VueNode); filterMode?: "menu" | "tree"; filterSearch?: FilterSearchType; onFilter?: ((value: Key | boolean, record: RecordType) => boolean) | undefined; filterDropdownProps?: CoverableDropdownProps; filterResetToDefaultFilteredValue?: boolean; responsive?: Breakpoint[]; filterDropdownOpen?: boolean; onFilterDropdownOpenChange?: (visible: boolean) => void; hidden?: boolean | undefined; className?: string | undefined; width?: number | string | undefined; key?: _v_c_table_dist_interface_js0.Key | undefined; minWidth?: number | undefined; fixed?: _v_c_table0.FixedType | undefined; ellipsis?: _v_c_table_dist_interface_js0.CellEllipsisType | undefined; align?: _v_c_table_dist_interface_js0.AlignType | undefined; render?: ((value: any, record: RecordType, index: number) => _v_c_util6.VueNode | _v_c_table0.RenderedCell) | undefined; colSpan?: number | undefined; dataIndex?: _v_c_table0.DataIndex | undefined; shouldCellUpdate?: ((record: RecordType, prevRecord: RecordType) => boolean) | undefined; rowSpan?: number | undefined; onCell?: ((data: RecordType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; onCellClick?: ((record: RecordType, e: MouseEvent) => void) | undefined; onHeaderCell?: ((data: _v_c_table0.ColumnType | _v_c_table_dist_interface_js0.ColumnGroupType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; rowScope?: _v_c_table_dist_interface_js0.RowScopeType | undefined; } | { children: ColumnsType; hidden?: boolean; className?: string; responsive?: Breakpoint[]; title?: ColumnTitle; width?: number | string; key?: _v_c_table_dist_interface_js0.Key; minWidth?: number; fixed?: _v_c_table0.FixedType; ellipsis?: _v_c_table_dist_interface_js0.CellEllipsisType; align?: _v_c_table_dist_interface_js0.AlignType; render?: ((value: any, record: RecordType, index: number) => _v_c_util6.VueNode | _v_c_table0.RenderedCell) | undefined; filters?: ColumnFilterItem[]; colSpan?: number; shouldCellUpdate?: ((record: RecordType, prevRecord: RecordType) => boolean) | undefined; rowSpan?: number; onCell?: ((data: RecordType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; onCellClick?: ((record: RecordType, e: MouseEvent) => void) | undefined; onHeaderCell?: ((data: _v_c_table0.ColumnType | _v_c_table_dist_interface_js0.ColumnGroupType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; rowScope?: _v_c_table_dist_interface_js0.RowScopeType; sorter?: boolean | CompareFn | { compare?: CompareFn | undefined; multiple?: number; } | undefined; sortOrder?: SortOrder; defaultSortOrder?: SortOrder; sortDirections?: SortOrder[]; sortIcon?: (props: { sortOrder: SortOrder; }) => VueNode; showSorterTooltip?: boolean | SorterTooltipProps; filtered?: boolean; filterDropdown?: VueNode | ((props: FilterDropdownProps) => VueNode); filterOnClose?: boolean; filterMultiple?: boolean; filteredValue?: FilterValue | null; defaultFilteredValue?: FilterValue | null; filterIcon?: VueNode | ((filtered: boolean) => VueNode); filterMode?: "menu" | "tree"; filterSearch?: FilterSearchType; onFilter?: ((value: Key | boolean, record: RecordType) => boolean) | undefined; filterDropdownProps?: CoverableDropdownProps; filterResetToDefaultFilteredValue?: boolean; filterDropdownOpen?: boolean; onFilterDropdownOpenChange?: (visible: boolean) => void; dataIndex?: _v_c_table0.DataIndex | undefined; } | { title?: ColumnTitle; sorter?: boolean | CompareFn | { compare?: CompareFn | undefined; multiple?: number; } | undefined; sortOrder?: SortOrder; defaultSortOrder?: SortOrder; sortDirections?: SortOrder[]; sortIcon?: (props: { sortOrder: SortOrder; }) => VueNode; showSorterTooltip?: boolean | SorterTooltipProps; filtered?: boolean; filters?: ColumnFilterItem[]; filterDropdown?: VueNode | ((props: FilterDropdownProps) => VueNode); filterOnClose?: boolean; filterMultiple?: boolean; filteredValue?: FilterValue | null; defaultFilteredValue?: FilterValue | null; filterIcon?: VueNode | ((filtered: boolean) => VueNode); filterMode?: "menu" | "tree"; filterSearch?: FilterSearchType; onFilter?: ((value: Key | boolean, record: RecordType) => boolean) | undefined; filterDropdownProps?: CoverableDropdownProps; filterResetToDefaultFilteredValue?: boolean; responsive?: Breakpoint[]; filterDropdownOpen?: boolean; onFilterDropdownOpenChange?: (visible: boolean) => void; hidden?: boolean; className?: string; width?: number | string; key?: _v_c_table_dist_interface_js0.Key; minWidth?: number; fixed?: _v_c_table0.FixedType; ellipsis?: _v_c_table_dist_interface_js0.CellEllipsisType; align?: _v_c_table_dist_interface_js0.AlignType; render?: ((value: any, record: RecordType, index: number) => _v_c_util6.VueNode | _v_c_table0.RenderedCell) | undefined; colSpan?: number; dataIndex?: _v_c_table0.DataIndex | undefined; shouldCellUpdate?: ((record: RecordType, prevRecord: RecordType) => boolean) | undefined; rowSpan?: number; onCell?: ((data: RecordType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; onCellClick?: ((record: RecordType, e: MouseEvent) => void) | undefined; onHeaderCell?: ((data: _v_c_table0.ColumnType | _v_c_table_dist_interface_js0.ColumnGroupType, index?: number) => Partial<_v_c_table_dist_interface_js0.CellAttributes>) | undefined; rowScope?: _v_c_table_dist_interface_js0.RowScopeType; }; forceFiltered: any; key: Key; filteredKeys?: FilterKey; }[]; declare function useFilter(props: FilterConfig): readonly [TransformColumns, FilterState[], Record]; //#endregion export { FilterConfig, FilterState, collectFilterStates, useFilter as default, flattenKeys, generateFilterInfo, getFilterData, getMergedFilterStates };