import type { Option, SchemaBoolean, SchemaClassName, SchemaExpression } from 'jamis-core';
import type { ActionSchema, BaseSchema, FormBaseControl, OptionsControlProps, SizeUnit } from '../types';
/**
 * Button Group 渲染器。
 *
 *  button-group组件, 会默认当成formitem处理, 逻辑在compact.ts里
 */
export interface ButtonGroupSchema extends BaseSchema, FormBaseControl {
    /**
     * 指定为提交按钮类型
     */
    type: 'button-group';
    /**
     * 给 Button 配置 className。建议用btnLevel
     */
    btnClassName?: SchemaClassName;
    /**
     * 给选中态 Button 配置 className。建议用btnActiveLevel
     * @deprecated 使用 btnActiveLevel
     */
    btnActiveClassName?: string;
    /**
     * 按钮集合
     */
    buttons?: Array<ActionSchema>;
    /**
     * 按钮样式级别
     */
    btnLevel?: string;
    /**
     * 按钮选中的样式级别
     */
    btnActiveLevel?: string;
    /**
     * 垂直展示？
     */
    vertical?: boolean;
    /**
     * 平铺展示？
     */
    tiled?: boolean;
    /**
     * 是否为禁用状态。
     */
    disabled?: boolean;
    /**
     * 通过 JS 表达式来配置当前表单项的禁用状态。
     */
    disabledOn?: SchemaBoolean;
    /**
     * 是否显示
     */
    visible?: boolean;
    /**
     * 通过 JS 表达式来配置当前表单项是否显示
     */
    visibleOn?: SchemaBoolean;
    /**
     * 按钮大小
     */
    size?: SizeUnit;
    /**
     * 按钮选项
     */
    options?: Array<Option>;
    /**
     * @todo 没有实现
     */
    multiple?: boolean;
}
export interface ButtonGroupProps extends OptionsControlProps {
    /**
     * 给 Button 配置 className。建议用btnLevel
     */
    btnClassName?: string;
    /**
     * 给选中态 Button 配置 className。建议用btnActiveLevel
     */
    btnActiveClassName?: string;
    /**
     * 按钮集合
     */
    buttons?: Array<ActionSchema>;
    /**
     * 按钮样式级别
     */
    btnLevel?: string;
    /**
     * 按钮选中的样式级别
     */
    btnActiveLevel?: string;
    /**
     * 垂直展示？
     */
    vertical?: boolean;
    /**
     * 平铺展示？
     */
    tiled?: boolean;
    /**
     * 是否为禁用状态。
     */
    disabled?: boolean;
    /**
     * 通过 JS 表达式来配置当前表单项的禁用状态。
     */
    disabledOn?: SchemaBoolean;
    /**
     * 是否显示
     */
    visible?: boolean;
    /**
     * 通过 JS 表达式来配置当前表单项是否显示
     */
    visibleOn?: SchemaExpression;
    /**
     * 按钮大小
     */
    size?: 'xs' | 'sm' | 'md' | 'lg';
    clearable?: boolean;
    [key: string]: any;
}
