119 lines
3.3 KiB
TypeScript
119 lines
3.3 KiB
TypeScript
/** 下拉项接口 */
|
|
export interface DropdownItem {
|
|
/** 值 */
|
|
value: string;
|
|
/** 显示文本 */
|
|
text: string;
|
|
/** 源码显示内容 */
|
|
html?: HTMLElement
|
|
}
|
|
|
|
/** 下拉框选项接口 */
|
|
export interface DropdownOptions {
|
|
/** 文本关键字,默认值 text */
|
|
textKey?: string;
|
|
/** 值关键字,默认值 value */
|
|
valueKey?: string;
|
|
/** 源码显示的关键字,默认值 html */
|
|
htmlKey?: string;
|
|
/** 最大输入长度,默认值 500 */
|
|
maxLength?: Number;
|
|
/** 是否允许多选 */
|
|
multiSelect?: boolean;
|
|
/** 选中值 */
|
|
selected?: string;
|
|
/** 选中的数组 */
|
|
selectedList?: Array<string>;
|
|
/** 是否禁用 */
|
|
disabled?: boolean;
|
|
/** 是否支持输入 */
|
|
input?: boolean;
|
|
/** 是否支持搜索 */
|
|
search?: boolean;
|
|
/** 搜索的关键字数组 */
|
|
searchKeys?: Array<string>;
|
|
/** 搜索提示文本,默认值取语言资源 <code>searchHolder</code> "Search..." */
|
|
searchPlaceholder?: string;
|
|
/** 焦点索引 */
|
|
tabIndex?: Number;
|
|
/** 输入框的提示文本 */
|
|
placeholder?: string;
|
|
/** 是否固定为向下展开 */
|
|
slideFixed?: boolean;
|
|
/** 父元素,默认添加到头元素之后 */
|
|
wrapper?: HTMLElement;
|
|
}
|
|
|
|
/** 下拉框类 */
|
|
export class Dropdown {
|
|
/**
|
|
* 把父元素下的所有 <code>select</code> 元素修改为统一下拉框组件
|
|
* @param dom 父元素
|
|
* @returns 返回该父元素
|
|
*/
|
|
static resolve(dom?: HTMLElement): HTMLElement;
|
|
|
|
/**
|
|
* 下拉框的构造函数
|
|
* @param options 下拉框选项
|
|
*/
|
|
constructor(options?: DropdownOptions);
|
|
|
|
/** 根据该函数返回数据源 */
|
|
sourceFilter: () => Array<DropdownItem | any>;
|
|
/**
|
|
* 选中时触发
|
|
* @param item 选中的条目
|
|
*/
|
|
onSelected: (item: DropdownItem | any) => void;
|
|
/**
|
|
* 选中多个时触发
|
|
* @param list 选中的条目数组
|
|
*/
|
|
onSelectedList: (list: Array<DropdownItem | any>) => void;
|
|
/** 下拉框展开时触发 */
|
|
onExpanded: () => void;
|
|
/** 下拉框收缩时触发 */
|
|
onCollapsed: () => void;
|
|
|
|
/** 获取下拉框是否禁用 */
|
|
get disabled(): boolean;
|
|
/**
|
|
* 设置下拉框禁用状态
|
|
* @param flag 禁用状态
|
|
*/
|
|
set disabled(flag: boolean);
|
|
/** 获取数据源 */
|
|
get source(): Array<DropdownItem | any>;
|
|
/**
|
|
* 设置数据源
|
|
* @param list 数据源
|
|
*/
|
|
set source(list: Array<DropdownItem | any>);
|
|
|
|
/** 获取是否允许多选 */
|
|
get multiSelect(): boolean;
|
|
/** 获取选中的条目 */
|
|
get selected(): DropdownItem | any;
|
|
/** 获取选中的条目列表 */
|
|
get selectedList(): Array<DropdownItem | any>;
|
|
|
|
/**
|
|
* 创建下拉框元素
|
|
* @returns 返回创建的下拉框元素
|
|
*/
|
|
create(): HTMLElement;
|
|
/**
|
|
* 选中某个条目
|
|
* @param selected 选中的值
|
|
* @param silence 是否静默选中,即不触发 {@linkcode onSelected} 事件
|
|
*/
|
|
select(selected: string, silence?: boolean): void;
|
|
/**
|
|
* 选中条目列表
|
|
* @param selectedlist 选中的值的列表
|
|
* @param silence 是否静默选中,即不触发 {@linkcode onSelected} 事件
|
|
*/
|
|
selectlist(selectedlist: Array<string>, silence?: boolean): void;
|
|
}
|