/**
 * 选项数据类型
 */
export interface Option {
    id: number | string;
    name: string;
    initial?: string;
    status?: number;
}
/**
 * 通用选择器类型
 */
export type TCommonSelectorType = 'border' | 'checkbox' | 'select';
/**
 * 选择器值类型
 */
export type SelectorValue = string | number | (string | number)[];
/**
 * 通用选择器props类型
 */
export interface CommonSelectorProps {
    /**
     * 选择器值（用于 v-model）
     */
    modelValue: SelectorValue;
    /**
     * @deprecated 请使用 modelValue 代替
     */
    value?: SelectorValue;
    /**
     * 选择器类型 border | checkbox | select(default)
     */
    type?: TCommonSelectorType;
    /**
     * 选项数据，格式：[{id: 1, name: '选项1', initial: 'A', status: 1}]
     * 如果loadOptions存在，则options无效
     */
    options?: Option[];
    /**
     * 异步加载数据的函数，格式：() => Promise<Array>
     * 优先级高于options
     */
    loadOptions?: () => Promise<Option[]>;
    /**
     * 是否隐藏全部选项
     */
    hiddenAllOptions?: boolean;
    /**
     * 是否多选
     */
    multiple?: boolean;
    /**
     * 选择器占位符
     */
    placeholder?: string;
    /**
     * 选择器大小
     */
    size?: string;
    /**
     * 是否显示searchBar(A~Z+搜索框)
     * 注意：当启用搜索栏时，组件会使用数据中的initial字段来构建A-Z字母列表。
     * 如果数据项中缺少initial字段或值为空，组件会自动根据name字段生成initial值：
     * - 对于中文，会提取拼音首字母并转为大写
     * - 对于非中文，直接取首字母并转为大写
     */
    showSearchBar?: boolean;
    /**
     * 是否启用分页
     */
    pagination?: boolean;
    /**
     * 每页显示数量
     */
    pageSize?: number;
    /**
     * 非select模式下，异步加载数据是否需要展示loading(加载中...)
     */
    needShowLoading?: boolean;
    /**
     * 是否强制不展开
     */
    forceNoExpand?: boolean;
    /**
     * 是否显示后置输入框
     */
    showSuffixInput?: boolean;
    /**
     * 后置输入框的placeholder
     */
    suffixInputPlaceholder?: string;
    /**
     * 后置输入框的值
     */
    suffixInputValue?: string;
    /**
     * 后置输入框的单位
     */
    suffixInputUnit?: string;
    /**
     * 后置输入框的选项
     */
    suffixInputOptions?: Record<string, any>;
}
