/**
* 存储所有类型
*/
declare namespace Layui {
/**
* 第一个按钮回调即yes回调
* @param [index] 当前层索引参数
* @param [layero] 当前层的jqDOM
*/
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
type LayerCallbackYes = (index: number, layero: JQuery) => boolean | void;
/**
* 层关闭的回调,如果不想关闭,return false即可
* @param [index] 当前层索引参数
* @param [layero] 当前层的DOM对象
*/
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
type LayerCallbackCancel = (index: number, layero: JQuery) => boolean | void;
type LayerCallbackEnd = () => void;
type LayerCallbackFull = (layero: JQuery) => void;
type LayerCallbackMin = (layero: JQuery, index: number) => void;
type LayerCallbackRestore = (layero: JQuery) => void;
/**
* 输入层
* @param [value] 输入的值
* @param [index] 当前层实例的索引
* @param [layero] 当前层的jqDOM
*/
type LayerCallbackPrompt = (value: string, index: number, layero: JQuery) => void;
type ExportsCallback = (this: Layui, fn: (app: string, exports: object) => void) => void;
/**
* 全局属性
*/
interface GlobalConfigOptions {
/**
* layui.js 所在目录(如果是 script 单独引入 layui.js,无需设定该参数)一般可无视
*/
dir?: string;
/**
* 一般用于更新模块缓存,默认不开启。设为 true 即让浏览器不缓存。也可以设为一个固定的值,如:201610
*/
version?: boolean;
/**
* 用于开启调试模式,默认 false,如果设为 true,则JS模块的节点会保留在页面
*/
debug?: boolean;
/**
* 设定扩展的 layui 模块的所在目录,一般用于外部模块扩展
*/
base?: string;
}
/**
* 地址中的参数和路径信息
*/
interface UrlHash {
hash: string;
href?: string;
path: string[];
search: { [index: string]: string };
}
interface CarouselOption {
/**
* 指向容器选择器,如:elem: '#id'。也可以是DOM对象
*/
elem?: string | HTMLElement | JQuery;
/**
* 设定轮播容器宽度,支持像素和百分比 默认:'600px'
* @default '600px'
*/
width?: string;
/**
* 设定轮播容器高度,支持像素和百分比
* @default '280px'
*/
height?: string;
/**
* 是否全屏轮播
* @default false
*/
full?: boolean;
/**
* 轮播切换动画方式
* @default 'default'
* @example
* anim: 'default' //(左右切换)
* anim: 'updown' //(上下切换)
* anim: 'fade' //(渐隐渐显切换)
*/
anim?: "default" | "updown" | "fade";
/**
* 是否自动切换
* @default true
*/
autoplay?: boolean;
/**
* 自动切换的时间间隔,单位:ms(毫秒),不能低于800
* @default 3000
*/
interval?: number;
/**
* 初始开始的条目索引
* @default 0
*/
index?: number;
/**
* 切换箭头默认显示状态
* @default 'hover'
* @example
* arrow: hover // (悬停显示)
* arrow: always // (始终显示)
* arrow: none //(始终不显示)
*/
arrow?: "hover" | "always" | "none";
/**
* 指示器位置
* @default 'inside'
* @example
* indicator: inside // (容器内部)
* indicator: outside // (容器外部)
* indicator: none //(不显示)
*/
indicator?: "insider" | "outsider" | "none";
/**
* 指示器的触发事件
* @default 'click'
*/
trigger?: string;
}
interface CarouselItem {
/**
* 当前条目的索引
*/
index: number;
/**
* 上一个条目的索引
*/
prevIndex: number;
/**
* 当前条目的元素对象
*/
item: JQuery;
}
interface CarouselClass {
/**
* 配置属性
*/
config: CarouselOption;
/**
* 初始焦点
*/
elemItem: JQuery;
/**
* 轮播渲染
*/
render(): void;
/**
* 重置轮播
*/
reload(options: { [index: string]: string }): void;
/**
* 获取上一个等待条目的索引
*/
prevIndex(): number;
/**
* 获取下一个等待条目的索引
*/
nextIndex(): number;
/**
* 手动递增索引值
*/
addIndex(num: number): void;
/**
* 手动递减索引值
*/
subIndex(num: number): void;
/**
* 自动轮播
*/
autoplay(): void;
/**
* 箭头
*/
arrow(): void;
/**
* 指示器
*/
indicator(): void;
/**
* 滑动切换 type :sub减,其他增
*/
slide(type: string, num: number): void;
/**
* 事件处理
*/
events(): void;
}
// https://www.layui.com/doc/modules/carousel.html
// carousel 是 layui 2.0 版本中新增的全新模块,主要适用于跑马灯/轮播等交互场景。
// 它并非单纯地为焦点图而生,准确地说,它可以满足任何类型内容的轮播式切换操作,
// 更可以胜任 FullPage (全屏上下轮播)的需求,简洁而不失强劲,灵活而优雅。
/**
* 轮播组件
*/
interface Carousel {
config: { [index: string]: any };
/**
* 核心入口
*/
render(options: CarouselOption): object;
/**
* 绑定切换事件
* @param [event] 事件
* @param [callback] 回调
*/
on(event: string, callback: (this: CarouselClass, obj: CarouselItem) => any): any;
/**
* 重置轮播
* @param [options] 基础参数
*/
reload(options?: CarouselOption): void;
/**
* 设置轮播组件的全局参数
* @param [options] 基础参数
*/
set(options?: CarouselOption): Carousel;
}
/**
* code高亮参数
*/
interface CodeOption {
/**
* 指定元素的选择器 默认值为.layui-code
*/
elem?: string;
/**
* 设定标题 默认值为code
*/
title?: string;
/**
* 设置最大高度,请注意必须加px,默认无:则会自适应高度,且不会出现滚动条
*/
height?: string;
/**
* 是否转义html标签,默认false
*/
encode?: boolean;
/**
* 风格选择(目前内置了两种:默认和notepad)
*/
skin?: string;
/**
* 是否剔除右上关于
*/
about?: boolean;
}
interface ColorPickerOption {
/**
* 指向容器选择器
*/
elem?: string | HTMLElement | JQuery;
/**
* 默认颜色,不管你是使用 hex、rgb 还是 rgba 的格式输入,最终会以指定的格式显示。
*/
color?: string;
/**
* 颜色显示/输入格式,可选值: hex、rgb
* 若在 rgb 格式下开启了透明度,格式会自动变成 rgba。在没有输入颜色的前提下,组件会默认为 #000 也就是黑色。
*/
format?: "hex" | "rgb" | "rgba";
/**
* 是否开启透明度,若不开启,则不会显示透明框。
* 开启了透明度选项时,当你的默认颜色为 hex 或 rgb 格式,组件会默认加上值为 1 的透明度。
* 相同的,当你没有开启透明度,却以 rgba 格式设置默认颜色时,组件会默认没有透明度。
* 注意:该参数必须配合 rgba 颜色值使用
*/
alpha?: boolean;
/**
* 预定义颜色是否开启
*/
predefine?: boolean;
/**
* 预定义颜色,此参数需配合 predefine: true 使用。
*/
colors?: string[];
/**
* 下拉框大小,可以选择:lg、sm、xs。
*/
size?: "lg" | "sm" | "xs";
/**
* 颜色被改变的回调
*/
change?(this: ColorPickerOption, color: string): void;
/**
* 颜色选择后的回调
*/
done?(this: ColorPickerOption, color: string): void;
}
// https://www.layui.com/doc/modules/colorpicker.html
/**
* 颜色选择器
*/
interface ColorPicker {
config: { [index: string]: any };
index: number;
render(option: ColorPickerOption): ColorPicker;
set(option: ColorPickerOption): ColorPicker;
/**
* 绑定切换事件
* @param [event] 事件名
* @param [callback] 回调函数
*/
on(event: string, callback: (this: Layui, params: any) => any): any;
}
interface DropDownOptionData {
/**
* 菜单标题
*/
title?: string;
/**
* 菜单 ID。用户菜单项唯一索引
*/
id?: string | number;
/**
* 菜单项的超链接地址。若填写,点击菜单将直接发生跳转。
*/
href?: string;
/**
* 菜单项超链接的打开方式,需 href 填写才生效。
* 一般可设为 _blank 或 _self 等 默认:_self
*/
target?: string;
/**
* 菜单项的类型,normal(默认) ,group(垂直菜单组)
* parent(横向父子菜单) ,-(分割线) 默认:normal 或 不填
*/
type?: string;
/**
* 子级菜单数据项。参数同父级,可无限嵌套。 默认:[]
*/
child?: any[];
/**
* 自定义当前菜单项模板,优先级高于全局设定的 templet。详见下文。
*/
templet?: string;
[index: string]: any;
}
interface DropDownOption {
/**
* 绑定触发组件的元素。必填项
*/
elem: string | HTMLElement | JQuery;
/**
* 菜单列数据项,其参数详见下文。必填项 也可用content支持模板
*/
data?: DropDownOptionData[];
/**
* 给当前实例设置个唯一标识
*/
id?: string;
/**
* 触发组件的事件类型。支持所有事件,如:click/hover/mousedown/contextmenu 等 默认:click
*/
trigger?: string;
/**
* 是否初始即显示组件面板 默认:false
*/
show?: boolean;
/**
* 下拉面板相对绑定元素的水平对齐方式(支持: left/center/right) v2.6.8 新增 默认:left
*/
align?: "left" | "center" | "right";
/**
* 是否允许菜单组展开收缩 默认:true
*/
isAllowSpread?: boolean;
/**
* 是否初始展开子菜单 默认:true
*/
isSpreadItem?: boolean;
/**
* 延迟关闭的毫秒数。当 trigger 为 hover 时才生效 默认:300
*/
delay?: number;
/**
* 自定义组件的样式类名
*/
className?: string;
/**
* 设置组件的 style 属性,从而定义新的样式
*/
style?: string;
/**
* 全局定义菜单的列表模板,添加任意 html 字符,模版将被 laytpl 组件所转义,
* 因此可通过 {{ d.title }} 的方式得到当前菜单配置的数据。
* 详见 https:// www.layui.com/doc/modules/dropdown.html#templet
*/
templet?: string;
/**
* 自定义组件内容,从而替代默认的菜单结构
*/
content?: string;
/**
* 组件成功弹出后的回调,并返回两个参数
* @param [elemPanel] 弹出的面板
* @param [elem] 点击的面板
*/
ready?(elemPanel: JQuery, elem: JQuery): void;
/**
* 菜单项被点击时的回调,并返回两个参数
*/
click?(data: any, othis: JQuery): void;
}
/**
* reload时是用,全部可选
*/
type DropDownOptionForReload = Partial;
/**
* 全部必有项 用于查看
*/
type DropDownOptionForRead = Required;
interface DropDownModule {
config: DropDownOptionForRead;
reload(options?: DropDownOptionForReload | object): void;
}
interface DropDown {
config: { [index: string]: any };
index: number;
set(options: DropDownOption): DropDown;
/**
* 给dropdown绑定事件,当前只有click 即event类似:click(id|filter)
* @param [event] 事件名 如: click(id|filter) 括号内是.layui-menu的id=""或者lay-filter=""
* @param [callback] 回调中的参数是 中lay-options的值 字符串用''
*/
on(event: string, callback: (this: HTMLElement, obj: any) => any): any;
/**
* 重载实例
* @param [id] id参数为render>options中的id,如果render时未指定id则从1开始。
* @param [options] 全部基础参数
*/
reload(id: string, options: DropDownOptionForReload): DropDownModule;
/**
* 核心入口
*/
render(options: DropDownOption): DropDownModule;
}
interface TabOption {
/**
* 选项卡的标题 不写则是unnaming
*/
title?: string;
/**
* '选项卡的内容' ,支持传入html
*/
content?: string;
/**
* 选项卡标题的lay-id属性值
*/
id?: string;
}
interface TabElement {
/**
* 指定tab头元素项
*/
headerElem: string | HTMLElement | JQuery;
/**
* 指定tab主体元素项
*/
bodyElem: string | HTMLElement | JQuery;
}
// https://www.layui.com/doc/modules/element.html
/**
* 元素操作
*/
interface Element {
config: { [index: string]: any };
// set(options?: ): object; 很少用
/**
* 用于元素的一些事件触发
* @param [filter] 比如:tab(filter),tabDelete(filter),nav(filter),collapse(filter)
* @param [callback] 不同filter对应的data类型不同
*/
on(filter: string, callback: (this: any, data: any) => any): any;
/**
* 用于新增一个Tab选项
* @param [filter] tab元素的 lay-filter="value" 过滤器的值(value)
* @param [options] 设定可选值的对象,
*/
tabAdd(filter: string, options: TabOption): void;
/**
* 用于删除指定的Tab选项
* @param [filter] tab元素的 lay-filter="value" 过滤器的值(value)
* @param [layid] 选项卡标题列表的 属性 lay-id 的值
*/
tabDelete(filter: string, layid: string): void;
/**
* 用于外部切换到指定的Tab项上
* @param [filter] 比如:element.tabChange('demo', 'layid');中的'demo'
* @param [layid] 比如:lay-id="yyy"中的'yyy'
*/
tabChange(filter: string, layid: string): void;
/**
* 用于绑定自定义 Tab 元素(即非 layui 自带的 tab 结构)
* @param [option] 参数
*/
tab(option: TabElement): void;
/**
* 用于动态改变进度条百分比: 例如:element.progress('demo', '30%');
* @param [filter] lay-filter
* @param [percent] 比例
*/
progress(filter: string, percent: string): void;
/**
* 更新渲染同render, 2.1.6 开始,可以用 element.render(type, filter); 方法替代
* @param [type] 可选有:'tab' | 'nav' | 'breadcrumb' | 'progress' | 'collapse'
* @param [filter] lay-filter
*/
init(type?: "tab" | "nav" | "breadcrumb" | "progress" | "collapse", filter?: string): void;
/**
* 更新渲染 ,当type不能识别时,layui会遍历渲染"tab""nav"|"breadcrumb"|"progress"|"collapse" 全部;
* @param [type] 表单的type类型,如下:
* 1、tab 重新对tab选项卡进行初始化渲染,
* 2、nav 重新对导航进行渲染
* 3、breadcrumb 重新对面包屑进行渲染
* 4、progress 重新对进度条进行渲染
* 5、collapse 重新对折叠面板进行渲染
* @param [filter] 为元素的 lay-filter="" 的值,用于局部更新
*/
render(type?: "tab" | "nav" | "breadcrumb" | "progress" | "collapse", filter?: string): void;
}
interface FlowOption {
/**
* 指定列表容器的选择器
*/
elem?: string | HTMLElement;
/**
* 滚动条所在元素选择器,默认document。如果你不是通过窗口滚动来触发流加载,
* 而是页面中的某一个容器的滚动条,那么通过该参数指定即可。
*/
scrollElem?: string | HTMLElement;
/**
* 是否自动加载。默认true。如果设为false,点会在列表底部生成一个“加载更多”的button,则只能点击它才会加载下一页数据。
*/
isAuto?: boolean;
/**
* 用于显示末页内容,可传入任意HTML字符。默认为:没有更多了
*/
end?: string;
/**
* 是否开启图片懒加载。默认false。
* 如果设为true,则只会对在可视区域的图片进行按需加载。但与此同时,在拼接列表字符的时候,
* 你不能给列表中的img元素赋值src,必须要用lay-src取代
*/
isLazyimg?: boolean;
/**
* 与底部的临界距离,默认50。即当滚动条与底部产生该距离时,触发加载。注意:只有在isAuto为true时有效。
*/
mb?: number;
/**
* 到达临界点触发加载的回调。信息流最重要的一个存在。携带两个参数:page, next
*/
done?: (page: number, next: (html: string, hasMore: boolean) => void) => void;
}
// https://www.layui.com/doc/modules/flow.html
/**
* 流加载
*/
interface Flow {
/**
* 流加载
* @param option 信息流参数
*/
load(option: FlowOption): void;
/**
* 图片懒加载
* @param [option] 参数
*/
lazyimg(option?: {
/**
* 指定开启懒加载的img元素选择器,如 elem: '.demo img' 或 elem: 'img.load' 默认:img
*/
elem?: string;
/**
* 滚动条所在元素选择器,默认document
*/
scrollElem?: string;
}): void;
}
interface LayFormData {
/**
* 被执行事件的元素DOM对象,一般为button对象 ,可能是input select button等不能用HTMLElement
*/
elem: any;
/**
* 得到美化后的DOM对象=$(selector)
*/
othis: JQuery;
/**
* DOM对象值
*/
value: string;
/**
* 被执行提交的form对象,一般在存在form标签时才会返回
*/
form: HTMLFormElement;
/**
* 当前容器的全部表单字段,名值对形式:{name: value}
*/
field: any;
}
interface LayFormVerifyConfig {
[index: string]: ((value: string, item: HTMLElement) => any) | [RegExp, string];
}
// https://www.layui.com/doc/element/form.html
// https://www.layui.com/doc/modules/form.html
/**
* 表单 - 页面元素
*/
interface Form {
config: {
autocomplete: any;
/**
* form内置的验证
*/
verify: {
/**
* 日期验证 date[0]是正则,date[1]是验证失败的提示("日期格式不正确")
*/
date: [RegExp, string];
/**
* 邮箱验证 email[0]是正则,email[1]是验证失败的提示("邮箱格式不正确")
*/
email: [RegExp, string];
/**
* 身份证号验证 identity[0]是正则,identity[1]是验证失败的提示( 请输入正确的身份证号")
*/
identity: [RegExp, string];
/**
* 验证数字,如果参数不是数字则返回"只能填写数字",是数字则无返回值
* bug:当0,"0"会提示不是数字
* @param [arg] 参数 比如 1,"1",-1
*/
number: (arg: any) => string | null;
/**
* 手机号验证 phone[0]是正则,phone[1]是验证失败的提示("请输入正确的手机号")
*/
phone: [RegExp, string];
/**
* 空值验证 required[0]是正则,required[1]是为空的提示("必填项不能为空")
*/
required: [RegExp, string];
/**
* url验证 url[0]是正则,url[1]是验证失败的提示("链接格式不正确")
*/
url: [RegExp, string];
[index: string]: [RegExp, string] | ((...arg: any) => any);
};
};
/**
* 取值,取出所有子元素是input,select,textarea且有name的表单值
* @param [filter] class=""lay-filter=""中的值
* @param [itemForm] 表单field子元素的父容器,没有则是第一个.layui-form作为父元素。实例:$(".layui-form"),
*/
getValue(filter: string, itemForm?: JQuery): { [index: string]: string };
/**
* 表单field元素回调事件 (每个表单都有一个默认事件)
* @param [event] 类似: select(x)|checkbox(x)|switch(x)|radio(x)|submit(x) x为field上的lay-filter="x"
* @param [callback] 回调函数
*/
on(event: string, callback: (data: LayFormData) => any): any;
/**
* 更新渲染,对动态插入的元素渲染
* @param [type] 可选:'select' | 'checkbox' | 'radio' | null
* @param [filter] lay-filter
*/
render(type?: "select" | "checkbox" | "radio" | null, filter?: string): Form;
/**
* 表单赋值 / 取值
* @param [filter] .layui-form 上的lay-filter=""值
* @param [obj] 要设置的值
*/
val(filter: string, obj?: object): any;
/**
* 维护表单验证
* @param [config] 验证参数
*/
verify(config: LayFormVerifyConfig): Form;
}
interface LAY extends Omit {
/**
* 当前的选择器
*/
selector: string | undefined;
/**
* 添加css类
* @param [className] 类名,必须项 比如 a 或 a b
* @param [remove] 是否是移除className 默认false即添加
*/
addClass(className: string, remove?: boolean): HTMLElement[];
/**
* 追加内容
* @param [elem] html或者元素对象
*/
append(elem?: string | HTMLElement): HTMLElement[];
/**
* 设置元素属性
* @param [key] 是attribute的key
* @param [value] 是attribute的value
*/
attr(key: string, value: any): HTMLElement[];
/**
* 获取第一个元素属性
*/
attr(): string;
/**
* 添加 css style
* @param [key] 属性css
* @param [value] 值
*/
css(key: string, value: any): HTMLElement[];
/**
* 获取 css style
* @param [key] 属性css
*/
css(key: string): string;
/**
* 对元素遍历
* @param [fn] (index,elem)
*/
each(fn?: (this: HTMLElement, index: number, elem: HTMLElement) => any): HTMLElement[];
/**
* 查找子元素
* @param [selector] 选择器
*/
find(selector: string | HTMLElement): LAY;
/**
* 是否包含 css 类
* @param [className] 类名
*/
hasClass(className: string): boolean;
/**
* 设置高度
* @param [value] 元素宽度
*/
height(value: number | string): HTMLElement[];
/**
* 获取第一个元素高度
*/
height(): number;
/**
* 设置元素的innerHTML
* @param [html] html
*/
html(html: string): HTMLElement[];
/**
* 获取第一个元素的innerHTML
*/
html(): string;
/**
* 解除事件
* @param [eventName] 事件名 比如click
* @param [fn] 回调
*/
off(eventName: string, fn: (...args: any) => any): HTMLElement[];
/**
* 事件绑定,注意:只支持内置事件,不支持自定义事件
* @param [eventName] 事件名 比如click,自定事件会绑定失败
* @param [fn] 回调 (tip:this:any)
*/
on(eventName: keyof HTMLElementEventMap, fn: (...args: any) => any): HTMLElement[];
/**
* 移除元素
* @param [elem] 实际是removeChild(elem)
*/
remove(elem: HTMLElement): HTMLElement[];
/**
* 移除 指定的attribute
* @param [key] 是attribute的key
*/
removeAttr(key: string): HTMLElement[];
/**
* 移除 className
* @param [className]
*/
removeClass(className: string): HTMLElement[];
/**
* 设置元素的value
* @param [value] 值
*/
val(value: any): HTMLElement[];
/**
* 获取第一个元素的value
*/
val(): string;
/**
* 设置宽度
* @param [value] 元素宽度
*/
width(value: number | string): HTMLElement[];
/**
* 获取第一个元素宽度
*/
width(): number;
}
interface Lay {
/**
* 查找 DOM 作为返回实例的操作对象
* @param [selector] 选择器 原始dom或者选择器串
*/
(selector?: string | HTMLElement): LAY;
v: string;
/**
* 把多个对象深层复制到dest,返回也为dest
* @param [dest]
* @param [src]
*/
extend(dest: any, ...src: any): any;
/**
* 如果是ie则是版本,非ie则false
*/
ie: boolean | string;
layui: Layui;
/**
* 获取当前 JS 所在目录
*/
getPath: string;
/**
* 阻止事件冒泡
*/
stope(event?: Event): void;
/**
* 对象(Array、Object、DOM 对象等)遍历,可用于取代 for 语句 同layui.each
* @param [obj]
* @param [fn]
*/
each(obj: object, fn?: (k: string, v: any) => void): Lay;
/**
* 数字前置补零
* @param [num] 数字
* @param [length] 补0后的长度
*/
digit(num?: any, length?: number): string;
/**
* 根据tagName生成HTMLElement子元素
* @param [elemName] ts中小写可智能提示
* @param [attr] 属性名
*/
elem(elemName: K, attr?: object): HTMLElementTagNameMap[K];
/**
* 根据tagName生成HTMLElement子元素
* @param elemName 非小写内置tagName
* @param [attr] 属性名
*/
elem(elemName: string, attr?: object): HTMLElement;
/**
* 当前页面body是否存在滚动条
*/
hasScrollbar(): boolean;
/**
* unknown
* @param [elem] HTMLElement
* @param [elemView]
* @param [obj]
*/
position(elem: HTMLElement, elemView: any, obj?: any): any;
/**
* 获取元素上的参数,同jquery.attr()
* @param [elem] html元素
* @param [attr] 若空则为lay-options
*/
options(elem: string | HTMLElement | JQuery, attr?: string): any;
/**
* 元素是否属于顶级元素(顶级:document 或 body)
* @param [elem] 只有document或body才返回true
*/
isTopElem(elem: any): boolean;
}
interface DateParam {
year?: number;
month?: number;
date?: number;
hours?: number;
minutes?: number;
seconds?: number;
}
interface DateOption {
/**
* 绑定的元素 ,选择的值会填充该元素
*/
elem?: string | HTMLElement | JQuery;
/**
* 控件选择类型
*/
type?: "year" | "month" | "date" | "time" | "datetime";
/**
* 开启左右面板范围选择
*/
range?: string | boolean | any[];
/**
* 自定义格式 默认值:yyyy-MM-dd 实例: 'yyyy年MM月dd日'
* yyyy 年份,至少四位数。如果不足四位,则前面补零
* y 年份,不限制位数,即不管年份多少位,前面均不补零
* MM 月份,至少两位数。如果不足两位,则前面补零。
* M 月份,允许一位数。
* dd 日期,至少两位数。如果不足两位,则前面补零。
* d 日期,允许一位数。
* HH 小时,至少两位数。如果不足两位,则前面补零。
* H 小时,允许一位数。
* mm 分钟,至少两位数。如果不足两位,则前面补零。
* m 分钟,允许一位数。
* ss 秒数,至少两位数。如果不足两位,则前面补零。
* s 秒数,允许一位数。
*/
format?: string;
/**
* 初始值 ""|new Date()|20180115
*/
value?: string | Date | number;
/**
* 初始值填充 默认值:true
*/
/**
* 用于控制是否自动向元素填充初始值(需配合 value 参数使用)
*/
isInitValue?: boolean;
/**
* 是否开启选择值预览
* 用于控制是否显示当前结果的预览(type 为 datetime 时不开启)
*/
isPreview?: boolean;
/**
* 最小范围内的日期时间值
* 1.如果值为字符类型,则:年月日必须用 -(中划线)分割、时分秒必须用 :(半角冒号)号分割。这里并非遵循 format 设定的格式
* 2.如果值为整数类型,且数字<86400000,则数字代表天数,如:min: -7,即代表最小日期在7天前,正数代表若干天后
* 3.如果值为整数类型,且数字 ≥ 86400000,则数字代表时间戳,如:max: 4073558400000,即代表最大日期在:公元3000年1月1日
*/
min?: string | number;
/**
* 最大范围内的日期时间值
* 1.如果值为字符类型,则:年月日必须用 -(中划线)分割、时分秒必须用 :(半角冒号)号分割。这里并非遵循 format 设定的格式
* 2.如果值为整数类型,且数字<86400000,则数字代表天数,如:min: -7,即代表最小日期在7天前,正数代表若干天后
* 3.如果值为整数类型,且数字 ≥ 86400000,则数字代表时间戳,如:max: 4073558400000,即代表最大日期在:公元3000年1月1日
*/
max?: string | number;
/**
* 自定义弹出控件的事件 默认值:focus,如果绑定的元素非输入框,则默认事件为:click
*/
trigger?: string;
/**
* 默认显示 默认值:false
*/
show?: boolean;
/**
* 阻止关闭事件冒泡
*/
closeStop?: string;
/**
* 定位方式
*/
position?: "abolute" | "fixed" | "static";
/**
* 层叠顺序 ,如果 position 参数设为 static 时,该参数无效。
*/
zIndex?: number;
/**
* 是否显示底部栏
*/
showBottom?: boolean;
/**
* 工具按钮 默认值:['clear', 'now', 'confirm']
*/
btns?: Array<"clear" | "now" | "confirm">;
/**
* 语言 内置了两种语言版本:cn(中文版)、en(国际版,即英文版) ,默认值:cn
*/
lang?: "cn" | "en";
/**
* 主题 ,默认值:default
*/
theme?: string | "default" | "molv" | "grid";
/**
* 是否显示公历节日 默认值:false
*/
calendar?: boolean;
/**
* 标注重要日子 实例:{'0-0-31':'月末'} 比如2月bug
*/
mark?: { [key: string]: string };
eventElem?: string | HTMLElement | JQuery;
/**
* 控件初始打开的回调
* @param [date] 基础参数
*/
ready?(dateParam: DateParam): void;
/**
* 日期时间被切换后的回调 this to test and elem
* @param [value] 得到日期生成的值,如:2017-08-18 范围:"2021-07-06 - 2021-08-09"
* @param [date] 得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
* @param [endDate] 开启范围选择(range: true)才会返回。对象成员同上date
*/
change?(this: Required, value: string, date: DateParam, endDate: DateParam): void;
/**
* 控件选择完毕后的回调
* @param [value] 得到日期生成的值,如:2017-08-18 范围:"2021-07-06 - 2021-08-09"
* @param [date] 得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
* @param [endDate] 开启范围选择(range: true)才会返回。对象成员同上date
*/
done?(value: string, date: DateParam, endDate: DateParam): void;
}
/**
* 日期和时间组件
*/
interface Laydate {
/**
* 核心方法
* @param [options] 基础参数
*/
render(options: DateOption): { config: DateOption; hint: (content: string) => void };
/**
* 设置全局参数
* @param [options]
*/
set(options?: DateOption): Laydate;
/**
* 配置基础路径
* 如果你不是采用 layui 或者普通 script 标签方式加载的 laydate.js,
* 而是采用 requirejs 等其它方式引用 laydate,
* 那么你需要设置基础路径,以便 laydate.css 完成加载。
*/
path: string;
/**
* 获取指定年月的最后一天
* @param [month] month默认为当前月
* @param [year] year默认为当前年
*/
getEndDate(month?: number, year?: number): number;
}
/**
* 编辑器基本设置
*/
interface EditOption {
/**
* 重新定制编辑器工具栏,如: tool: ['link', 'unlink', 'face'] 当前可选有:
* 'strong' //加粗
* ,'italic' //斜体
* ,'underline' //下划线
* ,'del' //删除线
*
* ,'|' //分割线
*
* ,'left' //左对齐
* ,'center' //居中对齐
* ,'right' //右对齐
* ,'link' //超链接
* ,'unlink' //清除链接
* ,'face' //表情
* ,'image' //插入图片
* ,'help' //帮助
*/
tool?: string[];
/**
* 不显示编辑器工具栏,一般用于隐藏默认配置的工具bar
*/
hideTool?: string[];
/**
* 设定编辑器的初始高度
*/
height?: number | string;
/**
* 设定图片上传接口,如:uploadImage: {url: '/upload/', type: 'post'},需要服务端返回:
* {
* "code": 0 // 0表示成功,其它失败
* ,"msg": "" // 提示信息 一般上传失败后返回
* ,"data": {
* "src": "图片路径"
* ,"title": "图片名称" //可选
* }
* }
*/
uploadImage?: { url: string; type: string };
}
// https://www.layui.com/doc/modules/layedit.html
/**
* 富文本编辑器
*/
interface Layedit {
/**
* 用于建立编辑器的核心方法
* @param [id] 实例元素(一般为textarea)的id值
* @param [options] 编辑器的可配置项
*/
build(id: string, options?: EditOption): any;
/**
* 设置编辑器的全局属性
* @param [options]
*/
set(options: EditOption): Layedit;
/**
* 获得编辑器的内容
* @param [index] 即执行layedit.build返回的值
*/
getContent(index: number): string;
/**
* 获得编辑器的纯文本内容
* @param [index] 即执行layedit.build返回的值
*/
getText(index: number): string;
/**
* 用于同步编辑器内容到textarea(一般用于异步提交)
* @param [index] 即执行layedit.build返回的值
*/
sync(index: number): void;
/**
* 获取编辑器选中的文本
* @param [index] 即执行layedit.build返回的值
*/
getSelection(index: number): string;
}
// https://www.layui.com/doc/modules/layer.html#base
/**
* 弹层组件
*/
interface LayerOptions {
/**
* 基本层类型 ,layer提供了5种层类型。可传入的值有:
* 0(默认信息框),1(页面层),
* 2(iframe层),3(加载层),4(tips层)。
* 若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)
*/
type?: 0 | 1 | 2 | 3 | 4;
/**
* 标题,不想显示标题栏可以title: false
* @example
* title :'我是标题'
* title: ['文本', 'font-size:18px;'] // 给文本指定style样式
*/
title?: string | boolean | string[];
/**
* 内容
* @default ''
*/
content?: string | HTMLElement | JQuery | string[];
/**
* 样式类名,允许你传入layer内置的样式class名,还可以传入您自定义的class名
* @default ''
* @example
* skin: 'demo-class'
*/
skin?: string;
/**
* 宽高
* @default 'auto'
* @example
* area: '500px' // 高会自适应
* area: ['500px', '300px'] // 指定宽高
*/
area?: string | string[];
// https://www.layui.com/doc/modules/layer.html#offset
/**
* 坐标
* @default 'auto' // 即垂直水平居中
* @example
* offset: '100px' // 只定义top坐标,水平保持居中
* offset: ['100px', '50px'] // 同时定义top、left坐标
* offset: 't' // 快捷设置顶部坐标
* offset: 'r' // 快捷设置右边缘坐标
* offset: 'b' // 快捷设置底部坐标
* offset: 'l' // 快捷设置左边缘坐标
* offset: 'lt' // 快捷设置左上角
* offset: 'lb' // 快捷设置左下角
* offset: 'rt' // 快捷设置右上角
* offset: 'rb' // 快捷设置右下角
*/
offset?: number | string | string[];
/**
* 图标
* 当type为0(即信息框)可以传入0-6启用图标
* 当type为3(即加载层)可以传入0-2启用图标
* @default -1 // 不显示图标
* @example
* type:0,icon: 0 //0(!),1(√),2(x),3(?),4(锁),5(cry),6(smile), 其他数字同0
* type:3,icon:0 //0(3个点),1(慢圈),2(慢快圈) ,其他数字同0
*/
icon?: number;
// https://www.layui.com/doc/modules/layer.html#btn
/**
* 按钮
* 信息框模式时(type:0),btn默认是一个确认按钮,其它层类型则默认不显示,加载层和tips层则无效
* 可以定义更多按钮,比如:btn: ['按钮1', '按钮2', '按钮3', …],按钮1的回调是yes,
* 而从按钮2开始,则回调为btn2: function(){},以此类推。
* @default '确认'
* @example
* type:0,btn: '我知道了'
* type:0,btn: ['yes','btn2'] // 第一个对应yes回调,后边对应btn2,btn3回调
*/
btn?: string | string[];
/**
* 按钮排列 默认:r
* @default 'r'
* @example
* btnAlign: 'l' // 按钮左对齐
* btnAlign: 'c' // 按钮居中对齐
* btnAlign: 'r' // 按钮右对齐。默认值,不用设置
*/
btnAlign?: string;
/**
* 右上角的关闭按钮 默认:1
* layer提供了两种风格的关闭按钮,可通过配置1和2来展示,如果不显示,则closeBtn: 0
* @default 1
* @example
* closeBtn: 0 // 隐藏右上角的关闭按钮
* closeBtn: 1 // x
* closeBtn: 2 // O+x
*/
closeBtn?: string | boolean | number;
/**
* 遮罩
* @default 0.3 // 0.3透明度的黑色背景('#000')
* @example
* shade: 0 // 不显示遮罩
* shade: [0.8, '#393D49'] // 指定透明度和遮罩颜色
*/
shade?: string | boolean | number | [number, string];
/**
* 是否点击遮罩关闭
* @default false
*/
shadeClose?: boolean;
/**
* 自动关闭所需毫秒
* @default 0
* @example
* time: 5000 // 即代表5秒后自动关闭
*/
time?: number;
/**
* 用于控制弹层唯一标识
* 设置该值后,不管是什么类型的层,都只允许同时弹出一个。一般用于页面层和iframe层模式
* @default ''
*/
id?: string;
// https://www.layui.com/doc/modules/layer.html#anim
/**
* 弹出动画
* 目前anim可支持的动画类型有0-6 如果不想显示动画,设置 anim: -1 即可
* @default 0
* @example
* anim: -1 // 不显示动画
* anim: 0 // 平滑放大。默认
* anim: 1 // 从上掉落
* anim: 2 // 从最底部往上滑入
* anim: 3 // 从左滑入
* anim: 4 // 从左翻滚
* anim: 5 // 渐显
* anim: 6 // 抖动
*/
anim?: number;
/**
* 关闭动画
* @default true
*/
isOutAnim?: boolean;
/**
* 最大最小化
* 该参数值对type:1和type:2有效,需要显示配置maxmin: true即可
* @default false // 默认不显示最大小化按钮
* @example
* type:1,maxmin:true
* type:2,maxmin:true
*/
maxmin?: boolean;
/**
* 固定 ,即鼠标滚动时,层是否固定在可视区域
* @default true // 默认固定在可视区域显示
* @example
* fixed: false // 不固定
*/
fixed?: boolean;
/**
* 是否允许拉伸 ,该参数对loading(type:3)、tips(type:4)层无效
* @default true // 允许拉伸,在弹层右下角拖动来拉伸尺寸
*/
resize?: boolean;
/**
* 监听窗口拉伸动作
* @default null
*/
resizing?(layero: JQuery): any;
/**
* 是否允许浏览器出现滚动条
* @default true
*/
scrollbar?: boolean;
/**
* 最大宽度 ,只有当area: 'auto'时,maxWidth的设定才有效。
* @default 360
* @example
* area: 'auto',maxWidth: 800
*/
maxWidth?: number;
/**
* 层叠顺序
* @default 19891014
*/
zIndex?: number;
/**
* 触发拖动的元素
* @default '.layui-layer-title'
*/
move?: string | boolean | HTMLElement;
/**
* 固定1,不能修改
*/
readonly moveType?: boolean;
/**
* 是否允许拖拽到窗口外
* @default false
*/
moveOut?: boolean;
/**
* 拖动完毕后的回调方法
* @default null
*/
moveEnd?: null | ((layero: JQuery) => any);
/**
* tips方向和颜色
* @default 2 // 箭头在右边,黑色
* @example
* tips: 1 //箭头在上
* tips: 2 //箭头在右
* tips: 3 //箭头在下
* tips: 4 //箭头在左
* layui.layer.tips('提示内容','#abc',{tips:1})
* layui.layer.tips('提示内容','#abc',{tips:[1, 'red']}) // 指定颜色
* layui.layer.tips('提示内容','#abc',{tips:[1, '#f00']})
* layui.layer.tips('提示内容','#abc',{tips:[1, 'rgb(255,0,0)']})
*/
tips?: number | [number, string];
/**
* 是否允许多个tips ,true则允许多个意味着不会销毁之前的tips层
* @default false // 同一时刻只有一个提示框
*/
tipsMore?: boolean;
/**
* 层弹出后的成功回调方法
*/
success?(layero: JQuery, index: number): void;
/**
* 确定按钮回调方法
*/
yes?: LayerCallbackYes;
/**
* 可以定义更多按钮,比如:btn: ['按钮1', '按钮2', '按钮3', …],按钮1的回调是yes,
* 而从按钮2开始,则回调为btn2: function(){},以此类推。
*/
btn2?: LayerCallbackYes;
btn3?: LayerCallbackYes;
btn4?: LayerCallbackYes;
btn5?: LayerCallbackYes;
btn6?: LayerCallbackYes;
btn7?: LayerCallbackYes;
btn8?: LayerCallbackYes;
btn9?: LayerCallbackYes;
/**
* 右上角关闭按钮触发的回调
*/
cancel?: LayerCallbackCancel;
/**
* 层销毁后触发的回调
*/
end?: LayerCallbackEnd;
/**
* 最大化后触发的回调
*/
full?: LayerCallbackFull;
/**
* 最小化后触发的回调
*/
min?: LayerCallbackMin;
/**
* 还原后触发的回调
*/
restore?: LayerCallbackRestore;
/**
* 最小化后是否默认堆叠在左下角 默认:true
*/
minStack?: boolean;
}
/**
* 配置layer层的基础参数
* @example ```javascript
* layui.layer.config({
* anim: 1, // 默认动画风格
* skin: 'layui-layer-molv', // 默认皮肤
* extend: 'myskin/style.css', // 样式位置
* //...
* });
*/
interface LayerConfigOptions extends LayerOptions {
/**
* layer.js所在的目录,可以是绝对目录,也可以是相对目录
* @example
* path: '/res/layer/'
*/
path?: string;
/**
* 要加载的拓展css皮肤
* 如果是独立版的layer,则将 myskin 存放在 ./skin 目录下
* 如果是layui中使用layer,则将 myskin 存放在 ./css/modules/layer 目录下
* @example
* extend: 'myskin/style.css'
*/
extend?: string[] | string;
}
/**
* 输入框的参数对象
* @example ```javascript
* layui.layer.prompt({
* formType: 2, // 输入框类型,支持0(文本)默认1(密码)2(多行文本)
* value: '初始值', // 初始时的值,默认空字符
* maxlength: 140, // 可输入文本的最大长度,默认500
* title: '请输入值',
* area: ['800px', '350px'], // 自定义文本域宽高
* },(value, index, elem) => {
* layui.layer.alert(value); // 得到value
* layui.layer.close(index);
* },
* );
* ```
*/
interface LayerPromptOptions extends LayerOptions {
/**
* 输入框类型,支持0(文本)默认1(密码)2(多行文本)
* @example
* formType: 0 // 文本
* formType: 1 // 密码
* formType: 2 // 多行文本
*/
formType?: number;
/**
* 初始时的值
* @default ''
*/
value?: string;
/**
* 可输入文本的最大长度
* @default 500
*/
maxlength?: number;
/**
* 自定义文本域宽高
* @example
* ['800px', '350px']
*/
area?: string[];
}
interface LayerTabOptions extends LayerOptions {
tab: Array<{ title: string; content: string }>;
}
interface LayerPhotosOptions extends LayerOptions {
/**
* json或者选择器 用于构造img
*/
photos?: LayerPhotosData | string | JQuery;
/**
* 切换图片时触发
* @param [pic] 当前图片的一些信息
* @param [layero] 当前元素
*/
tab?(pic: LayerPhotosDataItem, layero: JQuery): void;
}
interface LayerPhotosData {
/**
* 相册标题
*/
title?: string;
/**
* 相册id
* @example
* id: 123
*/
id?: number;
/**
* 初始显示的图片序号
* @default 0
*/
start?: number;
/**
* 相册包含的图片,数组格式
* @example ```javascript
* "data": [{
* "alt": "图片名",
* "pid": 666, //图片id
* "src": "", //原图地址
* "thumb": "" //缩略图地址
* }]
* ```
*/
data?: LayerPhotosDataItem[];
}
interface LayerPhotosDataItem {
/**
* 图片名
*/
alt?: string;
/**
* 图片id
*/
pid?: number;
/**
* 原图地址
*/
src?: string;
/**
* 缩略图地址
*/
thumb?: string;
}
/**
* 弹层组件
*/
interface Layer {
ie: boolean;
index: number;
path: string;
v: string;
zIndex: number;
// https://www.layui.com/doc/modules/layer.html#layer.config
/**
* 初始化全局配置
* @param [options] 基础参数
* @param [fn] 无用
*/
config(options: LayerConfigOptions, fn?: any): void;
/**
* 执行初始化,就绪后执行回调参数
* ready(path: string, callback: () => void): void; //兼容旧版?
* 初始化就绪 (CSS完成的回调),当你在页面一打开就要执行弹层时可放入回调中
* @param [callback] 就绪后回调
*/
ready(callback: () => void): void;
/**
* 原始核心方法
* @param [options] 基础参数
*/
open(options?: LayerOptions): number;
/**
* 普通信息框
* @param [content] 内容
* @param [options] 基础参数
* @param [yes] 点击确定后的回调
*/
alert(content?: any, options?: LayerOptions, yes?: LayerCallbackYes): number;
// 源码中会第三个参数代替第二个。单独定义一个方法。
/**
* 普通信息框
* @param [content] 内容
* @param [yes] 点击确定后的回调
*/
alert(content: any, yes: LayerCallbackYes): number;
/**
* 询问框
* @param [content] 提示内容
* @param [options] 参数
* @param [yes] 确认回调
* @param [cancel] 右上角关闭按钮触发的回调
* @example ```javascript
* layer.confirm('is not?', {
* icon: 3,
* title: '提示',
* cancel: (index, layero) => {
* console.log("点击了右上角关闭");
* //return false //点击右上角叉号不能关闭
* }
* }, (index, layero) => {
* console.log("点击了下边的第一个按钮'确定'");
* layer.close(index);//需要手动关闭
* }, (index, layero) => {
* console.log("点击了下边的第二个按钮'取消'");
* //return false // 点击取消不能关闭
* });
* ```
*/
confirm(content?: any, options?: LayerOptions, yes?: LayerCallbackYes, cancel?: LayerCallbackCancel): number;
/**
* 询问框
* @param [content] 提示内容
* @param [yes] 确认回调
* @param [cancel] 右上角关闭按钮触发的回调
* @example ```javascript
* layer.confirm('is not?', (index,layero) => {
* // do something
* layer.close(index);
* },(index,layero)=>{
* return false // 返回false则取消关闭
* });
* ```
*/
confirm(content: any, yes: LayerCallbackYes, cancel?: LayerCallbackCancel): number;
// https://www.layui.com/doc/modules/layer.html#layer.msg
/**
* 提示框
* @param [content] 提示内容
* @param [options] 参数
* @param [end] 自动关闭后的回调
*/
msg(content?: string, options?: LayerOptions, end?: LayerCallbackEnd): number;
// https://www.layui.com/doc/modules/layer.html#layer.load
/**
* 提示框
* @param [content] 提示内容
* @param [end] 自动关闭后的回调
*/
msg(content: string, end?: LayerCallbackEnd): number;
/**
* 加载层
* @param [icon] 可用:0,1,2
* @param [options] 参数
*/
load(icon?: number, options?: LayerOptions): number;
/**
* 加载层
* @param [options] 参数
*/
load(options: LayerOptions): number;
// https://www.layui.com/doc/modules/layer.html#layer.tips
/**
* tips层
* @param [content] 显示的内容
* @param [follow] 在那里显示
* @param [options] 参数
*/
tips(content?: string, follow?: string | HTMLElement | JQuery, options?: LayerOptions): number;
/**
* 关闭指定层
* @param [index] 层索引
* @param [callback] 关闭后的回调
*/
close(index: number, callback?: () => any): void;
/**
* 关闭所有层
* @param [type] 只想关闭某个类型的层,不传则关闭全部
*/
/**
* 闭所有层
* @param [type] 只想关闭某个类型(dialog,page,iframe,loading,tips)的层,不传则关闭全部
* @param [callback] 关闭所有层后执行回调
*/
closeAll(type?: "dialog" | "page" | "iframe" | "loading" | "tips", callback?: () => any): void;
/**
* @param [callback] 关闭所有层后执行回调
*/
closeAll(callback: () => any): void;
/**
* 重新定义层的样式
* @param [index] 层索引
* @param [options] 参数
* @param [limit] 影响宽度和高度
*/
style(index: number, options: { [key: string]: string | number }, limit?: boolean): void;
/**
* 改变层的标题
* @param [title] 新标题
* @param [index] 层索引
*/
title(title: string, index: number): void;
/**
* 获取iframe页的DOM
* @param [selector]
* @param [index]
*/
getChildFrame(selector: string | HTMLElement | JQuery, index: number): JQuery;
/**
* 获取特定iframe层的索引
* @param [windowName] 即window.name
*/
getFrameIndex(windowName: string): number;
/**
* 指定iframe层自适应
* @param [index] 层索引
*/
iframeAuto(index: number): void;
/**
* 重置特定iframe url
* 如:layer.iframeSrc(index, 'http://sentsin.com')
* @param [index] 层索引
* @param [url]
*/
iframeSrc(index: number, url: string): void;
/**
* 置顶当前窗口
* @param [layero]
*/
setTop(layero: JQuery): void;
/**
* 手工执行最大化
* @param [index] 层索引
*/
full(index: number): void;
/**
* 手工执行最小化
* @param [index] 层索引
*/
min(index: number): void;
/**
* 手工执行还原
* @param [index] 层索引
*/
restore(index: number): void;
/**
* 输入层
* @param [options] 参数
* @param [yes] 点击确定的回调,用该参数而不是用options的yes
*/
prompt(options?: LayerPromptOptions, yes?: LayerCallbackPrompt): number;
/**
* 输入层
* @param [yes] 点击确定的回调
*/
prompt(yes: LayerCallbackPrompt): number;
/**
* tab层
* @param [options] 参数,一般配置area和tab
*/
tab(options?: LayerTabOptions): number;
/**
* 相册层
* @param [options] 参数
*/
photos(options?: LayerPhotosOptions): number;
}
interface PageOptions {
/**
* 指向存放分页的容器,值可以是容器ID、DOM对象。如:
* 1. elem: 'id' 注意:这里不能加 # 号
* 2. elem: document.getElementById('id')
*/
elem?: string | HTMLElement;
/**
* 数据总数。一般通过服务端得到
*/
count?: number;
/**
* 每页显示的条数。laypage将会借助 count 和 limit 计算出分页数。 默认:10
*/
limit?: number;
/**
* 每页条数的选择项。如果 layout 参数开启了 limit, 默认:[10, 20, 30, 40, 50]
* 则会出现每页条数的select选择框
*/
limits?: number[];
/**
* 起始页。一般用于刷新类型的跳页以及HASH跳页
*/
curr?: number | string;
/**
* 连续出现的页码个数 默认:5
*/
groups?: number;
/**
* false:则不显示”上一页”的内容,其他值则是自定义”上一页”的内容 默认:上一页
*/
prev?: string;
/**
* false:则不显示”下一页”的内容,其他值则是自定义”下一页”的内容 默认:下一页
*/
next?: string;
/**
* false:则不显示”首页”的内容,其他值则是自定义”首页”的内容 默认:首页
*/
first?: string | boolean;
/**
* false:则不显示”尾页”的内容,其他值则是自定义”尾页”的内容 默认:尾页
*/
last?: string | boolean;
/**
* 自定义排版。可选值有:
* count(总条目输区域)、prev(上一页区域)、
* page(分页区域)、next(下一页区域)、limit(条目选项区域)、
* refresh(页面刷新区域。注意:layui 2.3.0 新增) 、skip(快捷跳页区域)
*/
layout?: Array<"count" | "prev" | "page" | "next" | "limit" | "refresh" | "skip">;
/**
* 自定义主题。支持传入:颜色值,或任意普通字符。
* 如:
* 1. theme: '#c00'
* 2. theme: 'xxx' //将会生成 class="layui-laypage-xxx" 的CSS类,以便自定义主题
*/
theme?: string;
/**
* 开启location.hash,并自定义 hash 值。如果开启,在触发分页时,
* 会自动对url追加:#!hash值={curr} 利用这个,可以在页面载入时就定位到指定页
*/
hash?: string | boolean;
/**
* 切换分页的回调
* @param [obj] 当前分页的所有选项值
* @param [first] 是否首次,一般用于初始加载的条件,true则会调用渲染
*/
jump?(obj: PageOptionsForCallback, first: boolean): void;
}
/**
* 先排除
*/
interface PageOptionsForCallback extends Omit, "count" | "curr" | "limit" | "groups"> {
/**
* 数据总数。一般通过服务端得到
*/
count: number;
/**
* 起始页。一般用于刷新类型的跳页以及HASH跳页
*/
curr: number;
/**
* 每页条数的选择项。如果 layout 参数开启了 limit, 默认:[10, 20, 30, 40, 50]
* 则会出现每页条数的select选择框
*/
limit: number;
/**
* 自动计算出的总分页数
*/
pages: number;
/**
* 连续出现的页码个数 默认:5
*/
groups: number;
}
// https://www.layui.com/doc/modules/laypage.html
/**
* 分页模块
*/
interface Laypage {
index: number;
on(
elem: HTMLElement | null,
event: K,
listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => void,
): void;
on(elem: HTMLElement | null, event: string, listener: (this: HTMLElement, ...args: any) => any): void;
render(options?: PageOptions): any;
}
// https://www.layui.com/doc/modules/laytpl.html
/**
* 模板引擎
*/
interface Laytpl {
(tpl: string): TplObject;
/**
* 重新定义分隔符
* 如果模版默认的 {{ }} 分隔符与你的其它模板(一般是服务端模板)存在冲突,你也可以重新定义分隔符:
* @param [option] 例如:{open: '<%',close: '%>'}
*/
config(option?: { open?: string; close?: string }): void;
}
interface TplObject {
tpl: string;
/**
* 执行解析,不常用,推荐render
* @param [tpl] 模板串
* @param [data] 数据
*/
parse(tpl: string, data: object): string;
/**
* 执行解析
* @param [data] 数据
* @param [callback] 解析后的回调,即可通过回调中参数也可通过render返回值获取解析后结果串
*/
render(data: object, callback?: (str: string) => any): string;
}
interface RateOption {
/**
* 指向容器选择器
*/
elem?: string | HTMLElement | JQuery;
/**
* 评分组件中具体星星的个数。
* 个数当然是整数啦,残缺的星星很可怜的,所以设置了小数点的组件我们会默认向下取整
*/
length?: number;
/**
* 评分的初始值 默认:0
*/
value?: number;
/**
* 主题颜色。
*/
/**
* 默认的组件颜色是#FFB800,你可以根据自身喜好来更改组件的颜色,以适用不同场景
*/
theme?: string;
/**
* 设定组件是否可以选择半星 默认:false
*/
half?: boolean;
/**
* 是否显示评分对应的内容 默认:false
*/
text?: boolean;
/**
* 是否只读,即只用于展示而不可点 默认:false
*/
readonly?: boolean;
/**
* 自定义文本的回调
* @param [value]
*/
setText?(value: number): void;
choose?(value: number): void;
}
// https://www.layui.com/doc/modules/rate.html
/**
* 评分组件
*/
interface Rate {
config: { [index: string]: any };
index: number;
/**
* @param [event]
* @param [callback]
*/
on(event: string, callback: (obj: any) => any): any;
/**
* 核心方法
* @param [option] 基础参数
*/
render(option: RateOption): Rate;
/**
* 设置全局参数
* @param [options] 基础参数
*/
set(options?: RateOption): Rate;
}
interface SliderOption {
/**
* 指向容器选择器
*/
elem?: string | HTMLElement | JQuery;
/**
* 滑块类型,可选值有:default(水平滑块)、vertical(垂直滑块) 默认:default
*/
type?: "default" | "vertical";
/**
* 滑动条最小值,正整数,默认: 0
*/
min?: number;
/**
* 滑动条最大值 默认:100
*/
max?: number;
/**
* 是否开启滑块的范围拖拽,若设为 true,则滑块将出现两个可拖拽的环 默认:false
*/
range?: boolean;
/**
* 滑块初始值,默认为数字,若开启了滑块为范围拖拽(即 range: true),则需赋值数组,
* 表示开始和结尾的区间,如:value: [30, 60]
*/
value?: number | number[];
/**
* 拖动的步长 默认:1
*/
step?: number;
/**
* 是否显示间断点 默认:false
*/
showstep?: boolean;
/**
* 是否显示文字提示 默认:true
*/
tips?: boolean;
/**
* 是否显示输入框(注意:若 range 参数为 true 则强制无效)
*/
/**
* 点击输入框的上下按钮,以及输入任意数字后回车或失去焦点,均可动态改变滑块 默认:false
*/
input?: boolean;
/**
* 滑动条高度,需配合 type:"vertical" 参数使用 默认:200
*/
height?: number;
/**
* 是否将滑块禁用拖拽 默认:false
*/
disabled?: boolean;
/**
* 主题颜色,以便用在不同的主题风格下 默认:#009688
*/
theme?: string;
/**
* 自定义提示文本
* @param [value] 滑块为范围模式是数组,否则是数字
*/
setTips?(value: number | number[]): string;
/**
* 数值改变的回调
* @param [value] 滑块为范围模式是数组,否则是数字
*/
change?(value: number | number[]): void;
}
// https://www.layui.com/doc/modules/slider.html
/**
* 滑块
*/
interface Slider {
config: { [index: string]: any };
index: number;
/**
* 设置滑块的全局参数
* @param [options] 基础参数
*/
set(options?: SliderOption): Slider;
// bug to fix
on(event: string, callback: (obj: any) => any): any;
/**
* 核心方法
* @param [option] 参数
*/
render(option: SliderOption): {
config: SliderOption;
/**
* 改变指定滑块实例的数值
* @param [value]
* @param [index] 若滑块开启了范围(range: true) 则index需要0和1
*/
setValue(value: any, index?: number): void;
};
// setValue(value1: number, value2?: number): void;
}
interface TableColumnOption {
checkbox?: boolean;
/**
* 设定字段名。非常重要,且是表格数据列的唯一标识,若没有则用索引
*/
field?: string;
/**
* 设定标题名称
*/
title?: string;
/**
* 设定列宽,若不填写,则自动分配;若填写,则支持值为:数字、百分比。
* 请结合实际情况,对不同列做不同设定。
*/
width?: string | number;
/**
* 局部定义当前常规单元格的最小宽度(默认:60),
* 一般用于列宽自动分配的情况。其优先级高于基础参数中的 cellMinWidth
*/
minWidth?: number;
/**
* 设定列类型,可选有: 默认:normal
*/
type?: "normal" | "checkbox" | "radio" | "space" | "numbers";
/**
* 是否全选状态(默认:false)。必须复选框列开启后才有效,
* 如果设置 true,则表示复选框默认全部选中。
*/
LAY_CHECKED?: boolean;
/**
* 固定列。可选值有:left(固定在左)、right(固定在右)。一旦设定,对应的列将会被固定在左或右,不随滚动条而滚动。
* 注意:如果是固定在左,该列必须放在表头最前面;如果是固定在右,该列必须放在表头最后面。
* 非"right"就是left
*/
fixed?: "left" | "right";
/**
* 是否初始隐藏列,默认:false
*/
hide?: boolean;
/**
* 是否开启该列的自动合计功能,默认:false。
* 1、parseData中包含totalRow可以映射自定字段
* 2、从 layui 2.6.3 开始,如果 totalRow 为一个 string 类型,则可解析为合计行的动态模板
* 实例:totalRow: '{{ d.TOTAL_NUMS }} 单位' 或 '{{ parseInt(d.TOTAL_NUMS) }}'
*/
totalRow?: boolean | { score: number | string; experience: string } | string;
/**
* 用于显示自定义的合计文本
*/
totalRowText?: string;
/**
* 是否允许排序(默认:false)。
* 如果设置 true,则在对应的表头显示排序icon,从而对列开启排序功能
*/
sort?: boolean;
/**
* 是否禁用拖拽列宽(默认:false)。默认情况下会根据列类型(type)来决定是否禁用,如复选框列,会自动禁用。
* 而其它普通列,默认允许拖拽列宽,当然你也可以设置 true 来禁用该功能。
*/
unresize?: boolean;
/**
* 单元格编辑类型(默认不开启)目前只支持:text(输入框)
*/
edit?: "text" | string;
/**
* 自定义单元格点击事件名,以便在 tool 事件中完成对该单元格的业务处理,
* 比如:table.on('tool(tableFilter)', function(obj){obj.event=''})
*/
event?: string;
/**
* 自定义单元格样式。即传入 CSS 样式,实例:"background-color: #5FB878; color: #fff";
*/
style?: string;
/**
* 单元格排列方式。可选值有:left(默认)、center(居中)、right(居右)
*/
align?: "left" | "center" | "right";
/**
* 单元格所占列数(默认:1)。一般用于多级表头
*/
colspan?: number;
/**
* 单元格所占行数(默认:1)。一般用于多级表头
*/
rowspan?: number;
/**
* 自定义列模板,模板遵循 laytpl 语法
* 回调参数d从v2.6.8新增 LAY_COL 字段,可得到当前列的表头配置信息
* laytpl:https://www.layui.com/doc/modules/laytpl.html
*/
templet?: string | ((d: TableColumnOptionForTemplet) => string);
/**
* 绑定工具条模板。可在每行对应的列中出现一些自定义的操作性按钮
* dom选择器,例如#toolbar
*/
toolbar?: string;
}
/**
* table 的templet回调参数格式
* tips:templet回调中可以使用 d.xx xx为任意参数
*/
interface TableColumnOptionForTemplet {
LAY_COL: TableColumnOptionForTempletCol;
LAY_INDEX: number;
LAY_TABLE_INDEX: number;
/**
* 该属性不存在,只是提示你:你可以用d.xxx 使用当前行中的任意数据属性。
*/
"你可以用 d.xx 来使用当前行的其他属性": never;
[index: string]: any;
}
/**
* table的templet回调中 d.LAY_COL的格式定义
*/
interface TableColumnOptionForTempletCol extends Required {
HAS_PARENT: boolean;
PARENT_COL_INDEX: number;
key: string;
parentKey: string;
}
/**
* 用于修改request参数名
*/
interface TableRequestRename {
/**
* 页码的参数名称,默认:page
*/
pageName?: string;
/**
* 每页数据量的参数名,默认:limit
*/
limitName?: string;
}
/**
* 用于修改Response参数名
*/
interface TableResponseRename {
/**
* 规定数据状态的字段名称,默认:code
*/
statusName?: string;
/**
* 规定成功的状态码,默认:0
*/
statusCode?: number;
/**
* 规定状态信息的字段名称,默认:msg
*/
msgName?: string;
/**
* 规定数据总数的字段名称,默认:count
*/
countName?: string;
/**
* 规定数据列表的字段名称,默认:data
*/
dataName?: string;
}
/* 服务端返回数据不固定
interface TableOriginResponse {
status: number;
message: string;
total: number;
data: any;
[propName: string]: any;
}
*/
/**
* 响应
*/
interface TableResponse {
code?: number;
msg?: string;
count?: number;
data?: any;
[propName: string]: any;
}
interface TableRendered {
config: TableOption;
reload(options: TableOption, deep?: boolean): void;
setColsWidth(): void;
resize(): void;
}
// https://www.layui.com/doc/modules/table.html#options
/**
* 基础参数
*/
interface TableOption {
/**
* 指定原始 table 容器的选择器或 DOM,方法渲染方式必填
*/
elem?: string | HTMLElement | JQuery;
/**
* 设置表头。值是一个二维数组。方法渲染方式必填 ,1维是表头集合,二维是列集合
* https://www.layui.com/doc/modules/table.html#cols
*/
cols?: TableColumnOption[][];
/**
* 接口地址
* 默认会自动传递两个参数:?page=1&limit=30(该参数可通过 request 自定义)
* page 代表当前页码、limit 代表每页数据量
*/
url?: string | null;
/**
* 开启表格头部工具栏区域,该参数支持四种类型值:
* toolbar: '#toolbarDemo' // 指向自定义工具栏模板选择器
* toolbar: 'xxx
' // 直接传入工具栏模板字符
* toolbar: true // 仅开启工具栏,不显示左侧模板
* toolbar: 'default' // 让工具栏左侧显示默认的内置模板
*/
toolbar?: string | HTMLElement | boolean;
/**
* 该参数可自由配置头部工具栏右侧的图标按钮 内置3个:
* filter: 显示筛选图标,
* exports: 显示导出图标,
* print: 显示打印图标
*/
defaultToolbar?: Array<
"filter" | "exports" | "print" | string | { title?: string; layEvent?: string; icon?: string }
>;
/**
* 设定容器宽度(超出容器会自动出现横向滚动条),默认宽度是跟随它的父元素铺满
*/
width?: number | string;
/**
* 设定容器高度,如:'full-100'
*/
height?: number | string;
/**
* 全局定义所有常规单元格的最小宽度(默认:60)
*/
cellMinWidth?: number;
/**
* 数据渲染完的回调。你可以借此做一些其它的操作
* @param [res] 1、如果是异步请求数据方式,res即为你接口返回的信息。
* 2、如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度
* @param [curr] 得到当前页码
* @param [count] 得到数据总量
*/
done?(res: any, curr: number, count: number): void;
/**
* 数据请求失败的回调,返回两个参数:错误对象、内容
* @param [e] 错误对象 ,是jqXHR对象(对XHR扩展),不同jquery版本其格式不同
* @param [msg] 内容 比如 "error"
*/
error?(e: any, msg: any): void;
/**
* 直接赋值数据。既适用于只展示一页数据,也非常适用于对一段已知数据进行多页展示。
*/
data?: any[];
/**
* 是否开启 xss 字符过滤(默认 false)
*/
escape?: boolean;
/**
* 是否开启合计行区域
*/
totalRow?: boolean;
/**
* 开启分页(默认:false),PageOptions时排除jump和elem
*/
page?: boolean | PageOptions;
/**
* 每页显示的条数(默认 10)。值需对应 limits 参数的选项。
* 注意:优先级低于 page 参数中的 limit 参数
*/
limit?: number;
/**
* 每页条数的选择项,默认:[10,20,30,40,50,60,70,80,90]。
* 注意:优先级低于 page 参数中的 limits 参数
*/
limits?: number[];
/**
* 是否显示加载条(默认 true)。若为 false,则在切换分页时,不会出现加载条。
* 该参数只适用于 url 参数开启的方式
*/
loading?: boolean;
/**
* 定义 table 的大标题(在文件导出等地方会用到)
*/
title?: string;
/**
* 自定义文本,如空数据时的异常提示等。
*/
text?: { none: string };
/**
* 默认 true,即直接由 table 组件在前端自动处理排序。
* 若为 false,则需自主排序,即由服务端返回排序好的数据
*/
autoSort?: boolean;
/**
* 初始排序状态。
* 用于在数据表格渲染完毕时,默认按某个字段排序。
*/
initSort?: { field: string; type?: "null" | "desc" | "asc" };
/**
* 设定容器唯一 id。id 是对表格的数据操作方法上是必要的传递条件,它是表格容器的索引
*/
id?: string;
/**
* 用于设定表格风格
*/
skin?: "line" | "row" | "nob";
/**
* 若不开启隔行背景,不设置该参数即可
*/
even?: boolean;
/**
* 用于设定表格尺寸,若使用默认尺寸不设置该属性即可
*/
size?: "sm" | "lg";
/**
* 异接口http请求类型,默认:get
*/
method?: string;
/**
* 接口的其它参数。如:where: {token: 'sasasas', id: 123}
*/
where?: object | null;
/**
* 发送到服务端的内容编码类型。
* 如果你要发送 json 内容,可以设置:contentType: 'application/json'
*/
contentType?: string;
/**
* 接口的请求头。如:headers: {token: 'sasasas'}
*/
headers?: object;
/**
* 数据格式解析的回调函数,用于将返回的任意数据格式解析成 table 组件规定的数据格式。
* @param [res] 服务端返回的数据
*/
parseData?(res: any): TableResponse;
/**
* 用于对分页请求的参数:page、limit重新设定名称,如果无需自定义请求参数,可不加该参数
* 通过parseData也可映射不同名称
*/
request?: TableRequestRename;
/**
* 可以借助 response 重新设定本地识别响应字段名,如果无需自定义数据响应名称,可不加该参数
* 当默认支持的名称和服务端不一致可以通过本方式或者parseData来对应
*/
response?: TableResponseRename;
}
// ------------以下TableOn 开头interface,在调用地方使用----------
/**
* 点击table中checkbox后回调参数的类型
*/
interface TableOnCheckbox {
checked: true;
data: object;
del(): void;
tr: JQuery;
type: string;
update(fields: object): void;
}
/**
* 点击table上边工具栏后回调参数的类型
*/
interface TableOnToolbar {
config: TableOption;
event: string;
}
/**
* 点击table中工具列后回调参数的类型
*/
interface TableOnTool {
data: object;
del(): void;
event: string;
tr: JQuery;
update(fields: object): void;
}
/**
* 点击table中行后回调参数的类型
*/
interface TableOnRow {
data: object;
del(): void;
tr: JQuery;
update(fields: object): void;
}
/**
* 点击table中单元格编辑后回调参数的类型
*/
interface TableOnEdit {
data: object;
del(): void;
field: string;
tr: JQuery;
update(fields: object): void;
value: string;
}
/**
* 点击table中列标题排序后回调参数的类型
*/
interface TableOnSort {
field: string;
type: string;
}
// https://www.layui.com/doc/element/table.html
// https://www.layui.com/doc/modules/table.html
/**
* 表格 - 页面元素
*/
interface Table {
cache: object;
/**
* 获取表格选中行(。id 即为 id 参数对应的值
* @param [id]
*/
checkStatus(id: string): { data: []; isAll: boolean };
/**
* 清除临时Key (即:LAY_CHECKED和LAY_TABLE_INDEX)
* @param [data]
*/
clearCacheKey(data: object): object;
config: {
checkName: "LAY_CHECKED"; // 是否选中状态的字段名
indexName: "LAY_TABLE_INDEX"; // 初始下标索引名,用于恢复排序
};
/**
* 遍历表头
* @param [id] table参数中的id,无id则数字
* @param [callback] 回调
* @param [cols]
*/
eachCols(id: string, callback?: (...arg: any) => any, cols?: TableColumnOption[][]): void;
/**
* 导出自定数据到文件
* @param [id] table的id用于找到title当做下载文件名
* @param [data] 手动指定数据
* @param [type] 默认csv
*/
// exportFile(id: string, data: any[], type?: string): void;
// exportFile(colName: any[], data: any[], type?: string): void;
/**
* 导出table中数据到文件
* @param [id] table选项中的id,指定id后则下载的文件名为table中title
* 若传入数组则是导出的文件的列标题colName
* @param [data] 传入数据则导出的是该数据,不传则用id从table找数据
* @param [type] 默认csv
*/
exportFile(id: string | any[], data?: any[] | null, type?: string): void;
/**
* 获取表格当前页的所有行数据
* @param [id] table参数中的id,无id则数字
*/
getData(id: string): any[];
index: number;
/**
* 初始化
* @param [filter] lay-filter设定的值
* @param [option] 各项基础参数
*/
init(filter: string, option?: TableOption): object;
/**
* 绑定事件
*
注意:obj类型是变化的不能在ts指定,参考如下替代方案,
*
import TableOnCheckbox = layui.TableOnCheckbox;
*
table.on('checkbox(test)', function(obj){
*
let rows:TableOnCheckbox=obj;
*
//然后,你就可以使用明确的属性了,两种方式编译后js中均为 let rows=obj; 输出不包含类型
*
});
*
类型对应: (就是 TableOn+事件类型,无需记忆)
*
checkbox -> TableOnCheckbox
*
toolbar -> TableOnToolbar
*
tool -> TableOnTool
*
row -> TableOnRow
*
edit- -> TableOnEdit
*
sort -> TableOnSort
* @param [event] mod(filter)
* @param [callback] obj参考上边注释
*/
on(event: string, callback: (this: any, obj: any) => any): void;
/**
* 表格重载
* @param [id] table的id,唯一实例标识
* @param [option] 基础参数
* @param [deep] true则深度复制
*/
reload(id: string, option?: TableOption, deep?: boolean): void;
/**
* 核心入口
* @param [option] 基础参数
*/
render(option: TableOption): TableRendered;
/**
* 重置表格尺寸结构
* @param [id] 如果指定表格唯一 id,则只执行该 id 对应的表格实例
*/
resize(id: string): void;
/**
* 设置table全局项
* @param [option] 基础参数
*/
set(option?: TableOption): Table;
}
interface TransferOption {
/**
* 指向容器选择器
*/
elem?: string | HTMLElement | JQuery;
/**
* 穿梭框上方标题
*/
title?: any[];
/**
* 数据源
*/
data?: any[];
/**
* 用于对数据源进行格式解析
* @param [data]
*/
parseData?(data: any): any;
/**
* 初始选中的数据(右侧列表)
*/
value?: any[];
/**
* 设定实例唯一索引,用于基础方法传参使用。
*/
id?: string;
/**
* 是否开启搜索
*/
showSearch?: boolean;
/**
* 定义左右穿梭框宽度
*/
width?: number;
/**
* 定义左右穿梭框高度
*/
height?: number;
/**
* 自定义文本,如空数据时的异常提示等。
*/
text?: {
/**
* 没有数据时的文案 '无数据'
*/
none?: string;
/**
* 搜索无匹配数据时的文案 '无匹配数据'
*/
searchNone?: string;
};
/**
* 左右数据穿梭时的回调
* @param [data] 数据
* @param [index] 索引
*/
onchange?(data: any, index: number): void;
}
interface TransferRendered {
config: { [index: string]: any };
/**
* 获得右侧数据
*/
getData(): any[];
/**
* 重载实例 bug to fix
* @param [id] 实例唯一索引
* @param [options] 各项基础参数
*/
reload(id: string, options: TransferOption): void;
/**
* 设定全局默认参数 bug to fix
*
* @param [options] 各项基础参数
*/
}
// https://www.layui.com/doc/modules/transfer.html
/**
* 穿梭框组件
*/
interface Transfer {
config: { [index: string]: any };
index: number;
/**
* 获得右侧数据
* @param [id] 实例唯一索引
*/
getData(id: string): any[];
/**
* 核心方法
* bug to fix
* @param [option] 各项基础参数
*/
render(option: TransferOption): TransferRendered;
/**
* 绑定事件,内部modName默认为transfer,绑定参考layui.onevent,触发参考layui.event
* @param [events]
* @param [callback]
*/
on(events: string, callback: (this: Layui, obj: any) => any): any;
/**
* 重载实例 bug to fix
* @param [id] 实例唯一索引
* @param [options] 各项基础参数
*/
reload(id: string, options: TransferOption): void;
/**
* 设定全局默认参数 bug to fix
*
* @param [options] 各项基础参数
*/
set(options: TransferOption): void;
}
// https://www.layui.com/doc/modules/tree.html#data
interface TreeData {
/**
* 节点标题
*/
title?: string;
/**
* 节点唯一索引值,用于对指定节点进行各类操作
*/
id?: string | number;
/**
* 节点字段名
*/
field?: string;
/**
* 子节点。支持设定选项同父节点
*/
children?: any[];
/**
* 点击节点弹出新窗口对应的 url。需开启 isJump 参数
*/
href?: string;
/**
* 节点是否初始展开,默认 false
*/
spread?: boolean;
/**
* 节点是否初始为选中状态(如果开启复选框的话),默认 false
*/
checked?: boolean;
/**
* 节点是否为禁用状态。默认 false
*/
disabled?: boolean;
}
interface TreeCheckData {
data: any;
checked: boolean;
elem: JQuery;
}
interface TreeClickData {
data: any;
elem: JQuery;
state: "open" | "close" | "normal";
}
interface TreeOperateData {
data: any;
elem: JQuery;
/**
* 除了add和update就是删除del
*/
type: "add" | "update" | "del" | string;
}
/**
* tree.reload()返回值
*/
type TreeReloaded = Pick;
// https://www.layui.com/doc/modules/tree.html#options
/**
* 基础参数
*/
interface TreeOption {
/**
* 指向容器选择器
*/
elem?: string | HTMLElement | JQuery;
/**
* 数据源
*/
data?: TreeData[];
/**
* 设定实例唯一索引,用于基础方法传参使用。
*/
id?: string;
/**
* 是否显示复选框
*/
showCheckbox?: boolean;
/**
* 是否开启节点的操作图标。默认 false。
*/
// 目前支持的操作图标有:add、update、del,如:edit: ['add', 'update', 'del']
edit?: boolean | string[];
/**
* 是否开启手风琴模式,默认 false
*/
accordion?: boolean;
/**
* 是否仅允许节点左侧图标控制展开收缩。默认 false(即点击节点本身也可控制)。
*/
// 若为 true,则只能通过节点左侧图标来展开收缩
onlyIconControl?: boolean;
/**
* 是否允许点击节点时弹出新窗口跳转。默认 false,
*/
// 若开启,需在节点数据中设定 link 参数(值为 url 格式)
isJump?: boolean;
/**
* 是否开启连接线。默认 true,若设为 false,则节点左侧出现三角图标。
*/
showLine?: boolean;
/**
* 自定义各类默认文本,目前支持以下设定:
*/
text?: {
/**
* 节点默认名称 '未命名'
*/
defaultNodeName?: string;
/**
* 数据为空时的提示文本 '无数据'
*/
none?: string;
};
/**
* 复选框被点击的回调
* @param [obj]
*/
oncheck?(obj: TreeCheckData): void;
/**
* 节点被点击的回调
* @param [obj]
*/
click?(obj: TreeClickData): void;
/**
* 操作节点的回调
* @param [obj]
*/
operate?(obj: TreeOperateData): void;
/**
* 节点过滤的回调
* @param [obj]
*/
onsearch?(obj: { elem: any[] }): void;
/**
* 未知
* @param [args]
*/
dragstart?(...args: any): any;
/**
* 未知
* @param [args]
*/
dragend?(...args: any): any;
}
// https://www.layui.com/doc/modules/tree.html
/**
* 树形组件
*/
interface Tree {
/**
* 全局参数项
*/
config: { [index: string]: any };
/**
* 返回选中的节点数据数组
* @param [id] render参数中的id ,注意data中需要有id属性才返回
*/
getChecked(id: string): TreeData[];
/**
* tree实例总数
*/
index: number;
/**
* 绑定事件,内部modName默认为tree,绑定参考layui.onevent,触发参考layui.event
* @param [events]
* @param [callback]
*/
on(events: string, callback: (this: Layui, obj: any) => any): any;
/**
* 实例重载,重载一个已经创建的组件实例,覆盖基础属性
* @param [id] render参数中的id,保证id存在否则出js错误
* @param [options] 基础参数
*/
reload(id: string, options: TreeOption): TreeReloaded;
/**
* 核心方法
* @param [option] 基础参数
*/
render(option: TreeOption): any;
/**
* 设置tree全局参数(预设基础参数值)
* @param [option]
*/
set(option?: TreeOption): Tree;
/**
* 设置节点勾选
* @param [id]
*/
/**
* 设置节点勾选
* @param [id] render参数中的id,指明是哪个tree实例
* @param [nodeId] 树节点数据中的id 参考render->data->id
*/
setChecked(id: string, nodeId: any): void;
}
interface UploadOption {
/**
* 指向容器选择器,如:elem: '#id'。也可以是DOM对象
*/
elem?: string | HTMLElement | JQuery;
/**
* 触发上传的元素
*/
readonly item?: HTMLElement;
/**
* 服务端上传接口,如:'/api/upload/'
*/
url?: string;
/**
* 请求上传接口的额外参数,支持属性为function动态值
*/
data?: object;
/**
* 接口的请求头。如:headers: {token: 'sasasas'}
*/
headers?: object;
/**
* 指定允许上传时校验的文件类型, 默认:images (即file,video,audio之外都可)
*/
// 可选值有:images(图片)、file(所有文件)、video(视频)、audio(音频)
accept?: "images" | "file" | "video" | "audio";
/**
* 规定打开文件选择框筛选出的文件类型,值为用逗号隔开。默认:images 如:
*/
// acceptMime: 'image/*'(只显示图片文件)
// acceptMime: 'image/jpg, image/png'(只显示 jpg 和 png 文件)
acceptMime?: string;
/**
* 允许上传的文件后缀。一般结合 accept 参数类设定。默认:jpg|png|gif|bmp|jpeg
*/
// 假设 accept 为 file 类型时,那么你设置 exts: 'zip|rar|7z' 即代表只允许上传压缩格式的文件。
// 如果 accept 未设定,那么限制的就是图片的文件格式
exts?: string;
/**
* 是否选完文件后自动上传。 默认:true
*/
// 如果设定 false,那么需要设置 bindAction 参数来指向一个其它按钮提交上传
auto?: boolean;
/**
* 指向一个按钮触发上传,一般配合 auto: false 来使用。值为选择器或DOM对象,如:bindAction: '#btn'
*/
bindAction?: string | HTMLElement;
/**
* 设定文件域的字段名,默认:file
*/
field?: string;
/**
* 设置文件最大可允许上传的大小,单位 KB。不支持ie8/9 ,默认:0(即无限制)
*/
size?: number;
/**
* 是否允许多文件上传。设置 true即可开启。不支持ie8/9 默认:false
*/
multiple?: boolean;
/**
* 设置同时可上传的文件数量,一般配合 multiple 参数出现。 默认:0(即无限制)
*/
number?: number;
/**
* 更新文件域相关属性
*/
name?: string;
/**
* 是否接受拖拽的文件上传,设置 false 可禁用。不支持ie8/9 默认true
*/
drag?: boolean;
/**
* 请求上传的 http 类型
*/
method?: string;
/**
* 选择文件后的回调函数
* @param [obj] 回调参数(工具对象)
*/
choose?(this: UploadOptionThis, obj: UploadCallbackArg): void;
/**
* 文件提交上传前的回调,返回false则停止上传 实例:before:function(this,obj){}
* @param [obj] 回调参数(工具对象)
*/
before?(this: UploadOptionThis, obj: UploadCallbackArg): any;
/**
* 上传后的回调
* @param [res] 服务端response json
* @param [index] 当前文件索引 (选择文件时自动生成的:new Date().getTime()+'-'+i)
* @param [upload] 上传函数
*/
done?(this: UploadOptionThis, res: any, index: string, upload: (files?: Blob[]) => void): void;
/**
* 执行上传请求出现异常的回调(一般为网络异常、URL 404等)。
* 返回两个参数,分别为:index(当前文件的索引)、upload(重新上传的方法
* @param [index] 当前文件索引 (选择文件时自动生成的:new Date().getTime()+'-'+i)
* @param [upload] 上传函数
*/
error?(this: UploadOptionThis, index: string, upload: (files?: Blob[]) => void): void;
/**
* 当文件全部被提交后,才触发
* @param [obj] 回调参数
*/
allDone?(this: UploadOptionThis, obj: UploadAllDoneArg): void;
/**
* 进度回调
* @param [percent] 数字进度
* @param [elem] render参数中的elem(即点击元素dom)
* @param [event] 事件
* @param [index] 当前文件索引 (选择文件时自动生成的:new Date().getTime()+'-'+i)
*/
progress?(
this: UploadOptionThis,
percent: number,
elem: HTMLElement,
event: ProgressEvent,
index: string,
): void;
}
type UploadOptionThis = Required;
interface UploadAllDoneArg {
/**
* 得到总文件数
*/
total: number;
/**
* 请求成功的文件数
*/
successful: number;
/**
* 请求失败的文件数
*/
aborted: number;
}
interface UploadCallbackArg {
/**
* 预览
* @param [callback] index索引,file文件,result比如图片base64编码
*/
preview(callback: (index: string, file: File, result: any) => void): void;
/**
* 上传单个文件
* 对上传失败的单个文件重新上传,一般在某个事件中使用
* @param [index] 索引 (选择文件时自动生成的:new Date().getTime()+'-'+i)
* @param [file] 文件
*/
upload(index: string, file: Blob): void;
/**
* 追加文件到队列, 比如 choose回调中将每次选择的文件追加到文件队列
*/
pushFile(): { [index: string]: File };
/**
* 重置文件和文件名
* @param [index] 被重置的文件索引 (选择文件时自动生成的:new Date().getTime()+'-'+i)
* @param [file] 新的文件
* @param [filename] 新的名字
*/
resetFile(index: string, file: Blob, filename: any): void;
}
interface UploadRendered {
/**
* 参数信息
*/
config: { [index: string]: any };
/**
* 重载该实例,支持重载全部基础参数
* @param [options] 基础参数
*/
reload(options?: UploadOption): void;
/**
* 重新上传的方法,一般在某个事件中使用
* @param [files] 需要上传的文件数组
*/
upload(files?: Blob[]): void;
}
// https://www.layui.com/doc/modules/upload.html
/**
* 图片/文件上传
*/
interface Upload {
/**
* 全局参数项
*/
config: { [index: string]: any };
/**
* 绑定事件,内部modName默认为 upload,绑定参考layui.onevent,触发参考layui.event
* @param events
* @param callback
*/
on(events: string, callback: (this: Layui, obj: any) => any): any;
/**
* 核心方法
* @param [option] 基础参数
*/
render(option: UploadOption): UploadRendered;
/**
* 设置upload全局参数(预设基础参数值)
* @param [option] 参数
*/
set(option?: UploadOption): Upload;
}
interface UtilBarOption {
/**
* 默认false。如果值为true,则显示第一个bar,带有一个默认图标。
*/
// 如果值为图标字符,则显示第一个bar,并覆盖默认图标
bar1?: boolean | string;
/**
* 默认false。如果值为true,则显示第二个bar,带有一个默认图标。
*/
// 如果值为图标字符,则显示第二个bar,并覆盖默认图标
bar2?: boolean | string;
/**
* 自定义区块背景色
*/
bgcolor?: string;
/**
* 用于控制出现TOP按钮的滚动条高度临界值。默认:200
*/
showHeight?: number;
/**
* 你可以通过重置bar的位置,比如 css: {right: 100, bottom: 100}
*/
css?: { [key: string]: string | number | boolean };
/**
* 点击bar的回调,函数返回一个type参数,用于区分bar类型。
* 支持的类型有:bar1、bar2、top
* @param [type] bar1、bar2、top
*/
click?(type: string | "bar1" | "bar2" | "top"): void;
}
// https://www.layui.com/doc/modules/util.html
/**
* 工具集
*/
interface Util {
/**
* 固定块
* @param [option] 参数
*/
fixbar(option?: UtilBarOption): void;
/**
* 倒计时
* @param [endTime] 结束时间戳或Date对象,如:4073558400000,或:new Date(2099,1,1).
* @param [serverTime] 当前服务器时间戳或Date对象
* @param [callback] 回调函数。如果倒计时尚在运行,则每一秒都会执行一次。并且返回三个参数:
* date(包含天/时/分/秒的对象)、
* serverTime(当前服务器时间戳或Date对象),
* timer(计时器返回的ID值,用于clearTimeout)
*/
countdown(
endTime?: number | Date,
serverTime?: number | Date,
callback?: (date: number[], serverTime_: typeof serverTime, timer: number) => void,
): void;
/**
* 某个时间在当前时间的多久前
* @param [time] 当前时间之前的时间戳或日期对象
* @param [onlyDate] 在超过30天后,true只返回日期字符,false不返回时分秒
*/
timeAgo(time?: number | Date, onlyDate?: boolean): string;
/**
* 转化时间戳或日期对象为日期格式字符
* @param [time] 日期对象,也可以是毫秒数 ,默认:当前
* @param [format] 默认:yyyy-MM-dd HH:mm:ss
*/
toDateString(time?: number | Date, format?: string): any;
/**
* 数字前置补零
* @param [num] 数字
* @param [length] 补0后的长度
*/
digit(num?: any, length?: number): string;
/**
* 转义 xss 字符
* @param str
*/
escape(str?: any): string;
/**
* 批量处理事件
* @param [attr] 绑定需要监听事件的元素属性
* @param [obj] 事件回调链
*/
event(attr: string, obj: { [index: string]: (othis: JQuery) => any }): any;
}
/**
* 缓存的所有数据
*/
interface CacheData {
base: string;
builtin: Modules;
/*
// 仅包含layui.use指定的模块或者导入全部模块
,callback:{
carousel: Function
,code: Function
,colorpicker: Function
,dropdown: Function
,element:Function
,flow: Function
,form: Function
,jquery: Function
,lay: Function
,laydate: Function
,layedit: Function
,layer: Function
,laypage: Function
,laytpl: Function
,"layui.all": Function
,rate: Function
,slider: Function
,table: Function
,transfer:Function
,tree: Function
,upload: Function
,util: Function
[index:string]:Function
}*/
dir: string;
/**
* 记录模块自定义事件
*/
event: { [index: string]: { [index: string]: Array<(...arg: any) => any> } };
host: string;
/**
* 记录模块物理路径
*/
modules: { [index: string]: string };
/**
* 记录模块加载状态
*/
status: {
carousel: boolean;
code: boolean;
colorpicker: boolean;
dropdown: boolean;
element: boolean;
flow: boolean;
form: boolean;
jquery: boolean;
lay: boolean;
laydate: boolean;
layedit: boolean;
layer: boolean;
laypage: boolean;
laytpl: boolean;
"layui.all": boolean;
rate: boolean;
slider: boolean;
table: boolean;
transfer: boolean;
tree: boolean;
upload: boolean;
util: boolean;
[index: string]: boolean;
};
/**
* 符合规范的模块请求最长等待秒数
*/
timeout: number;
version: string;
}
/**
* 内置模块名和外置名称映射
*/
type Modules = { [T in keyof LayuiModuleMap]: string };
interface LayuiModuleMap {
carousel: Carousel;
colorpicker: ColorPicker;
dropdown: DropDown;
element: Element;
flow: Flow;
form: Form;
jquery: JQueryStatic;
lay: Lay;
laydate: Laydate;
layedit: Layedit;
layer: Layer;
laypage: Laypage;
laytpl: Laytpl;
"layui.all": string;
rate: Rate;
slider: Slider;
table: Table;
transfer: Transfer;
tree: Tree;
upload: Upload;
util: Util;
}
}
declare const layui: Layui;