/** * 列表默认排序的纯逻辑:由列定义推断(状态优先、再按记录时间),或由页面显式指定。@author nokecy */ /** 列表默认排序;exclusive 表示由页面显式指定,取代状态/时间推断,其他列的初始排序一并清掉。 */ export type ListDefaultSort = { field: string; sort: 'asc' | 'desc'; sortIndex: number; }[] & { exclusive?: boolean; }; /** 页面显式指定的默认排序(AgGridPlus 的 defaultSort 属性)。 */ export type ListDefaultSortOverride = { field: string; sort: 'asc' | 'desc'; }[]; /** * 默认排序的字段口径,由宿主提供: * `statusFields` 按优先级列出「状态」字段(有状态的单据先按状态升序); * `timestampFields` 按优先级列出「记录时间」字段(其次按它倒序)。 * `timestampFirst` 为 true 时,已声明的记录时间优先于页面旧默认排序,且不自动附加状态。 * 不传则不识别状态,只按列名/标题规则推断记录时间。 */ export type ListSortPolicy = { statusFields?: readonly string[]; timestampFields?: readonly string[]; timestampFirst?: boolean; }; export declare const resolveListSortPolicy: (policy?: ListSortPolicy) => { timestampFirst: boolean; statusFields: string[]; statusFieldSet: Set; timestampFields: string[]; timestampFieldSet: Set; }; type ResolvedSortPolicy = ReturnType; export declare const flattenColumnDefs: (columns: any[] | undefined, result?: Record[]) => Record[]; /** 有状态的单据按状态、再按真实记录时间排序;无状态页保留显式业务排序,否则采用实际时间字段。@author nokecy */ export declare const inferListDefaultSort: (columns: Record[], override?: ListDefaultSortOverride, policy?: ListSortPolicy | ResolvedSortPolicy) => ListDefaultSort; export declare const sortingText: (sorting: ListDefaultSort) => string; export {};