import type { QueryFilterState } from '../types'; /** * 表格空态四分。 * * 原来空态的全部表达能力是一个字符串,兜底文案是「没有找到数据,试试调整筛选条件吧!」—— * 请求失败时显示的也是这一句。在 MES 这类业务里,「这条数据确实没有」和「接口挂了」 * 导向完全相反的动作(去补录 vs 去叫 IT),用同一句话回答,还主动把用户往筛选条件上引, * 是一次系统性的假阴性。 * * 这里把空态拆成四支:加载失败 / 无权限 / 筛选无结果 / 无数据,逻辑写成纯函数便于单测。 * * @author nokecy */ export type EmptyStateBranch = 'error' | 'noPermission' | 'noResult' | 'noData'; /** 四支文案,按支覆盖。不传的支走默认。 */ export type EmptyStateTexts = Partial>; export declare const DEFAULT_EMPTY_TEXTS: Record; /** * 判断本次请求是否带着生效筛选。 * 只有它为真,空结果才该说「换个筛选条件试试」;否则说「暂无数据」。 * * @param filterString buildFilterString 的产物,涵盖简单查询与高级查询 * @param queryFilter 查询表单当前值,用于兜住 filterString 尚未覆盖的场景 */ export declare function hasEffectiveFilter(filterString?: string, queryFilter?: QueryFilterState | null): boolean; /** 选出当前该走哪一支。优先级:加载失败 > 无权限 > 筛选无结果 > 无数据。 */ export declare function resolveEmptyBranch(state: { hasError?: boolean; accessible?: boolean; filtered?: boolean; }): EmptyStateBranch; /** * 算出最终要显示的空态文案。 * `override` 是调用方原来就在用的 `overlayNoRowsTemplateText`,保持最高优先级,向后兼容。 */ export declare function resolveEmptyText(state: { hasError?: boolean; accessible?: boolean; filtered?: boolean; override?: string; texts?: EmptyStateTexts; }): string; /** * 选出空态浮层组件及其入参。 * 调用方传了 `noRowsOverlayComponent` 就用调用方的:宿主往往有自己的空态(例如无数据时带「新建」按钮、 * 外部筛选栏的「清空筛选」),此前内置浮层写死在 `...rest` 之后,把它们全部覆盖掉了。 * 入参合并:内置的 branch / text / onRetry 照样传给自定义组件,调用方同名入参优先。 * * @author nokecy */ export declare function resolveNoRowsOverlay(builtIn: C, builtInParams: P, custom?: C | null, customParams?: Record | null): { component: C; params: P & Record; };