import * as lCore from './core'; import * as lDom from './dom'; import * as lControl from './control'; /** * --- 初始化系统级 ID,仅能设置一次 --- * @param id 系统级 ID */ export declare function initSysId(id: string): void; /** --- Panel 与 Form 共用的抽象类 --- */ declare abstract class AbstractCommon { /** --- 当前文件在包内的路径 --- */ get filename(): string; /** --- 当前控件的名字 --- */ get controlName(): string; set controlName(v: string); /** --- 当前的任务 ID --- */ get taskId(): string; /** --- 当前的窗体 ID --- */ get formId(): string; set formFocus(b: boolean); /** --- 当前文件的包内路径不以 / 结尾 --- */ get path(): string; /** --- 样式独占前缀 --- */ get prep(): string; /** --- 当前的语言 --- */ get locale(): string; /** * --- 获取语言内容 --- */ get l(): (key: string, data?: string[], origin?: boolean) => string; /** --- layout 中 :class 的转义 --- */ get classPrepend(): (cla: any) => string; /** * --- 监视变动 --- * @param name 监视的属性 * @param cb 回调 * @param opt 参数 */ watch(name: TK | (() => TR), cb: (val: T[TK] & TR, old: T[TK] & TR) => void | Promise, opt?: { 'immediate'?: boolean; 'deep'?: boolean; }): () => void; /** * --- 获取 refs 情况 --- */ get refs(): Record>; /** --- 获取当前的 HTML DOM --- */ get element(): HTMLElement; /** * --- 等待渲染 --- */ get nextTick(): () => Promise; /** * --- 判断当前事件可否执行 --- * @param e 鼠标、触摸、键盘事件 */ allowEvent(e: PointerEvent | KeyboardEvent): boolean; /** * --- 触发系统方法 --- * @param name 方法名 * @param param1 参数1 * @param param2 参数2 */ trigger(name: lCore.TGlobalEvent, param1?: boolean | Error | string, param2?: string): Promise; /** * --- 给一个窗体发送一个对象,不会知道成功与失败状态 --- * @param fid formId 要接收对象的 form id * @param obj 要发送的对象 */ send(fid: string, obj: Record): void; onBeforeCreate(): void | Promise; onCreated(): void | Promise; onBeforeMount(): void | Promise; onBeforeUpdate(): void | Promise; onUpdated(): void | Promise; onBeforeUnmount(): void | Promise; onUnmounted(): void | Promise; } /** --- Panel 控件抽象类 --- */ export declare abstract class AbstractPanel extends AbstractCommon { /** --- 当前的 panel ID --- */ get panelId(): string; /** --- 当前 panel 所在窗体的窗体对象,系统会在创建时重写本函数 --- */ get rootForm(): AbstractForm & Record; /** --- 当前 panel 所在的 panel control 对象,系统会在创建时重写本函数 --- */ get rootPanel(): lControl.AbstractControl & Record; /** --- 获取母窗体的 formHash --- */ get formHash(): string; /** --- 设置母窗体的 formHash --- */ set formHash(fh: string); /** --- 获取 form 的 formhash with data 值 --- */ get formHashData(): Record; set formHashData(v: Record); /** --- 将母窗体的 form hash 回退 --- */ formHashBack(): Promise; /** --- 发送一段数据到自己这个 panel 控件,本质上也是调用的 panel 控件的 send 方法,主要用来实现发送给跳转后的 panel --- */ sendToRootPanel(data: Record): void; /** --- 母窗体进入 form hash 为源的步进条 --- */ enterStep(list: Array<{ /** --- 步骤 hash,第一个必须为当前 hash --- */ 'value': string; 'label'?: string; 'icon'?: string; 'desc'?: string; }>): Promise; /** --- 目窗体完成当前步骤 --- */ doneStep(): Promise; /** --- 当前的 nav(若有)传递过来的 qs --- */ qs: Record; /** --- 确定不再使用 qs 时可调用此方法清空,这样再次通过相同 qs 进入本 panel 依然会响应 qschange 事件 --- */ clearQs(): void; /** --- 当前窗体是否是焦点 --- */ get formFocus(): boolean; onShow(e: IAbstractPanelShowEvent): void | Promise; onShowed(): void | Promise; onHide(): void | Promise; onMounted(): void | Promise; /** --- 接收 send 传递过来的 data 数据(是 panel 控件的 send,不是 form 的 send) --- */ onReceive(data: Record): void | Promise; /** --- qs 变动时调用,如果只是用来做 qs 数据处理,建议用此方法 --- */ onQsChange(): void | Promise; /** --- 无论是 show 还是 qschange 都会触发,优先触发 show 或 qschange 事件本身,之后触发这个 --- */ onQsChangeShow(e: IAbstractPanelQsChangeShowEvent): void | Promise; } /** --- 窗体的抽象类 --- */ export declare abstract class AbstractForm extends AbstractCommon { /** --- 当前是否完全创建完毕 --- */ isReady: boolean; /** --- 是否是 native 下无边框的第一个窗体 --- */ isNativeNoFrameFirst: boolean; /** --- 当前的窗体创建的位数 --- */ get findex(): number; /** --- 获取 form 的 hash 值,不是浏览器的 hash --- */ get formHash(): string; set formHash(v: string); /** --- 获取 form 的 formhash with data 值 --- */ get formHashData(): Record; set formHashData(v: Record); /** --- 是否是置顶 --- */ get topMost(): boolean; set topMost(v: boolean); /** --- 是否是置底 --- */ get bottomMost(): boolean; set bottomMost(v: boolean); /** * --- 是否在本窗体上显示遮罩层 --- */ get isMask(): boolean; /** --- 当前窗体是否是焦点 --- */ get formFocus(): boolean; /** --- 当前窗体是否显示在任务栏 --- */ get showInSystemTask(): boolean; set showInSystemTask(v: boolean); /** --- 将在 form 完全装载完后执行,如果已经装载完则立即执行 --- */ ready(cb: () => void | Promise): void; /** --- form hash 回退 --- */ formHashBack(): Promise; /** --- 发送一段数据到 panel 控件,本质上也是调用的 panel 控件的 send 方法 --- */ sendToPanel(panel: lControl.AbstractControl & Record, data: Record): void; /** --- 覆盖整个窗体的 loading(实际值) --- */ private _loading; /** --- 覆盖整个窗体的 loading --- */ get loading(): boolean; set loading(val: boolean); /** --- 是否阻止任何人修改 loading --- */ lockLoading: boolean; private _inStep; /** --- 当前是否在 step 环节中 --- */ get inStep(): boolean; /** --- 序列化后的 step value 值 --- */ private readonly _stepValues; /** --- 进入 form hash 为源的步进条 --- */ enterStep(list: Array<{ /** --- 步骤 hash,第一个必须为当前 hash --- */ 'value': string; 'label'?: string; 'icon'?: string; 'desc'?: string; }>): Promise; /** --- 更新步进条,用于动态改变某个项的 hash 值时使用 --- */ updateStep(index: number, value: string): boolean; /** --- 完成当前步骤条 --- */ doneStep(): Promise; /** --- 当前是不是初次显示 --- */ private _firstShow; /** * --- 显示窗体 --- */ show(): Promise; /** * --- 显示独占的窗体 --- */ showDialog(): Promise; /** * --- 让窗体隐藏 --- */ hide(): void; /** * --- 关闭当前窗体 --- */ close(): void; /** * --- dialog mask 窗体返回值,在 close 之后会进行传导 --- */ dialogResult: string; onMounted(data: Record): void | Promise; /** --- 接收 send 传递过来的 data 数据 --- */ onReceive(data: Record): void | Promise; /** --- 屏幕大小改变事件 --- */ onScreenResize(): void | Promise; /** --- 系统配置变更事件 --- */ onConfigChanged(n: keyof lCore.IConfig, v: lCore.IConfig[T]): void; /** --- 窗体创建事件 --- */ onFormCreated(taskId: string, formId: string, title: string, icon: string, showInSystemTask: boolean): void | Promise; /** --- 窗体销毁事件 --- */ onFormRemoved(taskId: string, formId: string, title: string, icon: string): void | Promise; /** --- 窗体标题改变事件 --- */ onFormTitleChanged(taskId: string, formId: string, title: string): void | Promise; /** --- 窗体图标改变事件 --- */ onFormIconChanged(taskId: string, formId: string, icon: string): void | Promise; /** --- 窗体最小化状态改变事件 --- */ onFormStateMinChanged(taskId: string, formId: string, state: boolean): void | Promise; /** --- 窗体最大化状态改变事件 --- */ onFormStateMaxChanged(taskId: string, formId: string, state: boolean): void | Promise; /** --- 窗体显示状态改变事件 --- */ onFormShowChanged(taskId: string, formId: string, state: boolean): void | Promise; /** --- 窗体获得焦点事件 --- */ onFormFocused(taskId: string, formId: string): void | Promise; /** --- 窗体丢失焦点事件 --- */ onFormBlurred(taskId: string, formId: string): void | Promise; /** --- 窗体闪烁事件 --- */ onFormFlash(taskId: string, formId: string): void | Promise; /** --- 窗体是否显示在任务栏属性改变事件 --- */ onFormShowInSystemTaskChange(taskId: string, formId: string, value: boolean): void | Promise; /** --- 窗体的 formHash 改变事件 --- */ onFormHashChange(taskId: string, formId: string, value: string, data: Record): void | Promise; /** --- 任务开始事件 --- */ onTaskStarted(taskId: string): void | Promise; /** --- 任务结束事件 --- */ onTaskEnded(taskId: string): void | Promise; /** --- launcher 文件夹名称修改事件 --- */ onLauncherFolderNameChanged(id: string, name: string): void | Promise; /** --- location hash 改变事件 --- */ onHashChanged(hash: string): void | Promise; /** --- 键盘按下事件 --- */ onKeydown(e: KeyboardEvent): void | Promise; /** --- 键盘弹起事件 --- */ onKeyup(e: KeyboardEvent): void | Promise; } export declare let simpleSystemTaskRoot: lCore.IVue; export declare let launcherRoot: lCore.IVue; export declare const elements: { 'wrap': HTMLDivElement; 'list': HTMLDivElement; 'popList': HTMLDivElement; 'circular': HTMLDivElement; 'rectangle': HTMLDivElement; 'keyboard': HTMLDivElement; 'notify': HTMLElement; 'alert': HTMLElement; 'simpletask': HTMLDivElement; 'launcher': HTMLDivElement; 'confirm': HTMLDivElement; 'init': () => void; }; /** --- 显示系统级询问框 --- */ export declare function superConfirm(current: string, html: string): Promise; /** --- 显示系统级虚拟键盘 --- */ export declare function showKeyboard(): void; /** --- 隐藏系统级虚拟键盘 --- */ export declare function hideKeyboard(): void; /** * --- 最小化某个窗体 --- * @param formId 窗体 id */ export declare function min(formId: string): boolean; /** * --- 最大化某个窗体 --- * @param formId 窗体 id */ export declare function max(formId: string): boolean; /** * --- 关闭一个窗体 --- * @param formId 窗体 id */ export declare function close(formId: string): boolean; /** * --- 绑定窗体拖动大小事件,在 pointerdown 中绑定 --- * @param e 事件源 * @param border 调整大小的方位 */ export declare function bindResize(e: PointerEvent, border: lDom.TDomBorder): void; /** * --- 绑定窗体拖动事件,在 pointerdown 中绑定 --- * @param e 事件源 */ export declare function bindDrag(e: PointerEvent): void; /** * --- 重置所有已经最大化的窗体大小和位置 --- */ export declare function refreshMaxPosition(): void; /** * --- 根据窗体 id 获取 task id --- * @param formId 窗体 id */ export declare function getTaskId(formId: string): string; /** * --- 获取窗体信息 --- * @param formId 窗体 id */ export declare function get(formId: string): IFormInfo | null; /** * --- 给一个窗体发送一个对象,不会知道成功与失败状态,用 this.send 替代 --- * @param formId 要接收对象的 form id * @param obj 要发送的对象 */ export declare function send(formId: string, obj: Record): void; /** * --- 获取 form list 的简略情况 --- * @param taskId 任务 ID */ export declare function getList(taskId: lCore.TCurrent): Record; /** * --- 获取当前有焦点的窗体 form id --- */ export declare function getFocus(): string | null; /** * --- 当前活跃中的 panelId 列表 --- */ export declare const activePanels: Record; /** * --- 获取窗体当前活跃中的 panelId 列表 --- * @param formId 要获取的窗体 id */ export declare function getActivePanel(formId: string): string[]; /** * --- 移除 form 中正在活跃中的 panel id (panel 本身被置于隐藏时) * @param current 当前任务 id * @param formId 所属 form id * @param panelId panel id */ export declare function removeActivePanel(current: lCore.TCurrent, formId: string, panelId: string): boolean; /** * --- 将 form 中某个 panel 设置为活动的 --- * @param current 当前任务 id * @param formId 所属 form id * @param panelId panel id */ export declare function setActivePanel(current: lCore.TCurrent, formId: string, panelId: string): boolean; /** * --- 修改窗体 hash --- * @param formId 要修改的窗体 ID * @param hash 修改的值,不含 # */ export declare function hash(formId: string, hash: string): boolean; /** * --- 获取窗体的 hash --- */ export declare function getHash(formId: string): string; /** * --- 将窗体的 hash 退回上一个 --- */ export declare function hashBack(formId: string): Promise; /** * --- 改变 form 的焦点 class --- * @param formId 变更后的 form id */ export declare function changeFocus(formId?: string): Promise; /** * --- 获取当前 z-index 值最大的 form id(除了 top 模式的窗体和最小化的窗体) --- * @param current 当前任务 id * @param out 排除选项 */ export declare function getMaxZIndexID(current: lCore.TCurrent, out?: { 'taskIds'?: string[]; 'formIds'?: string[]; }): Promise; /** * --- 让最大的 z index 窗体获取焦点(不含 top 和最小化的) --- */ export declare function changeFocusMaxZIndex(): Promise; /** * --- 根据 border 方向 获取理论窗体大小 --- * @param border 显示的位置代号 */ export declare function getRectByBorder(border: lDom.TDomBorderCustom): { 'width': number; 'height': number; 'left': number; 'top': number; }; /** * --- 显示从小到大的圆圈动画特效对象 --- * @param x X 坐标 * @param y Y 坐标 */ export declare function showCircular(x: number, y: number): void; /** * --- 移动矩形到新位置 --- * @param border 显示的位置代号 */ export declare function moveRectangle(border: lDom.TDomBorderCustom): void; /** * --- 显示从小到大的矩形动画特效对象 --- * @param x 起始位置 * @param y 起始位置 * @param border 最大时位置代号 */ export declare function showRectangle(x: number, y: number, border: lDom.TDomBorderCustom): void; /** * --- 结束时请隐藏矩形 --- */ export declare function hideRectangle(): void; /** * --- 从下方弹出 alert --- * @param content 内容 * @param type 样式,可留空 */ export declare function alert(content: string, type?: 'default' | 'primary' | 'info' | 'warning' | 'danger' | 'cg'): number; /** * --- 弹出右下角信息框 --- * @param opt timeout 默认 5 秒,最大 10 分钟 * @returns notify id,一定大于 0 */ export declare function notify(opt: INotifyOptions): number; /** * --- 修改 notify 的进度条进度 --- * @param notifyId notify id * @param per 进度,0 - 100 或 0% - 100% (0 - 1) */ export declare function notifyProgress(notifyId: number, per: number): void; /** * --- 修改 notify 的提示信息 --- * @param notifyId notify id * @param opt 参数 */ export declare function notifyContent(notifyId: number, opt: INotifyContentOptions): void; /** * --- 隐藏 notify --- * @param notifyId 要隐藏的 notify id */ export declare function hideNotify(notifyId: number): void; /** * --- 将标签追加到 pop 层 --- * @param el 要追加的标签 */ export declare function appendToPop(el: HTMLElement): void; /** * --- 将标签从 pop 层移除 --- * @param el 要移除的标签 */ export declare function removeFromPop(el: HTMLElement): void; /** * --- 获取 pop 显示出来的坐标并报系统全局记录 --- * @param el 响应的元素 * @param pop 要显示 pop 元素 * @param direction 要显示方向(以 $el 为准的 h 水平 v 垂直 t 垂直水平居中)或坐标 * @param opt width / height 显示的 pop 定义自定义宽/高度,可省略;null,true 代表为空也会显示,默认为 false; autoPosition, 因 pop 内部内容变动导致的自动更新 pop 位置,默认 false,autoScroll,因原元素位置变更导致 pop 位置变更,默认 false,flow: 是否加入 pop 流,默认加入,不加入的话将不会自动隐藏 */ export declare function showPop(el: HTMLElement | lCore.IVue, pop: HTMLElement | lCore.IVue | undefined, direction: 'h' | 'v' | 't' | PointerEvent | { x: number; y: number; }, opt?: { 'size'?: { width?: number; height?: number; }; 'null'?: boolean; 'autoPosition'?: boolean; 'autoScroll'?: boolean; 'flow'?: boolean; /** --- 展示托管方式 --- */ 'way'?: 'normal' | 'click' | 'hover'; }): void; /** * --- 隐藏正在显示中的所有 pop,或指定 pop/el --- */ export declare function hidePop(pop?: HTMLElement | lCore.IVue): void; /** --- 检测 pop 是不是刚刚显示的 --- */ export declare function isJustPop(el: HTMLElement | number): boolean; /** * --- 点下 pointerdown 屏幕任意一位置时根据点击处处理隐藏 pop 和焦点丢失事件,鼠标和 touch 只会响应一个 --- * @param e 事件对象 */ export declare function doFocusAndPopEvent(e: PointerEvent): Promise; /** * --- 移除一个 form(关闭窗口) --- * @param formId 要移除的 form id */ export declare function remove(formId: string): boolean; /** * --- 移除 panel 挂载,通常发生在 panel 控件的 onBeforeUnmount 中 --- * @param id panel id * @param vapp panel 的 vapp 对象 --- * @param el panel 控件 */ export declare function removePanel(id: string, vapp: lCore.IVApp, el: HTMLElement): boolean; /** * --- 创建 panel 对象,一般情况下无需使用 --- * @param rootPanel 根 panel 控件 * @param cls 路径字符串或 AbstractPanel 类 * @param opt 选项 */ export declare function createPanel(rootPanel: lControl.AbstractControl, cls: string | (new () => T), opt?: { /** --- 布局内容 --- */ 'layout'?: string; /** --- 样式内容 --- */ 'style'?: string; /** --- cls 为 string 时,path 参数才有效,为基准路径,如果不以 / 结尾则以最后一个 / 字符为准 --- */ 'path'?: string; }): Promise<{ 'id': string; 'vapp': lCore.IVApp; 'vroot': T; }>; /** * --- 创建一个窗体 --- * @param current 当前任务 ID * @param cls 路径字符串或 AbstractForm 类 * @param data 要传递的对象 * @param opt 其他替换选项 */ export declare function create(current: lCore.TCurrent, cls: string | (new () => T), data?: Record, opt?: { 'layout'?: string; 'style'?: string; /** --- cls 为 string 时,path 参数才有效,为基准路径,如果不以 / 结尾则以最后一个 / 字符为准 --- */ 'path'?: string; }): Promise; /** * --- 显示一个 dialog --- * @param current 当前窗体 id * @param opt 选项或者一段文字 */ export declare function dialog(current: lCore.TCurrent, opt: string | IFormDialogOptions): Promise; /** * --- 显示一个 confirm --- * @param current 当前任务 id * @param opt 选项或者一段文字 */ export declare function confirm(current: lCore.TCurrent, opt: string | IFormConfirmOptions): Promise; /** * --- 显示一个输入框 dialog --- * @param current 当前任务 id * @param opt 选项或者提示文字 */ export declare function prompt(current: lCore.TCurrent, opt: string | IFormPromptOptions): Promise; /** * --- 让窗体闪烁 --- * @param current 所属的 taskId * @param formId 要闪烁的窗体 id,必填 */ export declare function flash(current: lCore.TCurrent, formId: string): Promise; /** * --- 显示 launcher 界面 --- */ export declare function showLauncher(): void; /** * --- 隐藏 launcher 界面 --- */ export declare function hideLauncher(): void; export declare function init(): void; /** --- AbstractPanel 显示事件 --- */ export interface IAbstractPanelShowEvent { 'detail': { 'data': Record; /** --- 是否是 nav 模式 --- */ 'nav': boolean; /** --- 仅 nav 联动时有效,代表是前进还是回退 --- */ 'action': 'forword' | 'back'; /** --- 仅 nav 联动时有效,代表上一个的 formHash 的值 --- */ 'previous': string; /** --- 仅 nav 联动时有效,代表本次 show 的时候 qs 是否发生了变化 --- */ 'qsChange': boolean; }; } /** --- AbstractPanel qsChange 显示事件 --- */ export interface IAbstractPanelQsChangeShowEvent { 'detail': { 'data': Record; /** --- 是否是 nav 模式 --- */ 'nav': boolean; /** --- 仅 nav 联动时有效,代表是前进还是回退 --- */ 'action': 'forword' | 'back'; /** --- 仅 nav 联动时有效,代表上一个的 formHash 的值 --- */ 'previous': string; /** --- 仅 nav 联动时有效,代表本次 qs 是否发生了变化 --- */ 'qsChange': boolean; }; } /** --- 运行时 task 中的 form 对象 --- */ export interface IForm { 'id': string; 'vapp': lCore.IVApp; 'vroot': lCore.IVue; /** --- 是否已经执行过了关闭窗体方法,此处加判断为了防止重复执行 close 导致的 bug --- */ 'closed': boolean; } /** --- Form 的简略情况,通常在 list 当中 --- */ export interface IFormInfo { 'taskId': string; 'title': string; 'icon': string; 'stateMax': boolean; 'stateMin': boolean; 'show': boolean; 'focus': boolean; 'showInSystemTask': boolean; } /** --- 移动 drag 到新位置函数的选项 --- */ export interface IMoveDragOptions { 'top'?: number; 'left'?: number; 'width'?: number; 'height'?: number; 'icon'?: boolean; } /** --- 弹出 notify 信息框的选项 --- */ export interface INotifyOptions { 'title'?: string; /** --- 正文 --- */ 'content'?: string; /** --- 浅色描述 --- */ 'note'?: string; 'icon'?: string | null; 'timeout'?: number; 'type'?: 'primary' | 'info' | 'warning' | 'danger' | 'progress'; 'progress'?: boolean; } /** --- notify 信息框的修改选项 --- */ export interface INotifyContentOptions { 'title'?: string; 'content'?: string; 'note'?: string; /** --- 可顺便修改进度 --- */ 'progress'?: number; /** --- 设置后将在 x 毫秒后隐藏,这不会大于创建时的设置的总时长 --- */ 'timeout'?: number; } /** --- Dialog 选项 --- */ export interface IFormDialogOptions { 'title'?: string; 'content': string; 'buttons'?: string[]; 'autoDialogResult'?: boolean; 'direction'?: 'h' | 'v'; 'gutter'?: number | string; /** --- 传值,需要用 data.x 读取 --- */ 'data'?: Record; /** --- 传值,需要用 methods.x 读取 --- */ 'methods'?: Record any>; /** --- 样式表 --- */ 'style'?: string; /** --- 路径基,以 / 结束或文件路径则以文件的基路径为准,可留空 --- */ 'path'?: string; /** * --- 点击按钮触发事件 --- * @param e 数据事件 * @param button 按钮的文本 */ 'select'?: (this: AbstractForm & { 'data': Record; 'methods': Record any>; }, e: IFormDialogSelectEvent, button: string) => void; } export interface IFormDialogSelectEvent extends lControl.ICustomEvent { 'detail': { 'button': string; }; } /** --- Confirm 选项 --- */ export interface IFormConfirmOptions { 'title'?: string; 'content': string; 'cancel'?: boolean; } /** --- Prompt 选项 --- */ export interface IFormPromptOptions { /** --- 标题 --- */ 'title'?: string; /** --- 内容说明 --- */ 'content': string; /** --- 文本默认值 --- */ 'text'?: string; /** --- 是否显示取消按钮,默认显示 --- */ 'cancel'?: boolean; /** * --- 点击按钮触发事件 --- * @param e 数据事件 * @param button true 代表确定,false 代表取消 */ 'select'?: (this: AbstractForm & { 'data': Record; }, e: IFormPromptSelectEvent, button: boolean) => void; } export interface IFormPromptSelectEvent extends lControl.ICustomEvent { 'detail': { /** --- true 代表确定,false 代表取消 --- */ 'button': boolean; 'value': string; }; } export {};