import type { ActionObject, LocaleProps, SchemaBoolean, SchemaClassName, ThemeProps } from 'jamis-core';
import type { BaseSchema, PlainSchema, SchemaPopOver, StaticControlSchema } from '../types';
/**
 * 搜索框渲染器
 */
export interface SearchBoxSchema extends BaseSchema {
    /**
     * 指定为搜索框。
     *
     *
     */
    type: 'search-box';
    /**
     * 外层 css 类名
     */
    className?: SchemaClassName;
    /**
     * 关键字名字。
     *
     * @default keywords
     */
    name?: string;
    /**
     * 占位符
     */
    placeholder?: string;
    /**
     * 是否为 Mini 样式。
     */
    mini?: boolean;
    /** 是否默认激活态 */
    active?: boolean;
    /**
     * 是否为加强样式
     */
    enhance?: boolean;
    /**
     * 是否可清除
     */
    clearable?: boolean;
    /**
     * 是否立马搜索。
     */
    searchImediately?: boolean;
    /** 延迟多少毫秒后触发搜索 */
    searchDelay?: number;
    /**
     * 是否显示成内联组件, 默认是
     */
    inline?: boolean;
    /**
     * 历史记录配置
     */
    history?: SearchHistoryOptions;
    inputClassName?: SchemaClassName;
    inputWrapClassName?: SchemaClassName;
    searchBtnClassName?: SchemaClassName;
    addOn?: (ActionObject | PlainSchema | StaticControlSchema) & {
        position?: 'left' | 'right';
        label?: string;
        icon?: string;
        className?: string;
    };
    popOverEnable?: boolean | SchemaBoolean;
    popOverEnableOn?: SchemaBoolean;
    popOver?: SchemaPopOver;
}
export interface HistoryRecord {
    /** 历史记录值 */
    value: string;
    /** 历史记录生成的unix时间戳 */
    timestamp?: number;
}
export interface SearchHistoryOptions {
    /** 是否开启历史记录 */
    enable: boolean;
    /** 本地存储历史记录的key */
    key?: string;
    /** 历史记录数量上限 */
    limit?: number;
    /** 历史记录下拉面板CSS类名 */
    dropdownClassName?: SchemaClassName;
    contentClassName?: SchemaClassName;
}
export interface SearchBoxProps extends ThemeProps, LocaleProps, Omit<SearchBoxSchema, 'type' | 'className' | 'addOn'> {
    name?: string;
    disabled?: boolean;
    inline?: boolean;
    mini?: boolean;
    enhance?: boolean;
    defaultValue?: string;
    value?: string;
    /** 历史记录配置 */
    history?: SearchHistoryOptions;
    addOnPosition?: 'left' | 'right';
    addOn?: JSX.Element | null | undefined;
    onChange?: (text: string) => void;
    onActiveChange?: (active: boolean) => void;
    onSearch?: (value: string) => void;
    onCancel?: () => void;
}
