import React, { SyntheticEvent, ReactNode } from "react"; import { ControlledProps, ChangeContext } from "../../form/controlled"; import { StyledProps } from "../../_type"; import { TableAddon } from "../TableProps"; /** * `sortable` 插件用于支持表格的排序操作。 */ export interface SortableOptions extends ControlledProps> { /** * 不支持非受控模式 */ defaultValue?: never; /** * 指定哪些列支持排序,可传入键值,或者详细配置 */ columns: (string | SortableColumn)[]; } /** * 比较函数 */ declare type CompareFunction = (first: Record, second: Record) => number; export interface SortableColumn { /** * 要支持排序的列的键值 */ key: string; /** * 当列从未排序进入排序状态时,优先使用的排序状态 */ prefer: SortOrder; /** * 自定义排序函数 * @since 2.6.0 */ sorter?: CompareFunction; } export interface SortableChangeContext extends ChangeContext { /** * 当前引起变更的排序信息 */ sort: SortBy; } export declare type SortOrder = "asc" | "desc" | undefined; export interface SortBy { /** * 按照哪一列排序 */ by: string; /** * 升序/倒序/未排序 */ order: SortOrder; /** * 自定义排序函数 * @since 2.6.0 */ sorter?: CompareFunction; } export declare function sortable(options: SortableOptions): TableAddon; export declare namespace sortable { var comparer: (sorts: SortBy[]) => (a: any, b: any) => number; } export interface SortButtonProps extends StyledProps { children?: ReactNode; order?: SortOrder; onClick?: (evt: React.MouseEvent) => void; } export declare function SortButton({ order, className, style, children, onClick, }: SortButtonProps): JSX.Element; export {};