import type { ActionObject, PickClassStyleType, ReactPropsBase, SchemaBoolean, SchemaClassName } 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; popOverEnabled?: 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 ReactPropsBase, Omit, PickClassStyleType { 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; }