jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
102 lines (101 loc) • 2.65 kB
TypeScript
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;
}