import type { ComputedRef, InjectionKey } from 'vue'; import { computed, inject, provide } from 'vue'; export type ContextSlots = { emptyText?: (...args: any[]) => any; expandIcon?: (...args: any[]) => any; title?: (...args: any[]) => any; footer?: (...args: any[]) => any; summary?: (...args: any[]) => any; bodyCell?: (...args: any[]) => any; headerCell?: (...args: any[]) => any; customFilterIcon?: (...args: any[]) => any; customFilterDropdown?: (...args: any[]) => any; // 兼容 2.x 的 columns slots 配置 [key: string]: ((...args: any[]) => any) | undefined; }; export type ContextProps = ComputedRef; export const ContextKey: InjectionKey = Symbol('ContextProps'); export const useProvideSlots = (props: ContextProps) => { provide(ContextKey, props); }; export const useInjectSlots = () => { return inject(ContextKey, computed(() => ({})) as ContextProps); };